Czemu w programie nie działa mi Application.Terminate ? Używam tam komonentów indy tcp. Polecenie zamkniecia aplikacji wywoływane jest z procedury onExecute (TidTCPserver).
0
0
Może coś więcej na ten temat? Jakiś kod?
0
procedure Tgame.TCP_odbiorExecute(AThread: TIdPeerThread);
var
text:AnsiString;
ip:AnsiString;
begin
{operacje odbiorowe}
ip:=AThread.Connection.Socket.Binding.PeerIP;
text:=AThread.Connection.ReadLn();
{///operacje odbiorowe}
{...}
if param(text,0) = 'err' then
begin
{wystapil blad - server wyslal takowy komunikat}
blad_zatrzymaj();
case StrToInt(param(text,1)) of
0 : Application.MessageBox('Użytkownik jest już zalogowany!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
1 : Application.MessageBox('Podany IP jest już używany!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
2 : Application.MessageBox('Niepoprawna nazwa użytkownika i/lub hasło!','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
3 : Application.MessageBox('Error 4 - bledy w systemie potwierdzen','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
4 : Application.MessageBox('Zostałeś wylogowany zaloguj sie ponownie, Error 5','Błąd',MB_ICONERROR or MB_SYSTEMMODAL or MB_OK);
end;
Application.Terminate; {<<<<<<<<-------------}
end; {/wystapil blad}
{...}
if param(text,0) = 'wlgok' then
begin
{wylacz}
Application.Terminate; {<<<<<<<<-------------}
end;
{...}
end;
0
Zapewne w aplikacji masz inne uruchomione wątki, na pewno chodzi o
AThread: TIdPeerThread
więc spróbuj przed Application.Terminate zakończyć go.
0
Próbowałem Athread.Terminate, Athread.Free, Athread.Stop ale żande nie przynosi oczekiwamego rezultatu (praktycznie nic sie nie dzieje)