Ich habe mit dem unteren code versucht Dateien zu splitten und wieder
zusammen zu setzen. Grundsätzlich funktioniert das auch mit Bildern, exe
usw. Nur Zip-Archive und manche Installer machen Probleme aller "Archiv
defekt". Das wird wohl daran liegen, dass die Checksumme der wieder
hergestellten Datei geprüft wird und nicht mehr stimmt!
Was muss ich beachten, damit die Checksumme der wieder hergestellten
Datei mit der Originaldatei übereinstimmt?
Code: Alles auswählen
DefaultPacketSize = 50000
SourceFile$ = "C:\irgendwas.datei"
DestinationFile$ = "C:\irgendwas neu.datei"
;Zerstückeln ======================================================
OpenFile(0, SourceFile$)
Size = Lof(0)
PacketCount = Size / DefaultPacketSize ;Paketanzahl ermitteln
PacketSize = Size / PacketCount ;genaue Paketgröße ermitteln
RestSize = Size - PacketSize * PacketCount ;den Rest der Datei in einem zus. Paket anlegen
*mem = AllocateMemory(PacketSize)
For i = 1 To PacketCount
ReadData(0, *mem, PacketSize)
OpenFile(i,"c:\Pack" + Str(i) + ".pck")
WriteData(i,*mem, PacketSize)
CloseFile(i)
Next
If restsize > 0
OpenFile(PacketCount+1,"c:\Pack" + Str(PacketCount+1) + ".pck")
WriteData(PacketCount+1,*mem, Restsize)
CloseFile(PacketCount+1)
EndIf
FreeMemory(*mem)
CloseFile(0)
;Zusammensetzen ===================================================
OpenFile(0, DestinationFile$)
*mem = AllocateMemory(PacketSize)
For i = 1 To PacketCount
OpenFile(i,"c:\Pack" + Str(i) + ".pck")
ReadData(i, *mem, PacketSize)
CloseFile(i)
WriteData(0,*mem,PacketSize)
Next
If restsize > 0
OpenFile(PacketCount+1,"c:\Pack" + Str(PacketCount+1) + ".pck")
ReadData(PacketCount+1, *mem, PacketSize)
CloseFile(PacketCount+1)
WriteData(0,*mem,Restsize)
EndIf
FreeMemory(*mem)
CloseFile(0)