Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prog bleibt beim Beenden hängen (https://www.delphipraxis.net/101689-prog-bleibt-beim-beenden-haengen.html)

quendolineDD 17. Okt 2007 13:32


Prog bleibt beim Beenden hängen
 
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

chericks 17. Okt 2007 14:15

Re: Prog bleibt beim Beenden hängen
 
Setz doch einfach in der logout prozedur eine globale Variable die du im Until-Teil mit Abfragst um aus der Schleife auszusteigen.

quendolineDD 17. Okt 2007 14:17

Re: Prog bleibt beim Beenden hängen
 
Mmh das klingt logisch. Manchmal sieht man den Wald vor lauter Bäumen nicht ;)
Ich bin gespannt, ob es noch andere Methoden gibt, dem Dilemma zu entgehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz