-
Notifications
You must be signed in to change notification settings - Fork 0
DataProcess
Jiowcl edited this page Dec 4, 2024
·
2 revisions
Procedure.i UnRARProcessDataProc(*Addr.Long, Size.i)
PrintN("Data Processed: " + PeekS(*Addr, -1, #PB_UTF8))
ProcedureReturn #True
EndProcedure
EnableExplicit
IncludeFile "../Core/UnRAR.pbi"
Global lpszLibUnRARDll.s = "UnRAR.dll"
Global lpszSampleFilePath.s = "TestFile/example.rar"
Global hLibrary.i = UnRARDllOpen(lpszLibUnRARDll)
Procedure.i UnRARProcessDataProc(*Addr.Long, Size.i)
PrintN("Data Processed: " + PeekS(*Addr, -1, #PB_UTF8))
ProcedureReturn #True
EndProcedure
If hLibrary
OpenConsole()
Define HeaderData.RARHeaderDataEx
Define ArchiveData.RAROpenArchiveDataEx
Define ArchiveDataCmt.s = Space(16383) + Chr(0)
ArchiveData\ArcNameW = @lpszSampleFilePath
ArchiveData\OpenMode = #RAR_OM_EXTRACT
ArchiveData\CmtBuf = @ArchiveDataCmt
ArchiveData\CmtBufSize = SizeOf(ArchiveDataCmt)
Define hRARArchiveHandle.i = RAROpenArchiveEx(hLibrary, @ArchiveData)
If ArchiveData\OpenResult = 0
RARSetProcessDataProc(hLibrary, hRARArchiveHandle, @UnRARProcessDataProc())
PrintN("Source: " + lpszSampleFilePath)
While RARReadHeaderEx(hLibrary, hRARArchiveHandle, @HeaderData) = 0
Define extractFile.s = PeekS(@HeaderData\FileNameW)
Define hUnRARProcCode.i = RARProcessFileW(hLibrary, hRARArchiveHandle, #RAR_TEST, "", "")
PrintN("Test File: " + extractFile)
Wend
EndIf
Input()
CloseConsole()
UnRARDllClose(hLibrary)
EndIf
EnableExplicit
IncludeFile "../../Core/Enums.pbi"
IncludeFile "../../Core/UnRARWrapper.pbi"
UseModule UnRARWrapper
Global lpszLibUnRARDll.s = "UnRAR.dll"
Global lpszSampleFilePath.s = "TestFile/example.rar"
Procedure.i UnRARProcessDataProc(*Addr.Long, Size.i)
PrintN("Data Processed: " + PeekS(*Addr, -1, #PB_UTF8))
ProcedureReturn #True
EndProcedure
If DllOpen(lpszLibUnRARDll)
OpenConsole()
Define HeaderData.RARHeaderDataEx
Define ArchiveData.RAROpenArchiveDataEx
Define ArchiveDataCmt.s = Space(16383) + Chr(0)
ArchiveData\ArcNameW = @lpszSampleFilePath
ArchiveData\OpenMode = #RAR_OM_EXTRACT
ArchiveData\CmtBuf = @ArchiveDataCmt
ArchiveData\CmtBufSize = SizeOf(ArchiveDataCmt)
Define hRARArchiveHandle.i = UnRARArchive::OpenArchiveEx(@ArchiveData)
If ArchiveData\OpenResult = 0
UnRARArchive::SetProcessDataProc(hRARArchiveHandle, @UnRARProcessDataProc())
PrintN("Source: " + lpszSampleFilePath)
While UnRARArchive::ReadHeaderEx(hRARArchiveHandle, @HeaderData) = 0
Define extractFile.s = PeekS(@HeaderData\FileNameW)
Define hUnRARProcCode.i = UnRARArchive::ProcessFileW(hRARArchiveHandle, #RAR_TEST, "", "")
PrintN("Test File: " + extractFile)
Wend
EndIf
Input()
CloseConsole()
DllClose()
EndIf