ich habe den quelltext etwas modifiziert und getestet mit erfolg...
hier erst mal der qulltext wie ich ihn nun habe um eine rar datei zu entpacken:
Code: Alles auswählen
;PB_unRAR - Paul Leischow, Sept.6, 2002
;RAR Archive extractor that uses the free UNRAR.DLL
;
#RAR_OM_LIST=0
#RAR_OM_EXTRACT=1
#RAR_SKIP=0
#RAR_TEST=1
#RAR_EXTRACT=2
#RAR_VOL_ASK=0
#RAR_VOL_NOTIFY=1
#RAR_DLL_VERSION=3
Procedure UnRar(Datei$)
Structure RARHeaderData
ArcName.b[260]
FileName.b[260]
Flags.l
PackSize.l
UnpSize.l
HostOS.l
FileCRC.l
FileTime.l
UnpVer.l
Method.l
FileAttr.l
*CmtBuf.s
CmtBufSize.l
CmtSize.l
CmtState.l
EndStructure
rarheader.RARHeaderData
Structure RAROpenArchiveData
ArcName.s
OpenMode.l
OpenResult.l
CmtBuf.s
CmtBufSize.l
CmtSize.l
CmtState.l
EndStructure
raropen.RAROpenArchiveData
Global hDLL.l
Global *RAROpenArchive.l
Global *RARCloseArchive.l
Global *RARReadHeader.l
Global *RARProcessFile.l
Global *RARSetChangeVolProc.l
Global *RARSetPassword.l
OpenLibrary(0,"C:\unrar.dll")
;*RAROpenArchive=IsFunction(0,"RAROpenArchive")
;*RARCloseArchive=IsFunction(0,"RARCloseArchive")
;*RARReadHeader=IsFunction(0,"RARReadHeader")
;*RARProcessFile=IsFunction(0,"RARProcessFile")
;*RARGetDllVersion=IsFunction(0,"RARGetDllVersion")
;*RARSetChangeVolProc.l = IsFunction(0, "RARSetChangeVolProc")
;*RARSetPassword.l = IsFunction(0, "RARSetPassword")
*RAROpenArchive.l = GetFunction(0, "RAROpenArchive")
*RARCloseArchive.l = GetFunction(0, "RARCloseArchive")
*RARReadHeader.l = GetFunction(0, "RARReadHeader")
*RARProcessFile.l = GetFunction(0, "RARProcessFile")
*RARSetChangeVolProc.l = GetFunction(0, "RARSetChangeVolProc")
*RARSetPassword.l = GetFunction(0, "RARSetPassword")
OPR$=Datei$
raropen\ArcName=OPR$
raropen\CmtBuf = Space(16384)
raropen\CmtBufSize = 16384
raropen\OpenMode=#RAR_OM_EXTRACT
hRAR=CallFunctionFast(*RAROpenArchive,@raropen)
If raropen\OpenResult
x = -1
Else
Repeat
stat=CallFunctionFast(*RARReadHeader,hRAR,@rarheader)
If stat=0
filelist.s=PeekS(@rarheader\FileName)
res=CallFunctionFast(*RARProcessFile,hRAR,#RAR_EXTRACT,"","C:\Temp\"+filelist.s)
EndIf
Until stat<>0
x = 1
EndIf
CallFunctionFast(*RARCloseArchive,hRAR)
CloseLibrary(0)
ProcedureReturn x
EndProcedure
Debug Unrar("C:\Dokumente und Einstellungen\Administrator\Desktop\Desktop.rar")
wie man in meinem projekt gleich sehn kann überprüfe ich alles (glaube ich zu mindest) ich überproüfe die rar datei anhand ihrer größe ob sie im besagtem verzeichnis vorhanden ist und ich berprüfe nochmal im debuger ob das verzechnis richtig ist....
ich überprüfe auch ob die unrar.dll da ist oder nicht...
oaky hier der link zum quellentext (derlink deshalb weil es etwas über 1k zeilen sind)...
http://midicenter.rpgf.eu/projekt.pb