Arrays und Ihre Verwendungsmöglichkeiten?!? [ERLEDIGT]
Moderator: Moderatoren
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Arrays und Ihre Verwendungsmöglichkeiten?!? [ERLEDIGT]
Servus,
Ich möchte eine Liste mit verschiedenen Angaben als Array aufbauen.
z.B.
Artikel,Bestand,Preis,verkauft, usw.
möchte in verschiedenen Spalten eine Summierung, z.B. bei Preis.
Wenn die Liste fertig ist, möchte ich die Daten drucken und eventuell in einer Datenbank speichern.
Erst mal die Frage an alle, ergibt es einen Sinn, dies mit einem Array zu machen???
Das Array selbst ist kein Problem, auch das anfügen nicht.
Ich habe jetzt das Problem, dieses Array angezeigt zu bekommen mit der Möglichkeit der Datenänderung.
Geht dies überhaupt? Anzeige und Bearbeitung und einzelne Zeilen löschen?
Habe bisher sehr wenig Erfahrung mit Arrays.
Ich will damit den Zugriff auf die Datenbank vermindern, da nach dem Druck der Liste erst eine Überarbeitung dieser erfolgen soll und somit eventuell Zeilen gelöscht werden sollen. Erst nachdem die Bearbeitung fertig ist, können die restlichen Daten in die Datenbank.
Eine (zu Tun Liste / Einkaufsliste) könnte man sagen, was erledigt ist fliegt raus.
Array anlegen - ok. - aArray := {}
In das Array Daten - ok - AAdd( aArray, {"Artikel","Preis",nBetrag,nMenge,nGesbetrag,} )
und ab hier verliesen mich die guten Geister.
Ich hab es zwar noch geschaft, mit AEval( aArray, {|a| QOut(a[1], a[2],a[3],a[4], a[5],a[6]) } )
auf den Bildschirm zu bekommen, jedoch jeder Versuch es in einen Listenmodus mit Bearbeitungsmöglichkeit zu bekommen ist gescheitert.
Wenn es eine andere Option als Array gibt dies zu realisieren, ok, her damit, lasst mich nicht unwissend untergehen
Gehts mit Array, dann schmeißt mir mal nen Rettungsanker rüber =D> . Möchte eigentlich nicht absaufen .
Gruß
Messing
Ich möchte eine Liste mit verschiedenen Angaben als Array aufbauen.
z.B.
Artikel,Bestand,Preis,verkauft, usw.
möchte in verschiedenen Spalten eine Summierung, z.B. bei Preis.
Wenn die Liste fertig ist, möchte ich die Daten drucken und eventuell in einer Datenbank speichern.
Erst mal die Frage an alle, ergibt es einen Sinn, dies mit einem Array zu machen???
Das Array selbst ist kein Problem, auch das anfügen nicht.
Ich habe jetzt das Problem, dieses Array angezeigt zu bekommen mit der Möglichkeit der Datenänderung.
Geht dies überhaupt? Anzeige und Bearbeitung und einzelne Zeilen löschen?
Habe bisher sehr wenig Erfahrung mit Arrays.
Ich will damit den Zugriff auf die Datenbank vermindern, da nach dem Druck der Liste erst eine Überarbeitung dieser erfolgen soll und somit eventuell Zeilen gelöscht werden sollen. Erst nachdem die Bearbeitung fertig ist, können die restlichen Daten in die Datenbank.
Eine (zu Tun Liste / Einkaufsliste) könnte man sagen, was erledigt ist fliegt raus.
Array anlegen - ok. - aArray := {}
In das Array Daten - ok - AAdd( aArray, {"Artikel","Preis",nBetrag,nMenge,nGesbetrag,} )
und ab hier verliesen mich die guten Geister.
Ich hab es zwar noch geschaft, mit AEval( aArray, {|a| QOut(a[1], a[2],a[3],a[4], a[5],a[6]) } )
auf den Bildschirm zu bekommen, jedoch jeder Versuch es in einen Listenmodus mit Bearbeitungsmöglichkeit zu bekommen ist gescheitert.
Wenn es eine andere Option als Array gibt dies zu realisieren, ok, her damit, lasst mich nicht unwissend untergehen
Gehts mit Array, dann schmeißt mir mal nen Rettungsanker rüber =D> . Möchte eigentlich nicht absaufen .
Gruß
Messing
Zuletzt geändert von messing am Mi, 09. Jun 2010 11:22, insgesamt 1-mal geändert.
Gruß
Bruno
Messing
Bruno
Messing
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Moin,
einfach mit dem XbpBrowse() das Array anzeigen.
Löschen eines Eintrages geht ja mit ADel() - mit ASize() müsstest Du das Array nach dem Löschen entsprechend verkleinern!
Viele Grüße,
Martin
einfach mit dem XbpBrowse() das Array anzeigen.
Löschen eines Eintrages geht ja mit ADel() - mit ASize() müsstest Du das Array nach dem Löschen entsprechend verkleinern!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Danke für die schnelle Antwort .
Geht dies in einem Textfenster?
Gruß
Messing
Geht dies in einem Textfenster?
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Seit 1.9 gibt es auch ARemove(nRow), das einen Eintrag löscht und das Array verkleinert.
Im Textmodus müsste das mit TBrowse gehen.
Im Textmodus müsste das mit TBrowse gehen.
Herzlich,
Tom
Tom
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
So denn, hier hab ich ein kleines Prog.
bitte mal reinschauen und helfen , aber bitte keine vollständige Lösung , sondern ne Markierung machen und kräftig schubsen! =D>
Ich muß das doch endlich mal runterkriegen , es kann doch nicht so unverdaubar sein wie ich mich anstelle!
Wie gesagt, kräftig schubsen ist gut, damit der rocken endlich mal dort landet, wo er eigentlich hin soll.
Gruß
Messing
bitte mal reinschauen und helfen , aber bitte keine vollständige Lösung , sondern ne Markierung machen und kräftig schubsen! =D>
Ich muß das doch endlich mal runterkriegen , es kann doch nicht so unverdaubar sein wie ich mich anstelle!
Wie gesagt, kräftig schubsen ist gut, damit der rocken endlich mal dort landet, wo er eigentlich hin soll.
Gruß
Messing
Code: Alles auswählen
PROCEDURE main
local aArray
local ek_artikel,ek_preis,ek_stueck,ek_gesbetrag,ek_datum,ek_bezahlt
local taste
aArray:={}
ek_artikel:=Space(30)
ek_preis:=0
ek_stueck:=0
ek_gesbetrag:=0
ek_datum:=ctod("")
ek_bezahlt:=0
set confirm on
set decimals to 2
cls
// von 1 - 15 Array Liste
//aktualisierung der Liste nach eingabe
@ 21,01 say "F5 - Artikel"
@ 21,20 say "ESC - Ende"
do while taste<>27
taste:=inkey(0)
do case
case taste=-4
@ 17,01 say "Artikel: " get ek_artikel
@ 17,45 say "Preis: " get ek_preis
@ 18,01 say "Menge: " get ek_stueck
@ 18,40 say "Ges.Betrag: " get ek_gesbetrag
@ 19,01 say "Wann: " get ek_datum
@ 19,40 say "Bezahlt: " get ek_bezahlt
read
AAdd( aArray,{ek_artikel,ek_preis,ek_stueck,ek_gesbetrag,ek_datum,ek_bezahlt} )
case taste=27
quit
endcase
enddo
return
* Programmende EOF *
Gruß
Bruno
Messing
Bruno
Messing
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Servus,Tom hat geschrieben:Seit 1.9 gibt es auch ARemove(nRow), das einen Eintrag löscht und das Array verkleinert.
Im Textmodus müsste das mit TBrowse gehen.
TBrowse hab ich schon bei Datenbanken benutzt, was müsste ich machen um das auf ein Array anzuwenden?
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Hi,
zunächst solltest du oben ein
einsetzen und statt dem numerischen Tastencode das jeweilige Kürzel nutzen ...
-4 ... was war das nochmal -> K_F5 ist einfach besser lesbar
27 -> K_ESC etc.
für die Auswahl im Textfenster ist TBROWSE() ganz nützlich.
Du könntest aber auch die GET mit ARRAY Elementen aufrufen
@ 1,1 say "Kunde" get aName[x]
mit F7 und F8 dann X hoch oder runterzählen
und nach jeder Änderung von X ein
ausführen, dann wird die Änderung sofort angezeigt ... ach wie lange ist das her
zunächst solltest du oben ein
Code: Alles auswählen
#include "inkey.ch"
-4 ... was war das nochmal -> K_F5 ist einfach besser lesbar
27 -> K_ESC etc.
für die Auswahl im Textfenster ist TBROWSE() ganz nützlich.
Du könntest aber auch die GET mit ARRAY Elementen aufrufen
@ 1,1 say "Kunde" get aName[x]
mit F7 und F8 dann X hoch oder runterzählen
und nach jeder Änderung von X ein
Code: Alles auswählen
aEval(getlist(),{|oG| oG:updateBuffer() } )
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Hi,
statt TBrowse() ist AChoice() wahrscheinlich einfacher.
statt TBrowse() ist AChoice() wahrscheinlich einfacher.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Am Rande, weil es gerade zum Thema passt:
Arrays gehören einfach zu der geilsten Scheiße, die es in Xbase gibt. Sie können irre groß, nahezu beliebig dimensioniert und bis auf Zellenebene völlig frei typisiert werden, sie sind sehr rasant, robust und dynamisch als Datenquelle für alles mögliche zu verwenden. Es kann sich lohnen, auch im Netzwerk ständig aktuell zu haltende Daten, die zum Beispiel in komplexen Browses angezeigt werden sollen, aus Tabellen in Arrays zu kopieren und ggf. zeilenweise regelmäßig zu aktualisieren, statt ständig auf irgendwelchen Netzwerklaufwerken herumzueiern (ein Tabellen-Browse generiert beim Scrollen einen Heidentraffic, obwohl sich ggf. überhaupt nichts geändert hat!). Hilfstabellen, die viele von uns wahrscheinlich in ihrer Clipperzeit häufig z.B. für Auswertungen genutzt haben, um Speicherplatz zu sparen, sollte man gegen Arrays austauschen. Und so weiter. Dabei hilft es auch, den Präprozessor zu nutzen, um nicht mit Ausdrücken wie aArray[172,220,11] herumstochern zu müssen, sondern stattdessen mit etwas wie aArray[DIALOG_BASECOLOR,MAX_LINE,SUM_VALUE] arbeiten zu können.
Bin ein Arrayfan.
Arrays gehören einfach zu der geilsten Scheiße, die es in Xbase gibt. Sie können irre groß, nahezu beliebig dimensioniert und bis auf Zellenebene völlig frei typisiert werden, sie sind sehr rasant, robust und dynamisch als Datenquelle für alles mögliche zu verwenden. Es kann sich lohnen, auch im Netzwerk ständig aktuell zu haltende Daten, die zum Beispiel in komplexen Browses angezeigt werden sollen, aus Tabellen in Arrays zu kopieren und ggf. zeilenweise regelmäßig zu aktualisieren, statt ständig auf irgendwelchen Netzwerklaufwerken herumzueiern (ein Tabellen-Browse generiert beim Scrollen einen Heidentraffic, obwohl sich ggf. überhaupt nichts geändert hat!). Hilfstabellen, die viele von uns wahrscheinlich in ihrer Clipperzeit häufig z.B. für Auswertungen genutzt haben, um Speicherplatz zu sparen, sollte man gegen Arrays austauschen. Und so weiter. Dabei hilft es auch, den Präprozessor zu nutzen, um nicht mit Ausdrücken wie aArray[172,220,11] herumstochern zu müssen, sondern stattdessen mit etwas wie aArray[DIALOG_BASECOLOR,MAX_LINE,SUM_VALUE] arbeiten zu können.
Bin ein Arrayfan.
Herzlich,
Tom
Tom
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Ach - und das aus Deinem Munde?
Ich erinnere mich noch daran, wie Du mir in den Rücken gefallen warst bei dem Thema
Viele Grüße,
Martin
Ich erinnere mich noch daran, wie Du mir in den Rücken gefallen warst bei dem Thema
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Sehr gut, dann bitte ich darum, mir mal auf die Sprünge zu helfen!Tom hat geschrieben:Am Rande, weil es gerade zum Thema passt:
Arrays gehören einfach zu der geilsten Scheiße, die es in Xbase gibt. Sie können irre groß, nahezu beliebig dimensioniert und bis auf Zellenebene völlig frei typisiert werden, sie sind sehr rasant, robust und dynamisch als Datenquelle für alles mögliche zu verwenden. Es kann sich lohnen, auch im Netzwerk ständig aktuell zu haltende Daten, die zum Beispiel in komplexen Browses angezeigt werden sollen, aus Tabellen in Arrays zu kopieren und ggf. zeilenweise regelmäßig zu aktualisieren, statt ständig auf irgendwelchen Netzwerklaufwerken herumzueiern (ein Tabellen-Browse generiert beim Scrollen einen Heidentraffic, obwohl sich ggf. überhaupt nichts geändert hat!). Hilfstabellen, die viele von uns wahrscheinlich in ihrer Clipperzeit häufig z.B. für Auswertungen genutzt haben, um Speicherplatz zu sparen, sollte man gegen Arrays austauschen. Und so weiter. Dabei hilft es auch, den Präprozessor zu nutzen, um nicht mit Ausdrücken wie aArray[172,220,11] herumstochern zu müssen, sondern stattdessen mit etwas wie aArray[DIALOG_BASECOLOR,MAX_LINE,SUM_VALUE] arbeiten zu können.
Bin ein Arrayfan.
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
OK, Include eingebaut =D>brandelh hat geschrieben:Hi,
zunächst solltest du oben ein
einsetzen und statt dem numerischen Tastencode das jeweilige Kürzel nutzen ...Code: Alles auswählen
#include "inkey.ch"
-4 ... was war das nochmal -> K_F5 ist einfach besser lesbar
27 -> K_ESC etc.
für die Auswahl im Textfenster ist TBROWSE() ganz nützlich.
Du könntest aber auch die GET mit ARRAY Elementen aufrufen
@ 1,1 say "Kunde" get aName[x]
mit F7 und F8 dann X hoch oder runterzählen
und nach jeder Änderung von X einausführen, dann wird die Änderung sofort angezeigt ... ach wie lange ist das herCode: Alles auswählen
aEval(getlist(),{|oG| oG:updateBuffer() } )
Gruß
Messing
Zuletzt geändert von messing am Di, 20. Apr 2010 16:19, insgesamt 1-mal geändert.
Gruß
Bruno
Messing
Bruno
Messing
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
@Martin:
Das musste ja kommen.
Nein, ich muss da wirklich zu Kreuze kriechen. Ich habe gerade ein hochkomplexes Planungssystem, das ständig auf zig Tabellen zugreift und Daten mischt, in ein mehrdimensionales Array (eigentlich in mehrere) geschaufelt. Das ganze wird in insgesamt vier parallelen Browses angezeigt, die miteinander interagieren. Auf die Echtdaten greife ich dann im Prinzip nur noch zu, wenn bestimmte Events ausgelöst werden, Daten verändert werden oder wenn der Benutzer die Aktualisierung manuell auslöst (es gibt dann noch ein paar Zusatzkniffe, aber das würde hier zu weit führen). Im Ergebnis ist das System - je nach Netzwerktopologie - locker um den Faktor 50 (!) schneller als vorher (und es war vorher schon optimiert) und erzeugt nur noch einen Bruchteil des Traffics. Und wenn Daten dergestalt geändert werden, dass auf anderen Arbeitsplätzen Aktualisierungen ausgelöst werden sollen, schicke ich einfach einen SOAP-Request an unseren selbstgebauten Server, mit dem alle Arbeitsplätze sowieso ständig kommunizieren - dann wird auch nur das aktualisiert, was geändert wurde. Die Verzögerung liegt damit unter 30 Sekunden, aber auch das lässt sich noch verfeinern. Der Aufbau des Systems dauert jetzt ein paar Sekunden länger als vorher, aber diese Zeit hat man sehr schnell wieder raus.
Das musste ja kommen.
Nein, ich muss da wirklich zu Kreuze kriechen. Ich habe gerade ein hochkomplexes Planungssystem, das ständig auf zig Tabellen zugreift und Daten mischt, in ein mehrdimensionales Array (eigentlich in mehrere) geschaufelt. Das ganze wird in insgesamt vier parallelen Browses angezeigt, die miteinander interagieren. Auf die Echtdaten greife ich dann im Prinzip nur noch zu, wenn bestimmte Events ausgelöst werden, Daten verändert werden oder wenn der Benutzer die Aktualisierung manuell auslöst (es gibt dann noch ein paar Zusatzkniffe, aber das würde hier zu weit führen). Im Ergebnis ist das System - je nach Netzwerktopologie - locker um den Faktor 50 (!) schneller als vorher (und es war vorher schon optimiert) und erzeugt nur noch einen Bruchteil des Traffics. Und wenn Daten dergestalt geändert werden, dass auf anderen Arbeitsplätzen Aktualisierungen ausgelöst werden sollen, schicke ich einfach einen SOAP-Request an unseren selbstgebauten Server, mit dem alle Arbeitsplätze sowieso ständig kommunizieren - dann wird auch nur das aktualisiert, was geändert wurde. Die Verzögerung liegt damit unter 30 Sekunden, aber auch das lässt sich noch verfeinern. Der Aufbau des Systems dauert jetzt ein paar Sekunden länger als vorher, aber diese Zeit hat man sehr schnell wieder raus.
Herzlich,
Tom
Tom
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Tom,
Aber freut mich ja
Viele Grüße,
Martin
klar - kennst mich doch.Tom hat geschrieben:@Martin:
Das musste ja kommen.
Aber freut mich ja
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Funktioniert AChoice mit einem lerren Array ( Programmstart ) ?brandelh hat geschrieben:Hi,
statt TBrowse() ist AChoice() wahrscheinlich einfacher.
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
@Messing:
Wenn Du immer feste Spalten z.B. für Kundennr., Name, Datum usw. in Deinem Array hast, geht sowas:
Der Präprozessor macht dann - Achtung: er unterscheidet strikt Groß- und Kleinschreibung! - überall im Source (in diesem Source!) aus "KUNDENNR" eine 1. So arbeiten z.B. auch die ganzen GRA-Konstanten, die man nutzen kann, wenn man GRA.CH einbindet: oStatic:SetColorBG(GRA_CLR_WHITE). "GRA_CLR_WHITE" ist in der GRA.CH als "-2" definiert, und der Präprozessor macht aus diesem Code dann: oStatic:SetColorBG(-2). Einer der großen Vorteile - neben der besseren Lesbarkeit - besteht darin, dass man z.B. bei Änderung der Spaltenposition für "KUNDENNR" nur noch das Define ändern muss, statt alle Zugriff auf das Array danach zu durchsuchen, ob eine "1" darin vorkommt.
Wenn Du immer feste Spalten z.B. für Kundennr., Name, Datum usw. in Deinem Array hast, geht sowas:
Code: Alles auswählen
* ganz oben im Source:
#DEFINE KUNDENNR 1
#DEFINE NAME 2
#DEFINE DATUM 3 // usw., oder RECHNUNGSARRAY_DATUM oder so
* Array erzeugen, z.B. aAdd(aArray,{db->kundennr, db->name, db->datum usw. })
? aArray[nRowPos,KUNDENNR]
Herzlich,
Tom
Tom
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Meinst Du mit feste Spalten, das immer der gleiche Wert unter dem gleichen Wert angehängt wird? Wenn ja, dann ja!Tom hat geschrieben:@Messing:
Wenn Du immer feste Spalten z.B. für Kundennr., Name, Datum usw. in Deinem Array hast, geht sowas:
Der Präprozessor macht dann - Achtung: er unterscheidet strikt Groß- und Kleinschreibung! - überall im Source (in diesem Source!) aus "KUNDENNR" eine 1. So arbeiten z.B. auch die ganzen GRA-Konstanten, die man nutzen kann, wenn man GRA.CH einbindet: oStatic:SetColorBG(GRA_CLR_WHITE). "GRA_CLR_WHITE" ist in der GRA.CH als "-2" definiert, und der Präprozessor macht aus diesem Code dann: oStatic:SetColorBG(-2). Einer der großen Vorteile - neben der besseren Lesbarkeit - besteht darin, dass man z.B. bei Änderung der Spaltenposition für "KUNDENNR" nur noch das Define ändern muss, statt alle Zugriff auf das Array danach zu durchsuchen, ob eine "1" darin vorkommt.Code: Alles auswählen
* ganz oben im Source: #DEFINE KUNDENNR 1 #DEFINE NAME 2 #DEFINE DATUM 3 // usw., oder RECHNUNGSARRAY_DATUM oder so * Array erzeugen, z.B. aAdd(aArray,{db->kundennr, db->name, db->datum usw. }) ? aArray[nRowPos,KUNDENNR]
Artikel soll unter Artikel stehn usw.
Die Daten kommen aber nicht aus einer DB.
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Genau das. Spalte eins enthält immer die Kundennr. usw. Nur dann hat es auch Sinn. Dasselbe kann man natürlich auch über UDFs erreichen:Meinst Du mit feste Spalten, das immer der gleiche Wert unter dem gleichen Wert angehängt wird?
Code: Alles auswählen
? aArray[nRowPos,KundenSpalte()]
STATIC FUNCTION KundenSpalte()
RETURN 1
Herzlich,
Tom
Tom
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
OK das hab ich gleich mal umgesetzt.Tom hat geschrieben:Genau das. Spalte eins enthält immer die Kundennr. usw. Nur dann hat es auch Sinn. Dasselbe kann man natürlich auch über UDFs erreichen:Meinst Du mit feste Spalten, das immer der gleiche Wert unter dem gleichen Wert angehängt wird?Aber Defines sind deutlich eleganter.Code: Alles auswählen
? aArray[nRowPos,KundenSpalte()] STATIC FUNCTION KundenSpalte() RETURN 1
Code: Alles auswählen
#define EK_ARTIKEL 1
#define EK_PREIS 2
#define EK_STUECK 3
#define EK_GESBETRAG 4
#define EK_DATUM 5
#define EK_BEZAHLT 6
#include "inkey.ch"
PROCEDURE main
local aArray
local ek_artikel,ek_preis,ek_stueck,ek_gesbetrag,ek_datum,ek_bezahlt
local taste
local nChoice
aArray:={}
ek_artikel:=Space(30)
ek_preis:=0
ek_stueck:=0
ek_gesbetrag:=0
ek_datum:=ctod("")
ek_bezahlt:=0
set confirm on
set decimals to 2
cls
// von 1 - 15 Array Liste
//aktualisierung der Liste nach eingabe
@ 21,01 say "F5 - Artikel"
@ 21,20 say "ESC - Ende"
do while taste<>27
taste:=inkey(0)
do case
case taste=K_F5
@ 17,01 say "Artikel: " get ek_artikel
@ 17,45 say "Preis: " get ek_preis
@ 18,01 say "Menge: " get ek_stueck
@ 18,40 say "Ges.Betrag: " get ek_gesbetrag
@ 19,01 say "Wann: " get ek_datum
@ 19,40 say "Bezahlt: " get ek_bezahlt
read
AAdd( aArray,{ek_artikel,ek_preis,ek_stueck,ek_gesbetrag,ek_datum,ek_bezahlt} )
case taste=K_ESC
quit
endcase
enddo
return
* Programmende EOF *
Messing
Gruß
Bruno
Messing
Bruno
Messing
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
@Tom
Jetzt gib mir mal nen Schubser wie ich die Tabelle oder Achoice im ober Fensterbereich bis Zeile 15 sichtbar bekomme.
Ich hab aus der Doku AChoice ausprobiert, doch nichts passiert.
Gruß
Messing
Jetzt gib mir mal nen Schubser wie ich die Tabelle oder Achoice im ober Fensterbereich bis Zeile 15 sichtbar bekomme.
Ich hab aus der Doku AChoice ausprobiert, doch nichts passiert.
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
@Messing: aChoice ist nur für eindimensionale Arrays ({'Eins','zwei','drei'}), wenn ich das richtig sehe, also geeignet z.B. für Dateiauswahlen oder Menüs oder ähnliches. Zu TBrowse kann ich Dir nix sagen, weil ich ausschließlich mit GUI arbeite (vielleicht solltest Du mal einen Blick auf Roger Donnays Zusatzbibliothek "eXpress++" werfen, die erlaubt XBase++-GUI-Anwendungen mit Clipper-ähnlicher Codierung). Aber wenn ich das richtig gesehen habe, gibt's zu TBrowse ein Beispiel mit Arrays.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
hi,
Frage will du wirklich es im VIO/Hybrid Modus machen ?
Sonst schau dir mal C:\ALASKA\XPPW32\Source\samples\basics\GuiBrow\FBROWSE.prg an
ein INKEY(0) geht für Xbase++ "gar nicht" ! setzte unbedingt einen Wert wie 0.1 in das INKEY()messing hat geschrieben:Code: Alles auswählen
taste:=inkey(0)
Frage will du wirklich es im VIO/Hybrid Modus machen ?
Sonst schau dir mal C:\ALASKA\XPPW32\Source\samples\basics\GuiBrow\FBROWSE.prg an
gruss by OHR
Jimmy
Jimmy
- messing
- Rekursionen-Architekt
- Beiträge: 216
- Registriert: Mi, 13. Jan 2010 9:42
- Wohnort: Lauterbach / Hessen
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Servus,AUGE_OHR hat geschrieben:hi,ein INKEY(0) geht für Xbase++ "gar nicht" ! setzte unbedingt einen Wert wie 0.1 in das INKEY()messing hat geschrieben:Code: Alles auswählen
taste:=inkey(0)
Frage will du wirklich es im VIO/Hybrid Modus machen ?
Sonst schau dir mal C:\ALASKA\XPPW32\Source\samples\basics\GuiBrow\FBROWSE.prg an
wieso geht das mit inkey(0) nicht unter xbase++, habe bis jetzt keine Probleme gehabt.
Was VIO/Hybrid Modus betrifft, habe mich bis heute nicht mit GUI beschäftigt, somit auch keine Ahnung ( Erfahrung ) damit.
Gruß
Messing
Gruß
Bruno
Messing
Bruno
Messing
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
Der Hinweis auf ein INKEY(0) zu verzichten stammt noch von Clipper Zeiten.messing hat geschrieben:wieso geht das mit inkey(0) nicht unter xbase++, habe bis jetzt keine Probleme gehabt.AUGE_OHR hat geschrieben:hi,ein INKEY(0) geht für Xbase++ "gar nicht" ! setzte unbedingt einen Wert wie 0.1 in das INKEY()...messing hat geschrieben:Code: Alles auswählen
taste:=inkey(0)
Die alten DOS Versionen haben statt einem Betriebssystemaufruf einfach eine Schleife genutzt, die Windows in die Knie gezwungen hat.
Wahrscheinlich ist das dann für Xbase++ als Empfehlung hängen geblieben, aber ich habe es eben gerade nochmal geprüft.
INKEY(0) verbraucht keine Rechenzeit (unter 2% Systemlast inkl. Taskmanager) und ist somit kein Problem !
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Arrays und Ihre Verwendungsmöglichkeiten?!?
hm ... und in einer TBrowse Schleife und :PgDn() während er bei "aufbauen" ist ?brandelh hat geschrieben:INKEY(0) verbraucht keine Rechenzeit (unter 2% Systemlast inkl. Taskmanager) und ist somit kein Problem !
gruss by OHR
Jimmy
Jimmy