probleme mit einer for schleife
-
Hmm mach doch unter Table->Next() ein
PlhIndex = "";
-
habe ich gemacht im ersten datensatz sind die platzhalter vorhanden ab dem zweiten nicht mehr
-
Also ich würde sagen, da is einiges im argen:
AnsiString Artikel; AnsiString PlhIndex; int iD1=0; int WertIndex=iD1; int tIndex=Artikel.Length(); // ist hier nicht gut -> Länge immer 0 int rIndex=18-tIndex; // dito -> ist immer 18 for(int i=0; i<Table1->RecordCount; i++) // geht meiner Meinung nach besser mit ner while Schleife { // hier solltest du iDl auf 0 setzten for(WertIndex;iD1<rIndex; ++iD1) { PlhIndex += "#"; Refresh(); // Wozu ??? } Artikel=DBEdit2->Text; // das gehört nach oben vor die innere for Schleife // hier müsste dann PlhIndex wieder auf leeren String gesetzt werden Memo1->Lines->Add(PlhIndex+Artikel); Table1->Next(); }
Ich kenn jetz zwar diese Table nich aber ich versuchs mal:
AnsiString Artikel = ""; int tableIndex = 0; // Vorher noch die Table1 auf das erste Element setzten - wie gesagt ich kenn die nicht while(tableIndex < Table1->RecordCount) { Artikel = DBEdit2->Text; while(Artikel.length() < 18) { Artikel += "#"; } Memo1->Lines->Add(Artikel); }
Probier mal aus
basedow
-
es klappt einfach nicht. [basedow] das mit der while Schleife geht auch nicht. Die schleife wird nicht gestoppt. ich glaube ich sehe den wald vor lauter bäumen nicht mehr
-
basedow schrieb:
Also ich würde sagen, da is einiges im argen:
...aber ob eine unendliche Schleife soviel besser ist?
basedow schrieb:
AnsiString Artikel = ""; int tableIndex = 0; // Vorher noch die Table1 auf das erste Element setzten - wie gesagt ich kenn die nicht while(tableIndex < Table1->RecordCount) { Artikel = DBEdit2->Text; while(Artikel.length() < 18) { Artikel += "#"; } Memo1->Lines->Add(Artikel); }
Probier mal aus
... vielleicht besser nicht.
Zumindest nicht, ohne tableIndex hochzuzählen. Und ich vermute irgendwo
sollte noch ein Zugriff auf Table1 erfolgen (in Abhängigkeit von tableIndex),
um durch die Datensätze zu navigieren.Gruß,
Alexander
-
wenn du überprüfst ob 0<14 ist und das 1000mal ist es immer false wenn du es nicht inkrementierst oder ?
da war wohl jmd schneller
-
probier mal die Version, die kommt deiner ziemlich nahe
AnsiString Artikel; AnsiString PlhIndex = ""; int rIndex = 0; for(int i=0; i<Table1->RecordCount; i++) { //Hier ist die Zuweisung sinnvoller Artikel = DBEdit2->Text; rIndex = 18 - Artikel.Length(); //wie von basedow schon beschrieben, den Zähler hier auf 0 setzten. for(int iD1 = 0; iD1<rIndex; ++iD1) { PlhIndex += "#"; Refresh(); } Memo1->Lines->Add(PlhIndex+Artikel); //Die Zeichen wieder löschen PlhIndex = ""; Table1->Next(); }
guck dir deinen Code mal genauer an, du hast ne endlosschleife :p
Edit: Kommt davon wenn man(n) trödelt
-
naja, wenn du tableIndex innerhalb der Whileschleife nicht hochzählst kann die Schleife ja nicht stoppen.
-
Hoppla
Stimmt - da muss natürlich noch was rein.AnsiString Artikel = ""; int tableIndex = 0; // Vorher noch die Table1 auf das erste Element setzten - wie gesagt ich kenn die nicht while(tableIndex < Table1->RecordCount) { Artikel = DBEdit2->Text; while(Artikel.length() < 18) { Artikel += "#"; } Memo1->Lines->Add(Artikel); tableIndex++; // NEU }
Jetzt sollte sie auch abbrechen.
Und wie bereits gesagt, du musst vor der äusseren while-Schleife dafür sorgen, dass deine Table1 auf den ersten Datensatz zeigt. Ich kenn nur die Table-Komponente nicht. Da musst du selber noch mal schauen.
@all: Man wird ja wohl noch ne blöde Abbruchbedingung vergessen dürfen
basedow
-
Danke PuppetMaster2k es klappt. ich wollt schon auf den balkon steigen und aus dem 3. stock springen.
super es klappt!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
Habe mir mal erlaubt die while-Schleife etwas abzuändern.
Warum nicht bewährte Eigenschaften und Methoden der TTable-Komponente
verwenden.AnsiString Artikel = ""; // int tableIndex = 0; wird nicht mehr benötigt // Vorher noch die Table1 auf das erste Element setzten - wie gesagt ich kenn die nicht while(!Table1->Eof) { Artikel = DBEdit2->Text; while(Artikel.length() < 18) { Artikel += "#"; } Memo1->Lines->Add(Artikel); // tableIndex++; // NEU ... und schon wieder alt Table1->Next(); }
So könnte es vielleicht auch gehen?
Gruß,
Alexander
-
ich weiss garnicht wie ich euch danken soll
-
alexander ich werde es ausprobieren. danke
-
@ lisa
nein, nicht von dem balkon springen
denn ich glaube es kommen da noch schierigere aufgaben auf dich zu, an denen du noch mehr verzweifelst, falls du weiter prgrammierst...also bitte, kein selbstmord.
Bj
-
@Alexander: DIEEEEB!!!
basedow
-
nein das würde ich nicht machen. ich möchte mich doch weiter mit solch netten menschen wie euch unterhalten. noch mal danke ihr habt mir sehr geholfen
grus lisap.s selbstmord ist keine lösung!! probleme muss man sich stellen und nicht davor weglaufen
-
basedow schrieb:
@Alexander: DIEEEEB!!!
basedow
Das war kein Diebstahl, das war Tuning
Gruß,
Alexander
-
Offtopic-Diskussion abgetrennt.