Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
FreePascal / Lazarus
|
Re: Text Dateien (500mb+) in einen String einlesen
13. Okt 2004, 16:05
Delphi-Quellcode:
try
SrcStream:=TFileStream.Create(FileName,fmOpenread or fmShareDenyNone);
DestStream:=TFileStream.Create(FileName,fmCreate);
GetMem(Buffer, 1024);
try
while (SrcStream.Position < SrcStream.Size) do //was ist mit dem letzten Byte?
begin
if SrcStream.Size - SrcStream.Position > BlockSize then //Was ist BlockSize?
//Sonst kann ich nicht
//weiterhelfen
Len := BlockSize
else
Len := SrcStream.Size - SrcStream.Position;
SrcStream.ReadBuffer(Buffer^, Len); //Rückgabewert speichern
//ab hier würde ich nun weiter einlesen, aber überprüfen, ob die
//zuletzt eingelesene SQL-Anweisung schon zu ende ist und dann nicht mehr
//weiter einlesen, zu bisher gespeicherten Rückgabewert jeweils noch
//dazuaddieren
//Die Summe der Rückgabewerte ist nun die Anzahl der zu verarbeitenden
//Bytes, bitte beachten
//Buffer abarbeiten
DestStream.WriteBuffer(Buffer^, Len);
end;
finally
FreeMem(Buffer);
end;
finally
SrcStream.Free;
DestStream.Free; //wenn beim Erstellen des SrcStream ein Fehler auftritt, wurde DestStream noch nicht erstellt und es kommt zu einer AV
end;
Siehe Kommentare.
Felix Alter
|
|
Zitat
|