Seite 1 von 1

7-Zip Proc Funktioniert nicht

Verfasst: 22.07.2022 22:13
von al90
Hallo Leute,

Hab mal was älteres "ausgegraben" und wollte es wieder zum laufen bringen. Aber irgendwie geht es nicht.
Es scheitert beim Öffnen des Archives schon. Die Dll selbst kann noch geöffnet werden. Hat vielleicht iregendjemand
eine Idee woran es liegen könnte. Ich bin zugegebener maßen nicht so der Experte auf dem Gebiet von Dll's und so weiter.
Hier mal der Code:

Code: Alles auswählen

; Prototypen.

Prototype SevenZipOpenArchive(Arg1.i, Arg2$, Arg3.i)
Prototype SevenZipFindFirst(Arg1.i, Arg2$, Arg3.i)
Prototype SevenZipFindNext(Arg1.i, Arg2.i)
Prototype SevenZipCloseArchive(Arg1.i)
Prototype SevenZip(Arg1.i, Arg2$, Arg3$, Arg4.i)
Prototype SevenZipGetAttribute(Arg1.i)
Prototype SevenZipGetVersion()
Prototype SevenZipGetSubVersion()

Structure SEVENZIPINFO
  dwOriginalSize.i
  dwCompressedSize.i
  dwCRC.i
  uFlag.i
  uOSType.i
  wRatio.w
  wDate.w
  wTime.w
  szFileName.c[#MAX_PATH+1]
  dummy1.c[3]
  szAttribute.c[8]
  szMode.c[8]
EndStructure

SEVENINFO.SEVENZIPINFO
Dll$="c:\FastBackup\7-zip_DLL\7-zip64.dll"
ZipFile$="c:\Downloads\disk-activity-indicator.zip"

If OpenLibrary(0, Dll$)
  SevenZipOpenArchive.SevenZipOpenArchive = GetFunction(0, "SevenZipOpenArchive")
  SevenZipFindFirst.SevenZipFindFirst = GetFunction(0, "SevenZipFindFirst")
  SevenZipFindNext.SevenZipFindNext = GetFunction(0, "SevenZipFindNext")
  SevenZipCloseArchive.SevenZipCloseArchive = GetFunction(0, "SevenZipCloseArchive")
  HARC.i = SevenZipOpenArchive(0, ZipFile$, 0)
  If HARC
    state = SevenZipFindFirst(HARC, "", @SEVENINFO)
    While state = 0
      a$=PeekS(@SEVENINFO\szFileName)

Debug a$

      size=SEVENINFO\dwOriginalSize & $FFFFFFFF
      state = SevenZipFindNext(HARC, @SEVENINFO)
    Wend
    SevenZipCloseArchive(HARC)
  EndIf
  CloseLibrary(0)
EndIf
Und hier mal der Download-Link zur DLL:
http://ayakawa.o.oo7.jp/soft/ntutil.html#7z

Ist zwar eine Japanische seite, aber der Link ist deutlich zu erkennen.

Re: 7-Zip Proc Funktioniert nicht

Verfasst: 23.07.2022 11:30
von ccode_new
Try this:

Code: Alles auswählen

; Prototypen.

Structure tagINDIVIDUALINFO
    dwOriginalSize.l
    dwCompressedSize.l
    dwCRC.l
    uFlag.l
    uOSType.l
    wRatio.i
    wDate.i
    wTime.i
    *szFilename
    *dummy1
    *szAttribute
    *szMode
  EndStructure

Prototype SevenZipOpenArchive(Arg1.l, Arg2.p-utf8, Arg3.l)
Prototype SevenZipFindFirst(Arg1.l, Arg2.p-utf8, *Arg3.tagINDIVIDUALINFO)
Prototype SevenZipFindNext(Arg1.l, *Arg2.tagINDIVIDUALINFO)
Prototype SevenZipCloseArchive(Arg1.l)
Prototype SevenZip(Arg1.l, Arg2.p-utf8, Arg3.p-utf8, Arg4.l)
Prototype SevenZipGetAttribute(Arg1.l)
Prototype SevenZipGetVersion()
Prototype SevenZipGetSubVersion()

Structure SEVENZIPINFO
  dwOriginalSize.i
  dwCompressedSize.i
  dwCRC.i
  uFlag.i
  uOSType.i
  wRatio.w
  wDate.w
  wTime.w
  szFileName.c[#MAX_PATH+1]
  dummy1.c[3]
  szAttribute.c[8]
  szMode.c[8]
EndStructure

SEVENINFO.SEVENZIPINFO
Dll$="7-zip64.dll"
ZipFile$="test.zip"

If OpenLibrary(0, Dll$)
  SevenZipOpenArchive.SevenZipOpenArchive = GetFunction(0, "SevenZipOpenArchive")
  SevenZipFindFirst.SevenZipFindFirst = GetFunction(0, "SevenZipFindFirst")
  SevenZipFindNext.SevenZipFindNext = GetFunction(0, "SevenZipFindNext")
  SevenZipCloseArchive.SevenZipCloseArchive = GetFunction(0, "SevenZipCloseArchive")
  HARC.i = SevenZipOpenArchive(0, ZipFile$,0)
  If HARC
    state = SevenZipFindFirst(HARC, "", @SEVENINFO)
    While state = 0
      a$=PeekS(@SEVENINFO\szFileName, -1, #PB_UTF8)

      Debug a$

      size=SEVENINFO\dwOriginalSize & $FFFFFFFF
      state = SevenZipFindNext(HARC, @SEVENINFO)
    Wend
    SevenZipCloseArchive(HARC)
  EndIf
  CloseLibrary(0)
EndIf

Re: 7-Zip Proc Funktioniert nicht

Verfasst: 23.07.2022 17:39
von al90
@ccode_new

Ja das klappt Super. :allright:
Dankeschön! :wink: