Application.Terminate nie działa

Odpowiedz Nowy wątek
2006-08-01 18:45
0

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).

Pozostało 580 znaków

2006-08-01 19:13
0

Może coś więcej na ten temat? Jakiś kod?


Pozostało 580 znaków

2006-08-01 19:53
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;

Pozostało 580 znaków

2006-08-01 20:43
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.


Pozostało 580 znaków

2006-08-02 19:43
0

Próbowałem Athread.Terminate, Athread.Free, Athread.Stop ale żande nie przynosi oczekiwamego rezultatu (praktycznie nic sie nie dzieje)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0