Einzelnen Beitrag anzeigen

quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#1

Prog bleibt beim Beenden hängen

  Alt 17. Okt 2007, 14:32
Grüße DP-Community
Unwissender sucht Wissenden

Also ich habe den Übeltäter, bzw. den Hergang schon beim Debuggen entdeckt.
Und zwar, wenn ich auf ausloggen drücke, dann wird folgende Proceduren ausgelöst:

Delphi-Quellcode:
procedure TForm1.btnCloseClick(Sender: TObject);
begin
btnStart.Enabled := true;
btnClose.Enabled := false;

equalTimer.Enabled := false;

Logout;
ActionList.Items.Add('@'+FormatDateTime('hh:mm', Now) + ': Logout erfolgreich!');
exit;
end;
Delphi-Quellcode:
procedure TForm1.LogOut;
var
browser: TWebBrowser;
begin
browser := TWebBrowser.Create(nil);
browser.ParentWindow := HWND(HWND_MESSAGE);
browser.Navigate('http://88.198.6.23/freewar/internal/logout.php');
  repeat
    Sleep(50);
    Application.ProcessMessages;
  until browser.ReadyState >= READYSTATE_COMPLETE;
browser.Free;
end;
Danach kann es sein, das er gerade in der Bewegungs-Prozedur war.
Hier ist nun das Dilemma, das er die Repeat-Schleife nicht mehr verlässt, und somit das Programm auch nicht normal beendet werden kann. Ich weiß aber nicht, wie ich dies verhindern kann.


Delphi-Quellcode:
procedure TForm1.move(a: string);
var
_move: TWebBrowser;
begin
{
destination:
MoveLeft
MoveRight
MoveUp
MoveUpLeft
MoveUpRight
MoveDownLeft
MoveDownRight
MoveDown
}


a:= 'javascript:'+a+'()';

_move := TWebBrowser.Create(nil);
_move.ParentWindow := HWND(HWND_MESSAGE);
_move.Navigate('http://88.198.6.23/freewar/internal/map.php');
  repeat
    Sleep(50);
    Application.ProcessMessages;
  until _move.ReadyState >= READYSTATE_COMPLETE;

_move.Navigate(a);
  repeat // In dieser Schleife
    Sleep(50); // bleibt er manchmal hängen
    Application.ProcessMessages; //
  until _move.ReadyState >= READYSTATE_COMPLETE; //

_move.Free;
end;

MfG
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat