Ver Mensaje Individual
  #11  
Antiguo 19-07-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Reputación: 0
Yulexis Va por buen camino
Saludos Neftali y mamcx.
Con el siguiente código que encontré en la red según los "puntos de control" que he puesto después de cada acción me dice que la descarga se ha realizado. Al final compruebo si el archivo .zip existe y si me dice que si y lo extraigo.
Recordarles que el último error que lanzaba era el siguiente: "No mapping for the Unicode character exists in te target multi-byte code page."
El código que encontré y que le muestro a continuación también me generaba ese error y lo resolví agregándole el segundo parámetro a la función Create:


Código Delphi [-]
XMLRequest := TStringStream.Create( XMLRqst, TEncoding.UTF8 );


Hasta ahora las pruebas que he realizado no han fallado y siempre han dado el mismo resultado, por lo que el tema principal del hilo fue RESUELTO (Tengo que meter todo en un hilo de ejecución claro).


Código Delphi [-]
var
  XMLRqst     : String;
  XMLRequest  : TStringStream;
  idHTTP      : TIdHTTP;

  ruta, ruta_imagen : string;
  Mi_Arch : TIniFile;
  i : Integer;
  Zip :TZipFile;
begin
  XMLRqst := '';
  ForceDirectories( Directorio_raiz );
  Memo1.Lines.Add('Directorio de la actualización creado.');

  ruta := Directorio_raiz + 'update.zip';
  Memo1.Lines.Add('Ruta donde guardar el .zip: ' + ruta);

  try
    XMLRequest := TStringStream.Create( XMLRqst, TEncoding.UTF8 );
    try
      idHTTP := TIdHTTP.Create;
      try
        idHTTP.ReadTimeout     := 60000;{ IdTimeoutInfinite; }
        idHTTP.ConnectTimeout  := 60000;
        idHTTP.HandleRedirects := True;
        idHTTP.Compressor := TIdCompressorZLib.Create(idHTTP);

        Memo1.Lines.Add('Iniciando descarga...');

        idHTTP.Get( 'Act.zip', XMLRequest );
        XMLRequest.SaveToFile(ruta);
        if FileExists(ruta) then Memo1.Lines.Add('Descargado en: ' + ruta);

      finally
        idHTTP.Free;
      end;
    finally
      XMLRequest.Free;
    end;
  except
    on E : Exception do
    begin
      ShowMessage( 'exception : '#13 + E.Message );
    end;
  end;

  Memo1.Lines.Add('Extrayendo archivo...');
  if FileExists(ruta) then
  begin
    Memo1.Lines.Add('Existe: ' + ruta);
    Zip := TZipFile.Create;
    Try
      Zip.Open (ruta, zmRead);
      Zip.ExtractAll( Directorio_raiz );
      Memo1.Lines.Add('Archivo extraido.');
      Finally
      Zip.Free;
    End;
  end
  else
    Memo1.Lines.Add('NO existe: ' + ruta);

  Memo1.Lines.Add('Iniciando creación de entradas...');
  ruta := Directorio_raiz + 'Entradas.ini';
  if FileExists( ruta ) then
  begin
    Memo1.Lines.Add('Existe: ' + ruta );
    Mi_Arch := TIniFile.Create(ruta );
    Mi_Arch.ReadSections(ListBox1.Items);
    for I := 0 to ListBox1.Items.Count -1 do
      begin
        ruta_imagen :=  Mi_Arch.ReadString(ListBox1.Items[i],'img','');
        Memo1.Lines.Add('Creando anuncio ' + IntToStr(i));
        Memo1.Lines.Add('... ' + ruta_imagen);
        Crea_Anuncio(Directorio_raiz + ruta_imagen  ,ListBox1.Items[i], Mi_Arch.ReadString(ListBox1.Items[i],'descrip',''));
      end;
  end;

end;

Como les comenté, parece que ha descargado el archivo y que logra extraerlo. Pero... (como siempre)...
Entre los archivos existe un .ini (los .ini de toda la vida) que es el que trae la configuración de toda la actualización. Este señor me dice que existe, pero no logro leerlo Se extrae en: /data/data/com.embarcadero.prueba/files/ENTRADAS/Entradas.ini
Responder Con Cita