Also ich hab erstmal folgendes gemacht, wobei ich mir schon selber fast sicher bin, dass dies NICHT wirklich macht, was ich möchte.
Delphi-Quellcode:
case (FiComport > 0) of
true: begin
//Quellcode
end;
false: begin
if ChangedComportList.Count > 0 then
begin
for i := 0 to ChangedComportList.Count - 1 do
begin
if strtoint(ChangedComportList[i]) > 0 then
begin
MMC_COM_open(strtoint(ChangedComportList[i]),Bautrate);
FConnectionTest := TConnectionThread.create(strtoint(ChangedComportList[i]));
FConnectionTest.OnConnected := SetComport;
FConnectionTest.OnTimeOut := TimeOut;
//FConnectionTest.OnConnected := Form2.TischConnection;
FConnectionTest.WaitFor; // <-- Hier bin ich mir nicht wirklich sicher, ob dies das Programm dazu veranlasst zu warten, bis der Thread beendet ist.
if FiComport > 0 then
begin
result := true;
Break;
end
else MMC_close;
end;
end;
end;
end;
// Hier auch nochmal die geänderte Execute-Funktion des Threads
procedure TConnectionThread.Execute;
var bConnected: boolean;
c1, c2, i: integer;
begin
bConnected := false;
c1 := GetTickcount;
repeat
for i := 1 to 2 do
begin
MMC_setDevice(i);
if MST_moving = 1 then bConnected := true;
end;
if not bConnected then
begin
for i := 1 to 2 do
begin
MMC_setDevice(i);
MMC_SendCommand('FE2');
end;
end;
c2 := getTickCount;
until (abs(c2-c1) > TestTime) or bConnected;
if bConnected then doConnected;
if abs(c2 - c1) > TestTime then doTimeOut;
end;
Tja vieleicht kann jemand der sich damit besser auskennt mal das anschauen und mir sagen, ob der Thread jetzt wirklich wartet. Ich selber werde versuchen dies mal zu testen.
BAMatze
2. Account Sero