Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 0
Yulexis Va por buen camino
Pido disculpas por las molestias pero sigo enredado. Bueno Nestalí... no tengo otra que seguirte molestando.

Con el tema de generar un LOG no hay problema porque lo entendí a la primera y ya había realizado algo parecido para determinar donde me generaba el error. Es como les decía, todo funciona menos la descarga.
Ya no me da el error que me daba al inicio (no he hecho nada). Ahora o se cierra en cuanto pincho el botón, o se bloquea y tengo que terminarlo.
Este un código que encontré pero que es prácticamente lo mismo pero con tratamiento de errores. Igual no me funciona:
Código Delphi [-]
procedure DownLoad (url, guardar_en : string);
var
  Stream: TMemoryStream;
  hc: THTTPClient;
begin
  Stream := TMemoryStream.Create;
  hc := THTTPClient.Create;
  try
    try
      hc.Get(url, Stream);
      Stream.SaveToFile(guardar_en);
    except
      on e: Exception do
        ApplicationShowException(e);
    end;
  finally
    hc.Free;
    Stream.Free;
  end;
end;


El error que me genera es el siguiente:
"No mapping for the Unicode character exists in te target multi-byte code page."

Ni idea
En Windows funciona, el problema es en Android. Al final a la descarga la voy a tener que meter dentro de un hilo porque que a se quede bloqueada la app mientras descarga (si por fin logro que descargue) no le veo gracia.
Si alguno conoce cómo realizar esta descarga favor de ponerme el código. Es la parte fundamental de la app que estoy realizando por lo que sin esto no puedo seguir.
Responder Con Cita
  #2  
Antiguo 16-07-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Revisa este código de Luis Navarro, para descargar imágenes en Android. Yo lo he usado en esta aplicación de Android (sin ser un servicio) y funciona perfectamente.
A ver si con esto consigues realizar la descarga.


Revisa también este mensaje a ver si te sirve esa solución.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 19-07-2018
Yulexis Yulexis is offline
Miembro
 
Registrado: sep 2016
Posts: 19
Poder: 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
Respuesta



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
Stream read error cuando asigno un valor a TTetheringAppProfile.Resources breadagast Varios 0 13-10-2015 13:04:11
"Stream read error" al descodificar weke Varios 2 23-05-2012 00:14:42
Stream read error felipep Varios 0 23-09-2007 02:31:07
stream read error al hacer TBlobField gabirojas Conexión con bases de datos 0 07-09-2007 03:41:54
como se puede solucionar "Stream read error"? JuanErasmo Firebird e Interbase 0 08-08-2006 15:40:25


La franja horaria es GMT +2. Ahora son las 22:39:04.


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