Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 09-11-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 27
eduarcol Va por buen camino
gracias Xesk, estaba pensando en algo similar. He quedado en algo como esto:

Código Delphi [-]
unit unPricipal;

***

type

  //Hilo que compara los MD5 de los archivos
  TCompararMd5 = class(TThread)
     protected
        procedure Execute; override;
  end;

  //Formulario de soporte visual
  TfrActualizador = class(TForm)
    ***
  private
    { Private declarations }
    ***
  public
    { Public declarations }
    ***
  end; 

var
  nIdx: Integer;

//Compara los MD5 del archivo local y web y devuelve true o false
procedure TCompararMd5.Execute;
var
   aStream: TMemoryStream;
   cLocal: String;
   cWeb: TStringList;
   nIndice: Integer;
begin
   inherited;
   //Toma el MD5 del archivo local
   nIndice := nIdx; //Toma el valor de nIdx para que al ejecutarse otro hilo asegurarse que continua el mismo valor
   aStream := TMemoryStream.Create;
   cWeb    := TStringList.Create;
   try
      cLocal := AnsiUpperCase(MD5Sum(cRutaLocal.Strings[nIndice] + '\' + cArchivo.Strings[nindice]));
      if (Get(cHtml.Strings[nIndice] + '/pMd5.php?archivo=' + cArchivo.Strings[nIndice], aStream)) and (cLocal <> '') then
      begin
         aStream.Position:= 0; // <-- Hay que rebobinar el stream :-D
         cWeb.LoadFromStream(aStream);
         cWeb.Strings[0] := AnsiupperCase(cWeb.Strings[0]);
         //Compara el md5 del local con el web
         Resultado := cLocal = cWeb.Strings[0];
      end
      else
         Resultado := False;
   finally
      FreeandNil(aStream);
      FreeandNil(cWeb);
   end;
end;

*****

//Procedimiento donde se crea y se llama el hilo
procedure TfrActualizador.pActualizar(nIndice: Integer);
var
   cUrl, cRuta: String;
   thcMd5: TCompararMd5;
begin
   //Crea el hilo para comparar los MD5
   thcMd5 := TCompararMd5.Create(True);
   nIdx := nIndice;
   thcMd5.Resume;
   //Actualiza el sistema desde internet
   if not Resultado then
   begin
      //Descargar el archivo de la web
      cUrl := cHtml.Strings[nIndice] + '/' + cArchivo.Strings[nIndice];
      cRuta := cRutaLocal.Strings[nIndice] + '\' + cArchivo.Strings[nIndice];
      Bajar(cUrl, cRuta);
   end;
end;

******

end.
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tthread Vs. Application -> ProcessMessages(); Peterman Varios 8 31-05-2007 03:05:03
TThread y cerrar una ventana previamente abierta gluglu OOP 1 14-05-2007 19:19:54
Execute Immediate jjarias Firebird e Interbase 3 27-04-2006 15:14:07
Como Liberar un Tthread???? AGAG4 Varios 3 25-04-2005 22:16:40
Lio con TThread diegofhernando Varios 0 20-01-2004 17:58:35


La franja horaria es GMT +2. Ahora son las 16:03:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi