2011-07-04 6 views
11

요약 : 내가 어떤 아카이브 스팬 열 JCL 압축 라이브러리를 얻을하는 데 문제가 있어요JEDI JCL 압축 라이브러리 늘 스팬 열려 아카이브 파일

. borlands 'windows.pas'에 정의 된대로 "(0000001) Incorrect Function"오류가 표시됩니다.

scenerios :

JCL을 예 압축을 사용하여 압축 단일 아카이브.
는 JCL 예와 7zip과 GUI를 모두 압축 해제 줄래.

는이 JCL 예 압축을 사용하여 압축 파일 7 위에 보관 스팬.
- 7zip GUI에만 압축을 풉니 다. JCL 예제를 사용하여 압축을 풀지 못했습니다.

7zip과 GUI를 사용하여 압축 된 하나의 아카이브.
는 JCL 예와 7zip과 GUI를 모두 압축 해제 줄래.

는 A는 7zip과 GUI를 사용하여 7 개 파일을 통해 압축 된 아카이브를 스팬.
- 7zip GUI에만 압축을 풉니 다. JCL

JCL을 압축 데모가 하나가 JCL 라이브러리에 포함되어

추가 정보를 사용하여 압축을 해제하지 못한다.
JCL : 2.2.1.3970
7zip과의 DLL : 스팬 아카이브 세트에서 9.20.0.0 및 9.65.0.0
예제 파일 이름 : "테스트 Archive.7z.002는"
가 된 .tar 및
다른 .7z 압축 모두 시도 파일 크기가 사용되었습니다. 2048 바이트 및 2048KB
델파이 2009.

이것은 사용하는 코드입니다. 그 JCL 압축 데모에서. '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; 

JCL 예제는 파일에 대해 알고 있고 열어 둡니다. (이미지에 사용 된 zip 형식의 동일한 문제). Image of files opened by JCL compression example.

는 는 는

Prehaps 누군가가 전에이 건너왔다?
누구든지 올바른 방향으로 나를 가리켜 주실 수 있습니까?.
감사합니다. 이슈 트래커 -

스콧 M.

+0

압축 해제 코드를 게시하십시오. –

+0

'FArchive'의 클래스 이름은 무엇입니까? 'TxxxDecompressArchive.ListFiles' 메소드가 예외를 발생시키는 곳은 어디입니까? –

+1

@Lieven 예외는'SevenzipCheck()'호출시'procedure TJclSevenzipDecompressArchive.OpenArchive'에서 온 것입니다. – TridenT

답변

2

이 버그는 프로젝트 JEDI 존재합니다.

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

두 가지 가능한 해결 방법

  • procedure TJclSevenzipDecompressArchive.OpenArchive;에서 latest daily build
  • 코멘트에 JclCompression.pas에 다음 줄을 당신의 JCL 설치를 업그레이드 패키지를 다시 빌드합니다.

    //이 줄을 주석 달기!
    SevenzipCheck (InArchive.Open (AInStream, @MaxCheckStartPosition, OpenCallback)));