AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

64-Bit für TextFile / File of xxx

Ein Thema von himitsu · begonnen am 21. Okt 2005 · letzter Beitrag vom 12. Jan 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.573 Beiträge
 
Delphi 12 Athens
 
#1

Re: 64-Bit für TextFile / File of xxx

  Alt 22. Okt 2005, 23:37
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]
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz