/ / JEDI JCL La biblioteca de compresión no abre archivos de archivos distribuidos: delphi, compresión, jedi, jedi-code-library

La librería JEDI JCL Compression no abrirá archivos de almacenamiento extendidos - delphi, compression, jedi, jedi-code-library

Resumen:

Estoy teniendo problemas para obtener la biblioteca de compresión JCL para abrir cualquier archivo distribuido. Presenta el error "(0000001) Función incorrecta" como se define en borlands "windows.pas";

scenerios

Un solo archivo comprimido usando el ejemplo de compresión JCL.
-Se descomprimirá tanto en el ejemplo JCL como en el gui 7zip.

Un archivo distribuido sobre 7 archivos comprimidos usando el ejemplo de compresión JCL.
- Descomprimirás solo en el gui 7zip. No puede descomprimir usando el ejemplo JCL.

Un solo archivo comprimido usando el 7zip gui.
-Se descomprimirá tanto en el ejemplo JCL como en el gui 7zip.

Un archivo distribuido comprimido en 7 archivos utilizando la interfaz gráfica de 7zip.
- Descomprimirás solo en el gui 7zip. No puede descomprimir utilizando JCL

Información extra

La demostración de compresión JCL es la que se incluye con la biblioteca JCL.
JCL: 2.2.1.3970
7zip dll: 9.20.0.0 y 9.65.0.0
Ejemplo de nombre de archivo en conjunto de archivos distribuidos: "Test Archive.7z.002"
Probado con compresión tanto .tar como .7z
Se utilizaron diferentes tamaños de archivo. 2048 bytes y 2048KB
Delphi 2009.

Este es el código que estoy usando. Es a partir de la demo de compresión JCL. Se produce un error en la línea "TJclDecompressArchive (FArchive) .ListFiles".

procedure TFormMain.ActionOpenROExecute(Sender: TObject);
var
ArchiveFileName, Password: string;
AFormat: TJclDecompressArchiveClass;
SplitArchive: Boolean;
begin
if OpenDialogArchiveRO.Execute then
begin
CloseArchive;

ArchiveFileName := OpenDialogArchiveRO.FileName;
SplitArchive := AnsiSameText(ExtractFileExt(ArchiveFileName), ".001");
if SplitArchive then
ArchiveFileName := ChangeFileExt(ArchiveFileName, "");

AFormat := GetArchiveFormats.FindDecompressFormat(ArchiveFileName);

if AFormat <> nil then
begin
if SplitArchive then
ArchiveFileName := ArchiveFileName + ".%.3d";

InputQuery("Archive password", "Value", Password);

FArchive := AFormat.Create(ArchiveFileName, 0, SplitArchive);
FArchive.Password := Password;
FArchive.OnProgress := ArchiveProgress;

if FArchive is TJclDecompressArchive then
TJclDecompressArchive(FArchive).ListFiles
else
if FArchive is TJclUpdateArchive then
TJclUpdateArchive(FArchive).ListFiles;

ListView1.Items.BeginUpdate;
try
while ListView1.Items.Count < FArchive.ItemCount do
ListView1.Items.Add;
finally
ListView1.Items.EndUpdate;
end;
end
else
ShowMessage("not a supported format");
end;
end;

El ejemplo de JCL sabe sobre los archivos y los abre. (formato zip usado en la imagen. Mismo problema). Imagen de archivos abiertos por ejemplo de compresión JCL.

¿Tal vez alguien ha encontrado esto antes?
¿Alguien puede apuntarme en la dirección correcta por favor?
Gracias por tu tiempo.

Scott M.

Respuestas

2 para la respuesta № 1

Este error existe en Project JEDI - Issue Tracker.

http://issuetracker.delphi-jedi.org/bug_view_advanced_page.php?bug_id=5137

Dos posibles soluciones

  • Actualice su instalación JCL a última construcción diaria
  • Comenta la siguiente línea en JclCompression.pas a procedure TJclSevenzipDecompressArchive.OpenArchive; y reconstruir los paquetes.

    // ¡Comenta esta línea!
    SevenzipCheck (InArchive.Open (AInStream, @MaxCheckStartPosition, OpenCallback));