Andrew Brunner escribió:
2009/3/20 Liyuán García Caballero <[email protected]>:

  
Check my Thread code:

procedure Tcheckonline.Execute;
begin
 sock.HTTPTunnelTimeout := 10000;
 query.FileName:=vpathdb;
 query.SQL:='SELECT * FROM computer WHERE name='''+vhost+''';';
 query.Open;
 if query.FieldByName('proxy').Value then
   begin
    if query.FieldByName('proxy_type').AsString = 'HTTP' then
       begin
        sock.HTTPTunnelIP := query.FieldByName('proxy_host').AsString;
        sock.HTTPTunnelPort := query.FieldByName('proxy_port').AsString;
        sock.HTTPTunnelUser := query.FieldByName('proxy_user').AsString;
        sock.HTTPTunnelPass := query.FieldByName('proxy_pass').AsString;
        sock.Connect(query.FieldByName('ip').AsString+
        ':'+query.FieldByName('port').AsString,'0');
       end;
    end else
    
         sock.Connect(query.FieldByName('ip').AsString,query.FieldByName('port').AsString);

  
    sock.SendString('noop;' + #10);
    if parse_proto('noop',sock.RecvPacket(500)) = 'ok' then
     begin
       vimg:=1;
       Synchronize(@putstatus);
     end else
     begin
      vimg:=0;
      Synchronize(@putstatus);
     end;
    

// Comments... You shouldn't terminate and free items here.  Let
execute run its course... // The on destruction, the resources should
be reclaimed there.
// See Destructor below.

  
end;

procedure Tcheckonline.putstatus;
begin
 fprincipal.tvnode.Items[fprincipal.tvnode.Items.FindNodeWithText(vhost).Index].SelectedIndex:=vimg;
 fprincipal.tvnode.Items[fprincipal.tvnode.Items.FindNodeWithText(vhost).Index].ImageIndex:=vimg;
end;

function Tcheckonline.parse_proto(command, data: String): String;
var
 str : String;
 ini, fin : Integer;
begin
 ini := Pos(command,data);
 fin := Pos('=',data);
 str := copy(data,ini,fin-ini);
 if str = command then
  Begin
   ini := Pos('=',data)+1;
   fin := Pos(';',data);
   str := copy(data,ini,fin-ini);
   Result := str;
  end
end;

constructor Tcheckonline.create(CreateSuspended: Boolean; ahost, apathdb:
String);
begin
 sock:= TTCPBlockSocket.Create;
 query := TSqlite3Dataset.Create(nil);
 vpathdb:=apathdb;
 vhost := ahost;
 FreeOnTerminate:=True;
 inherited Create(CreateSuspended);
end;

    

destructor TCheckOnline.Destroy;
begin
     sock.Free;
     query.Free;
    inherited Destroy;
end;

  

The same behavior, memory continues to grow :-(


--
Firma

Lic. Liyuán García Caballero
      Especialista B en Ciencias Informáticas

Excelencia en Software
Desoft Ciego de Ávila.
Calle 2 y Joaquín de Agüero. Ciego de Ávila. Cuba.
e-mail: [email protected]
jabber: [email protected]
SO:
Ubuntu Linux
_______________________________________________
Lazarus mailing list
[email protected]
http://www.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to