wird schwer, weil ich den Source schon auf API umgestellt habe. Ich kann dir aber mal den jetzigen Source geben. Musste halt nur die API Befehle gegen die PB Befehle austauschen:
Code: Alles auswählen
Procedure.s WritePack(strDatei.s, lngPaketSize.l, strTempFolder.s)
DefType.l PakArchiv, lngI, TimeLine, FileBuffer
DefType.s strArchiv, strTemp
DefType.API_FileHandle Orginal
If Right(strTempFolder, 1) <> "\": strTempFolder + "\": EndIf
strArchiv = strTempFolder + GetFilePart(Left(strDatei, FindString(strDatei, ".", 1) - 1)) + ".tmp"
If FileSize(strArchiv) => 0
API_FileReadEx(@Orginal, strDatei, FileSize(strDatei))
PakArchiv = RFile_Create(strArchiv, lngPaketSize)
FileBuffer = AllocateMemory(lngPaketSize+1)
DeleteFile(strArchiv)
While API_EOF(Orginal) = #False
RtlFillMemory_(FileBuffer, lngPaketSize, 0)
API_ReadData(@Orginal, FileBuffer, lngPaketSize)
RFile_Put(PakArchiv, lngI, FileBuffer)
lngI+1: If (lngI % 1000) = 0: Delay(1): EndIf
Wend
RFile_Close(PakArchiv)
API_CloseFile(@Orginal)
ProcedureReturn strArchiv
EndIf
EndProcedure
Procedure ReadPack(strSource.s, strDest.s, strTempFolder.s)
DefType.l lngI, PakArchiv, FileBuffer, TimeLine
DefType.s strArchiv
DefType.API_FileHandle Orginal
If Right(strTempFolder, 1) <> "\": strTempFolder + "\": EndIf
strSource = strTempFolder + strSource
strArchiv = strTempFolder
strArchiv + GetFilePart(Left(strSource, FindString(strSource, ".", 1) - 1)) + ".tmp"
strDest = strTempFolder + strDest
PakArchiv = RFile_Open(strArchiv)
API_FileCreate(@Orginal, strDest)
FileBuffer = AllocateMemory(RFile_RecordLength(PakArchiv)+1)
For lngI = 0 To RFile_RecCount(PakArchiv)
RFile_Get(PakArchiv, lngI, FileBuffer)
API_WriteData(@Orginal, FileBuffer, RFile_RecordLength(PakArchiv))
If (lngI % 10000) = 0: Delay(1): EndIf
Next
API_CloseFile(@Orginal)
RFile_Close(PakArchiv)
EndProcedure
Debug WritePack("C:\Test.exe", 5*1024, "C:\")
;ThreadPriority(CreateThread(@WritePack(), 0), 16)
Debug "---"
ReadPack("Test.exe", "Test2.exe", "C:\")
das Programm läuft wirklich schnell. Verarbeitet ne 700 MB Datei in ca. 2 Minuten. Schneller nicht weil meine HDD nicht mehr macht

.