So, ich hab doch tatsächlich 'ne richtige Vermutung gehabt ... es mußten noch 2 NOTs rein -.-''
Und weil ich schon mal dabei war, hab ich auch gleich noch ein bissl was optimiert/verändert (z.B. IFs > CASE).
Außerdem hatte ich mir noch ein bissl Zeit zum Testen genomen und es scheint doch tatsächlich so zu funktionieren, wie ich es mir ausgedacht hab.
Wie gesagt, bei der Verwendung gibt es nicht besonderlich viel zu beachten (außer beim Append).
Code:
Var T: TextFile;
[color=red]AssignFile64[/color](T, [color=gray]Filename[/color]); [color=green]// wegen des Append's[/color]
Append(T);
Write(T, [color=gray]S[/color]);
[color=gray]Position[/color] := [color=red]FilePos64[/color](T);
CloseFile(T);
Code:
Var F: File of Byte;
AssignFile(F, [color=gray]Filename[/color]);
Rewrite(F);
[color=red]Seek64[/color](F, [color=gray]Position[/color]);
Write(F, [color=gray]i[/color]);
[color=gray]Position[/color] := [color=red]FilePos64[/color](F);
CloseFile(F);
Code:
Var F: File of Byte;
AssignFile(F, [color=gray]Filename[/color]);
Reset(F);
[color=red]Seek64[/color](F, [color=gray]Position[/color]);
Read(F, [color=gray]i[/color]);
[color=gray]Position[/color] := [color=red]FilePos64[/color](F);
CloseFile(F);
Also, jetzt müßt ihr, selbst bei den Standardfunktionen, nur noch auf die Größe des freien Festplattenspeichers achten ... nichts mehr mit maximal 2 GB.
Zusätzlich kann Seek64 jetzt auch bei Textdateien (TextFile) verwendet werden, da dieses jetzt aufpasst, daß der Schreib-/Lesepuffer ordnungsgemäß geleert wird.
Dank:
Object-Pascal / Delphi-Language -> TextFile Zeile suchen
Ich empfehle aber (falls nötig) danach zum Begin der nächsten Zeile zu gehen, da Seek ja unter Umständen mitten in 'ner Zeile landet.
Code:
Seek64(F, [color=gray]Position[/color]);
ReadLn;
Und für alle, welche gern die Größe des Schreib-/Lesepuffers verändern existiert jetzt auch noch SetTextBufEx.
Diese Prozedur achte natürlich ebenfalls auf den Schreib-/Lesepuffer - das originale SetTextBuf setz ja einfach diesen Puffer zurück, ohne den Inhalt ordnungsgemäß zu entsorgen.
Außerdem benötigt diese Prozedur nur die gewünschte Puffergröße und die Angelegenheiten wie Speicher reservieren/freigeben wird intern von selbst erledigt.
Zum Schluß natürlich noch die neue und vermutlich auch endgültige Version
[edit=Sharky]Dateianhang entfernt. Die neue Version ist im nächsten Beitrag Mfg, Sharky[/edit]