ich stolperte über ein eigenartiges Programmverhalten:
Code: Alles auswählen
Procedure Testtest;
var
sss , kkk :string;
n : integer;
begin
n := 0 ;
kkk := '';
Ffufe.ZQueryFundus2.First;
Showmessage( inttostr(Ffufe.ZQueryFundus2.RecordCount)); // "2" wird korrekt angezeigt
while not Ffufe.ZQueryFundus2.EOF do
begin
n:= n+1;
sss := Ffufe.ZQueryFundus2.FieldByName('CPfadG').AsString ;
kkk := kkk + LineEnding + sss ;
// Showmessage('Stop_01: '+ inttostr(n) + ' '+sss);
Ffufe.ZQueryFundus2.Next;
end;
Showmessage(inttostr(n) + ': ' + kkk);
end;
Wenn das Programm mit auskommentierter Zeile:
(// Showmessage('Stop_01: '+ inttostr(n) + ' '+sss);)
läuft, dann funktioniert alles wie erwartet:
Die Schleife wird zweimal durchlaufen. Alle Variablen werden korrekt ausgegeben.
Wenn ich aber diese genannte Zeile in der "Showmessage"-Schleife NICHT auskommentiere, dann läuft diese Schleife endlos!??
Es wird dabei ständig die zuletzt eingelesene Variable "sss" angezeigt und der Zähler "n" läuft weiter, also bei jedem Durchgang um "1" hoch gezählt.
Wie ist es zu erklären, dass diese "Showmessage"-Zeile dazu führt, dass die Schleife plötzlich endlos läuft??
Gruß Aliobaba
Lazarus Version 2.02 unter Windows
Zeos-Datenbank Programm