gracias Xesk, estaba pensando en algo similar. He quedado en algo como esto:
Código Delphi
[-]unit unPricipal;
***
type
TCompararMd5 = class(TThread)
protected
procedure Execute; override;
end;
TfrActualizador = class(TForm)
***
private
***
public
***
end;
var
nIdx: Integer;
procedure TCompararMd5.Execute;
var
aStream: TMemoryStream;
cLocal: String;
cWeb: TStringList;
nIndice: Integer;
begin
inherited;
nIndice := nIdx; 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; cWeb.LoadFromStream(aStream);
cWeb.Strings[0] := AnsiupperCase(cWeb.Strings[0]);
Resultado := cLocal = cWeb.Strings[0];
end
else
Resultado := False;
finally
FreeandNil(aStream);
FreeandNil(cWeb);
end;
end;
*****
procedure TfrActualizador.pActualizar(nIndice: Integer);
var
cUrl, cRuta: String;
thcMd5: TCompararMd5;
begin
thcMd5 := TCompararMd5.Create(True);
nIdx := nIndice;
thcMd5.Resume;
if not Resultado then
begin
cUrl := cHtml.Strings[nIndice] + '/' + cArchivo.Strings[nIndice];
cRuta := cRutaLocal.Strings[nIndice] + '\' + cArchivo.Strings[nIndice];
Bajar(cUrl, cRuta);
end;
end;
******
end.