PDA

Ver la Versión Completa : leer texto o ver foto dentro de un rar


DarkSton
31-10-2017, 14:43:25
hola amigos de clubdelphi bueno quiero saver si hay una forma de leer un texto dentro de un rar ejemplo:
tengo un archivo test.rar con clave y dentro del rar hay un texto o una foto , hay forma de leer el texto o ver la foto desde un formen delphi ?,

movorack
31-10-2017, 16:05:27
Hola, Si se puede.

En la clase TZipFile (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Zip.TZipFile) tienes la función Read (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Zip.TZipFile.Read) y puedes llamarla con un Stream (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TStream)


procedure Read(const FileName: string; out Bytes: TBytes); overload;
procedure Read(Index: Integer; out Bytes: TBytes); overload;
procedure Read(const FileName: string; out Stream: TStream; out LocalHeader: TZipHeader); overload;
procedure Read(Index: Integer; out Stream: TStream; out LocalHeader: TZipHeader); overload;


Para listar los archivos dentro, debes abrir el Zip y recorrerlo


Zip := TZipFile.Create;
try
Zip.Open(ZipFileName, TZipMode.zmRead);
For FileName in Zip.FileNames do
begin
//Acá validas el archivo que quieres leer y ejecutas tu rutina dependiendo del tipo de archivo.
end;
finally
Zip.Close;
FreeAndNil(Zip);
end;

DarkSton
31-10-2017, 16:08:48
esto es para delphi7 me podrias dejas un ejemplo dentro del
begin
//Acá validas el archivo que quieres leer y ejecutas tu rutina dependiendo del tipo de archivo.
end;
:D

movorack
31-10-2017, 16:51:08
esto es para delphi7

Estoy muy apenado contigo no haber tenido en cuenta las versiones anteriores y ponerte a comentar nuevamente para que especifiques el IDE con el que trabajas. De todos modos, podrías revisar la ZipMaster (http://www.delphizip.org/192/v192.html) a ver si con esa librería puedes hacer una lectura en memoria.

me podrias dejas un ejemplo dentro del
begin
//Acá validas el archivo que quieres leer y ejecutas tu rutina dependiendo del tipo de archivo.
end;
:D

Claro no faltaba mas. Aunque el ejemplo es con TZipFile. Tendrías que ver como se hace con la librería que decidas usar y sea compatible con D7


Zip := TZipFile.Create;
try
Zip.Open(ZipFileName, TZipMode.zmRead);
For FileName in Zip.FileNames do
begin
if ExtractFileExt(FileName).Trim.ToUpper = '.TXT' then
begin
TempStringList := TStrings.Create;
try
Zip.Read(FileName, AStream, ALocalHeader);
TempStringList.LoadFromStream(AStream);
ShowMessage(TempStringList.Text);
finally
FreeAndNil(TempSTringList);
end;
end;
end;
finally
Zip.Close;
FreeAndNil(Zip);
end;

DarkSton
03-11-2017, 11:50:36
El error es mio por no decir la version de delphi que estoy usando ,hoy lo probare .