Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Aber dann liefert NextRecord doch ein False zurück, was bedeutet, es gibt keine weiteren Records mehr, bzw. es werden keine weiteren gefunden.
Somit würde ich die Parameter, bzw. diese Funktion mal untersuchen
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Ich habe mal alles überflüssige und evtl. Seiteneffekte erzeugende entfernt.
Schau mal, ob das funktioniert, wie gewünscht:
procedure TDemoForm.Button1Click( Sender : TObject );
var
CurrentRow : Integer;
A : PersonDef;
Current : PersonDef;
RefNr : LongInt;
Key : IsamKeyStr;
begin
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Sowas habe ich da auch im Kopf, evtl. noch ein Seiteneffekt von Next := NextRecord(A, RefNr, 1, Key, true);
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Hmmm, Haltepunkt auf die Zeile mit dem Aufruf von BTGetRect, mit F9 das Programm im Debugger starten und sobald das Programm dort anhält mit F7 weitergehen, bei jedem weiteren Schritt (F7 oder F8) immer wieder den Wert von Next in deiner Methode überprüfen.
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Bist du mit dem Debugger denn schon mal durch diese Routine BTGetRect gelaufen und hast geschaut, ab wann in Next auf einmal False steht?
Irgendwann muss das dort ja passieren
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Das stimmt leider nicht, denn Next = true und Next können unterschiedliche Ergebnisse liefern.
if Next ist wie if Next <> False und if Next = true stimmt nur dann, wenn in Next eine 1 enthalten ist.
Das ist auch der Grund, warum man nie auf true prüfen soll
Versuch doch mal die Variable umzubenennen in HasNext dann liest sich das viel besser und das (fehlerträchtige) = true sieht...
Forum: Programmieren allgemein
Delphi
by Sir Rufo,
4. Dez 2012
Entferne dringend mal das = true und probiere es nochmal
BTW Ist BtGetRec eine Funktion oder Procedure?