![]() |
Problem bei for Schleife
Code:
zu meinem Problem:
procedure TForm1.ReplaceClick(Sender: TObject);
var i: integer; begin for j:= 0 TO 200 DO begin try [Befehl] except Memo1.Lines.Delete(i-1); end; end; ReplaceClick(Self); end; Ich hab 1 memo in den ich untereinander gewisse Wörter schreibe. Wird das prog gestartet, so wird gleich eine PHP datei geladen. Drück ich nun meinen Button, soll anhand der Schleife nacheinander die eingeschriebenen Worte gesucht werden und mit vorgegeben ersetzt werden. Die Line im Memo spreche ich mit Memo1.Lines[i] an. Der erste lauf funktioniert wunderbar. Falls es ein Wort nicht gibt wird es mit der Error meldung aus dem Memo gelöscht. Wenn es gelöscht ist, soll er wieder von Anfang an anfangen auch mit den Wörtern die vorher schon gesucht wurden. Derzeitiges Prob: Wenn ein Error verursacht wurde und das letzte Wort oder Wortkette gelöscht wurde, fängt er dann 3 lines unter dem letzten an und nicht von anfang an! Kann mir sagen warum die schleife nicht so will wie ich?!? MFG |
Re: Problem bei for Schleife
Du solltest die Compilerwarnungen beachten! Die For Schleifenvariable sollte eine lokale Variable sein, sagt dir der Compiler!
Die Schleife läuft mit j und du löscht i. |
Re: Problem bei for Schleife
probiers mal mit downto
|
Re: Problem bei for Schleife
Zitat:
|
Re: Problem bei for Schleife
vllt so??
Delphi-Quellcode:
edit:
//nicht getestet
procedure TForm1.ReplaceClick(Sender: TObject); var i: integer; begin for i := 0 to 200 do try except Memo1.Lines.Delete(i - 1); end; ReplaceClick(Self); end; aber wieso überhaupt so umständlich?? wenn du nur das memo "leeren" willst, kannst du das auch so:
Delphi-Quellcode:
memo1.lines.clear;
|
Re: Problem bei for Schleife
Wenn deine Schleife bei 0 beginnt, musst du schon das -1 weglassen !
Delphi-Quellcode:
Memo1.Lines.Delete(i); // nicht: Memo1.Lines.Delete(i - 1);
|
Re: Problem bei for Schleife
das Komische ist, hatte das prog schonmal fertig, nach format c alles weg :-P nur hatte ich glück und Kumpel hatte noch Quellcode da gehabt, nur will die schleife nun nicht wieder von anfang an starten. Das i-1 muss ja sein, da wenn Error kommt ist die schleife ja schon eine zeile weiter unten und muss aber den darüber löschen, also -1
@lbccaleb Dein code will auch nicht! PS: Angenommen er durchläuft alles und findet das gesucht wort im memo Line 5, danach gibts ein Error, dannach wird mit i-1 der letzte Wert (Line 5) gelöscht, weil schleife in line 6 schon ist! Nun soll die schleife aber wirder von Line 1 an beginnen und nciht von Line 8 wie es derzeit der fall ist! MFG |
Re: Problem bei for Schleife
Hast du eigentlich die Bereichs- und Überlaufprüfung eingeschaltet? Wenn nicht, dann mal in den Projektoptionen beim Compiler machen und das Projekt erneut erstellen (nicht compilieren).
|
Re: Problem bei for Schleife
Zitat:
Solltest Du dir überlegen die Schleife nicht als while-do oder repeat-until Schleife anzulegen. Denn da kannst Du die Schleifenvariable manipulieren. Grüße Klaus |
Re: Problem bei for Schleife
Hab Bereichs- und Überlaufprüfung eingeschaltet und alles neu geschrieben und siehe da, nun läuft die schleife wie sie soll....
Was hat Bereichs- und Überlaufprüfung zu bedeuten? MFG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz