Unklares Programmverhalten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Unklares Programmverhalten

Beitrag von Aliobaba »

Hallo,

den ganzen Nachmittag suche ich nun schon einen eigenartigen Fehler. Bei der Fehlersuche bin ich nun auf ein eigenartiges Phänomen gestoßen, das ich mir nicht erklären kann. Ob mein Programmfehler damit zusammen hängt, glaube ich nicht - und natürlich interessiert mich das folgende Programmverhalten:

Es gibt 4 Edit Felder (Edit1... Edit4)

Vor dem Aufruf der unten gezeigten Procedure wird die global gültige Variable "Hilfsstring" in das Edit1.Text -Feld problemlos geladen und angezeigt.
Auch zu Beginn der Procedur wird Edit2.Text noch richtig mit dem "Hilfsstring" gefüllt.
Edit3.Text und Edit4.Text bleibt aber leer ?????

Code: Alles auswählen

 
procedure TForm2.ZuZeileSchlagwortspringen;
var
   Datenzeilen, i , k : Integer;
begin
form1.QSchlag.SQL.Text := 'Select * from tSchlagw ORDER BY UPPER(RSchlagw)';
Form1.QSchlag.Open;
Datenzeilen := 0;
form1.Edit2.Text:= Hilfsstring;  // Feld ist richtig mit der Variabel "Hilfsstring" gefüllt
if Hilfsstring <> '' then
begin
 while not Form1.QSchlag.EOF do
  begin
     Datenzeilen := Datenzeilen + 1 ;
     if (Hilfsstring = DBEdSchlagwortaendern.Text)   then
        begin
           k:= (Form1.QSchlag.RecordCount - Datenzeilen);
           if k > 12 then k := 12;
           For i := 1 to k do form1.QSchlag.Next;   // = "Anfängerkrücke" zwecks Positioierung des Cursors
           For i := 1 to k do form1.QSchlag.Prior;
           exit;
        end;
      form1.QSchlag.Next;
  end;
 form1.Edit3.Text:= Hilfsstring;   // leibt leer
 end;
 form1.Edit4.Text:= Hilfsstring;    // leibt leer
end;                       


Wenn ich die Schleife, wie unten gezeigt auskommentiere, ist Edit4.Text plötzlich wieder mit der Textvariable "Hilfsstring" gefüllt.

Könnte mir dieses Programmverhalten jemand erklären??

Aliobaba

Code: Alles auswählen

 
procedure TForm2.ZuZeileSchlagwortspringen;
var
   Datenzeilen, i , k : Integer;
begin
form1.QSchlag.SQL.Text := 'Select * from tSchlagw ORDER BY UPPER(RSchlagw)';
Form1.QSchlag.Open;
Datenzeilen := 0;
form1.Edit2.Text:= Hilfsstring;  // Feld ist richtig mit der Variabel "Hilfsstring" gefüllt
{
if Hilfsstring <> '' then
begin
 while not Form1.QSchlag.EOF do
  begin
     Datenzeilen := Datenzeilen + 1 ;
     if (Hilfsstring = DBEdSchlagwortaendern.Text)   then
        begin
           k:= (Form1.QSchlag.RecordCount - Datenzeilen);
           if k > 12 then k := 12;
           For i := 1 to k do form1.QSchlag.Next;
           For i := 1 to k do form1.QSchlag.Prior;
           exit;
        end;
      form1.QSchlag.Next;
  end;
 form1.Edit3.Text:= Hilfsstring;   // leibt leer (ist klar)
 end;
}

 form1.Edit4.Text:= Hilfsstring;   // Feld ist hier wieder richtig mit der Variabel "Hilfsstring" gefüllt
end;           
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Unklares Programmverhalten

Beitrag von Aliobaba »

Bitte sorry!
Habe das "exit" nicht gesehen :oops:

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antworten