Delphi-Quellcode:
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
BlockSize := 30*1024*1024;
i := 0;
while i < fs.Size do
begin
SetLength(S, BlockSize);
//fs.Position := i;
i2 := fs.Read(S[1], BlockSize);
SetLength(S, i2);
Inc(i, i2);
// hier bekommst du in S jeweils maximal 30 MB-Teilstücke
end;
finally
fs.Free;
end;
du kannst auch sowas machen wie "gib mir Block mit Nummer":
Delphi-Quellcode:
BlockNummer := X;
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
BlockSize := 30*1024*1024;
SetLength(Result, BlockSize);
fs.Position := BlockNummer * BlockSize;
i2 := fs.Read(Result[1], BlockSize);
SetLength(Result, i2);
// hier bekommst du in S jeweils den X-ten Block mit maximal 30 MB
finally
fs.Free;
end;
// oder auch erst hier (wäre gut für 'ne Funktion)
Und zum zusammensetzen mußt du dann nur alle Teilstücker nacheinander wieder mit fs.Write in einen Stream reinschreiben.
PS: oder such mal nach
FileSplittern, die machen ja sozusagen genau das Gleiche (nur halt mit 'nem anderem Zielformat der Teilstücke.
Aber warum will man eine sehr große Datei in vielen INIs speichern? (ich dank mal dafür gibt es besser geeignete Formate)