Ich bin mir noch nicht ganz sicher ob es nicht doch an mir liegt, aber ich glaube ich habe einen Bug gefunden.
In der Execute-Prozedur eines Threads passiert u.a. folgendes:
Delphi-Quellcode:
c:=qry.RecordCount;
setlength(self.Machines,c);
qry.First;
for I := 0 to c - 1 do begin
tmps:=utf8toansi(qry.FieldByName('phonenumber').AsString);
p:=localFindMachine(tmps);
EnterMainThread;
try
p^.isDeleted:=true;
p^.isactive:=false;
finally
LeaveMainThread;
end;
qry.Next;
end;
Soweit ich das nun verfolgen konnte, hat c zunächst den erwarteten Wert - nämlich die Zahl der Datensätze aus meiner
SQL-Abfrage. Nach LeaveMainThread hat c aber den Wert 0.
Vielleicht habe ich aber auch die Funktionsweise von EnterMainThread / LeaveMainThread falsch verstanden.