Ver Mensaje Individual
  #3  
Antiguo 22-10-2010
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Reputación: 18
petete2008 Va por buen camino
Código:
function DownloadToStream(Url: string; Stream: TStream): Boolean;
var
  hNet: HINTERNET;
  hUrl: HINTERNET;
  Buffer: PChar;
  BytesRead: DWORD;
  i: Integer;
begin
  Result := FALSE;
  hNet := InternetOpen('agent', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if (hNet <> nil) then
  begin
    hUrl := InternetOpenUrl(hNet, PChar(Url), nil, 0,
      INTERNET_FLAG_RELOAD, 0);
    if (hUrl <> nil) then
    begin
      GetMem(Buffer,100*1024);
      try
        while (InternetReadFile(hUrl, Buffer, 100*1024, BytesRead)) do
        begin
          if (BytesRead = 0) then
          begin
            Result := TRUE;
            break;
          end;
          // Aqui sustituimos el caracter nulo por un espacio
          for i:= 0 to BytesRead - 1 do
            if Buffer[i] = #0 then
              Buffer[i]:= #32;
          Stream.WriteBuffer(Buffer^,BytesRead);
        end;
      finally
        FreeMem(Buffer);
      end;
      InternetCloseHandle(hUrl);
    end;
    InternetCloseHandle(hNet);
  end;
end;

    try
      DownloadToStream(url,Stream);
      Memo1.Lines.Text:= Stream.DataString;
    finally
      Stream.Free;
 
    end;
Quiero que si la web no responde, en 30 segundos se detenga y se quede a la espera durante 30 minutos hasta que vuelva a intentarlo de nuevo.
Gracias
Responder Con Cita