![]() |
endlosschleifenfehler mit while
Hallo Zusammen,
ich habe ein Programmfragment was 2 Tabellen miteinander vergleicht, die gespeicherte, und die aktuell geänderte. Leider springt er nicht aus der Whileschleife raus, obwohl die Zählvariable über den Row bzw ColCount hinaus geht. Ich finde den Gehler nicht, vielleicht könnt ihr mir weiter helfen hier einmal das Fragment:
Delphi-Quellcode:
schonmal vielen Dank für eure Hilfeprocedure TForm2.Button5Click(Sender: TObject); var i,x : Integer; begin i := 1; x := 1; LoadStringGrid(form1.StringGrid2, 'c:\DB\DB.txt'); while (gespeichert = true) or (i <= form1.StringGrid1.rowcount) do begin while (gespeichert = true) or (x <= form1.stringgrid1.ColCount) do begin if form1.stringgrid1.cells[i,x] <> form1.stringgrid2.cells[i,x] then begin gespeichert := false; end; x := x + 1; end; i := i + 1; end; if gespeichert = false then begin if MessageDlg('Fenster schließen ohne speichern!?', mtWarning, [mbYes, mbNo], 0, mbYes) = mrYes then begin form1.close; form2.close; end; end else begin form1.close; form2.close; end; end; euer 5etH |
Re: endlosschleifenfehler mit while
Guten Morgen,
vielleicht läuft es so besser?
Delphi-Quellcode:
[edit]Code korregiert [/edit]
gespeichert := false;
while (not gespeichert) and (i <= form1.StringGrid1.rowcount -1) do begin while (not gespeichert) and (x <= form1.stringgrid1.ColCount -1) do begin if form1.stringgrid1.cells[i,x] = form1.stringgrid2.cells[i,x] then begin gespeichert := true; end; x := x + 1; end; i := i + 1; end; Grüße Klaus |
Re: endlosschleifenfehler mit while
nein funktioniert leider nicht
|
Re: endlosschleifenfehler mit while
Nur so btw:
Tipps:
![]() |
Re: endlosschleifenfehler mit while
Zitat:
Hast Du immer noch die "Endlosschleife"? Grüße Klaus |
Re: endlosschleifenfehler mit while
Delphi-Quellcode:
So vielleicht?
while (gespeichert) and (i < form1.StringGrid1.rowcount) do
begin while (gespeichert) and (x < form1.stringgrid1.ColCount) do begin if form1.stringgrid1.cells[i,x] <> form1.stringgrid2.cells[i,x] then begin gespeichert := false; end; x := x + 1; end; i := i + 1; end; [edit] <= in < geändert [/edit] |
Re: endlosschleifenfehler mit while
1. danke für den tipp wegen dem auf true und fals testen
2. wieso sollte ich vor der schleife gespeichert auf false setzen ? ... dann brauche ich sie nicht ... also jedesmal wenn ich die tabelle temporär speicher also nicht in einer datei wird gespeichter auf true gesetzt ... ich will erreichen, dass er abfragt beenden ohne speicher... also im debugger zählt er die variable bis ins unendliche obwohl er ja abbrechen soll sobald die zahl größer als der row oder colcount ist. |
Re: endlosschleifenfehler mit while
Hi,
du muss die innere Zählvariable zurücksetzen:
Delphi-Quellcode:
while (gespeichert = true) or (i <= form1.StringGrid1.rowcount) do
begin while (gespeichert = true) or (x <= form1.stringgrid1.ColCount) do begin if form1.stringgrid1.cells[i,x] <> form1.stringgrid2.cells[i,x] then begin gespeichert := false; end; x := x + 1; end; i := i + 1; x := 1; <--------------- hier end; |
Re: endlosschleifenfehler mit while
Auf jeden Fall ist das or falsch und muss durch and ersetzt werden.
|
Re: endlosschleifenfehler mit while
schon aber er kommt aus der zweiter schleife wie makiert nicht heraus
Delphi-Quellcode:
while (gespeichert = true) or (i <= form1.StringGrid1.rowcount) do
begin while (gespeichert = true) or (x <= form1.stringgrid1.ColCount) do <--------------- hier begin if form1.stringgrid1.cells[i,x] <> form1.stringgrid2.cells[i,x] then begin gespeichert := false; end; x := x + 1; end; i := i + 1; x := 1; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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