ich krieg den String (hier im Code ist er zum erstellen) nicht umgestellt zum auslesen eines Archiv´s,
mit der Kommanodzeilen Version von 7zip.
Klappt einfach nicht !
Gruss Werner
Code: Alles auswählen
;Modified version of Oryaaa's 7zip code - http://www.purebasic.fr/english/viewtopic.php?p=181484#181484
DataSection
zip:
IncludeBinary "7za.exe"
zip_e:
EndDataSection
Procedure.b SevenZip_Archive(archive.s, target.s, compression.b=9)
Protected file.l , param.s , zip_Run.l , runfile.s
;Check if archive path is a folder
directory$ = GetPathPart(archive)
ExamineDirectory(0, directory$, "*.*")
If Not IsDirectory(0)
MakeSureDirectoryPathExists_(@directory$)
;CreateDir(directory$)
EndIf
param.s = "a -mx=" + Str(Compression) + " " + Chr(34) + archive + Chr(34) + " " + Chr(34) +target+ Chr(34)
runfile.s = GetTemporaryDirectory() + Str(Date()) + "\7za.exe"
CreateDirectory(GetPathPart(runfile))
file.l = CreateFile(#PB_Any, runfile)
If file
WriteData(file, ?zip, ?zip_e-?zip)
CloseFile(file)
workingdir$=GetPathPart(Archive)
zip_Run = RunProgram(runfile, param,workingdir$, #PB_Program_Open|#PB_Program_Hide)
While ProgramRunning(zip_Run)
Delay(10)
Wend
Debug ProgramExitCode(zip_Run) ; Fehlermeldung : 0=OK - 1=unvollständig - 2=Fatal - 7=Command line error - 8 zu wenig Memory - 255=User stoppt Prozess
CloseProgram(zip_Run)
Repeat
Result = DeleteDirectory(GetPathPart(runfile),"")
Until Result <> 0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
quell_dateipfad$="C:\Dokumente und Einstellungen\"+GetEnvironmentVariable("USERNAME")+"\desktop\"+"test" ; Dateipfad zum Desktop
Debug SevenZip_Archive(quell_dateipfad$+".zip",quell_dateipfad$,9)