Ich verstehe nicht, weshalb der Parameter CntParts überhaupt übergeben wird.
Angenommen, ich möchte eine Datei mit 5 GB in 650 MB grosse Stücke unterteilen.
Dann gehe ich doch so vor (Pseudocode):
Delphi-Quellcode:
Datei öffnen
while not eof do
begin
ErzeugeNeueZieldatei;
readsize := 0
do
LesePuffer; // 8 kB lesen
SchreibeZieldatei; // bis zu 8 kB schreiben
if readBytes <> Buffersize then break;
readsize := readsize + readBytes;
until readsize >= 650 MB;
SchlieseZielDatei;
end;
Auf diese Art braucht man keine For-Schleife und entgeht den ganzen Problemen mit Int64 Werten.
Kleiner Nachteil meiner Lösung: die Grösse der Zieldatei muss ein Vielfaches der Puffergrösse sein.
Mit etwas Zusatzaufwand kann man das aber auch lösen.