AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TTextStream - Textdateien einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

TTextStream - Textdateien einlesen

Ein Thema von himitsu · begonnen am 19. Mai 2010 · letzter Beitrag vom 4. Nov 2011
Antwort Antwort
Seite 5 von 5   « Erste     345   
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
So, den nun hab ich erstmal den Schreib-/Lesekern meiner neuen StringListe seppariert und er läuft endlich.
Manchmal muß man eben mit mehrfachem Code leben ... hartkodierte Konstanten sind eben schneller, als Variablen und eine dynamische Verarbeitung.

Diese Klasse ließt eine beliebig große Textdatei sequentiell ein, wobei sogar unterschiedliche Kodierungen (TEncoding) unterstützt werden und ein eventuelles BOM ausgewertet wird.
Speichern ist natürlich auch möglich.

Nja, die Speicherverwaltung des Lesepuffers gefällt mir noch nicht so ganz
( http://www.delphipraxis.net/internal...t.php?t=177739 ),
aber für diesen Fall dürfte es denoch ausreichend sein.

Ja nach Datei und Computer ist es etwa gleichschnell oder schneller als eine TStringList zu Einlesen braucht (wobei die TStringList irgendwann an ihre Speichergrenzen stößt, da sie alles im Arbeitsspeicher verarbeitet, welches beim Einlesen einer einfachen Ansi-Datei in Delphi2009/2010 mehr als den 4-fachen Speicherbearf, der ursprünglichen Dateigröße verlangt)



Als Zusatzmodul ist mir eingefallen, daß man die (ur)alten Pascal-Datei-Funktionen ersetzen könnte,
aber leider ist es nicht möglich einen adequaten Ersatz für Read, ReadLn, Write und WriteLn zu finden ,
Aber vielleicht hat ja jemand eine brillante Erleuchtung.


PS: Der Name "TStringStreamEx" der Klasse gefällt mir eigentlich auch nicht, aber irgendwer hatte schon die Idee eine andere Klasse TStringStream zu nennen.

[edit] Name angenommen

[edit 20.05.2010]
  • alles etwas überarbeitet
  • eine Version für Delphis vor 2009 erstellt
    Als Bonus hat sie eine einfache Variante des TEncoding bekommen, welches man natürlich auch für andere Dinge nutzen könnte.
  • und Zusatzmodul TTextStreamEx fertiggestellt

[edit 21.05.2010 v1.2c]
Wo es nun zu laufen scheint, hab ich mir mal die Unterschiede angesehn
und beide Versionen miteinander kombiniert.

Außerdem hatte ich glatt was vergessen zu übernehmen.
Beim Einlesen einer Datei werden die Zeilenumbrüche analysiert und das Property LineBreak enthält dann den häufigsten Zeilenumbruch (falls es mal ein bissl gemischt ist) ... die FileStringList wird somit später den Zeilenumbruch einer Datei quasi erhalten und ihn nicht ständig auf Windowsstandard (CRLF) abändern.

[edit 17.08.2010 v1.3]
- BOM-Erkennung bei Angabe einer Kodierung integriert
- BOM kann nun beim Schreiben weggelassen werden

[edit 18.10.2010 v1.4a2]
- neue Testversion (sie Beitrag #31)
Angehängte Dateien
Dateityp: pas TextStream v1.2c 21.05.2010.pas (51,2 KB, 92x aufgerufen)
Dateityp: pas TextStream.pas (51,5 KB, 132x aufgerufen)
Dateityp: pas TextStream v1.4 alpha2 18.10.2010.pas (52,8 KB, 156x aufgerufen)
$2B or not $2B

Geändert von himitsu (18. Okt 2010 um 16:21 Uhr)
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#41
  Alt 7. Mär 2011, 11:46
Er hat das selbe Problemchen wie ich gerade ... hier hab ich Delphi+Debugger, aber kein Win7 und drüben hab ich Win7, aber keinen Debugger.
  Mit Zitat antworten Zitat
Moony

 
Delphi 2010 Professional
 
#42
  Alt 7. Mär 2011, 12:15
Ich habe kein Windows7 auf dem ich den Source debuggen könnte. Unter XP läuft das alles wunderbar. Auch die Rechte sind auf dem Win7 gegeben.
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

 
Delphi XE2 Professional
 
#43
  Alt 4. Nov 2011, 13:19
Hallo himitsu,

ich habe hier einen ganzen Schwung *.sql Dateien liegen, die unterschiedlich kodiert sind (utf8 mit und ohne BOM und ANSI Dateien).
Jetzt habe ich diese Klasse gesehen und wollte fragen, ob es mir hiermit möglich ist, die jeweilige Kodierung zu erkennen und dann alle Dateien zu öffnen und als UTF8 mit BOM zu speichern?
Falls ja, hast du evtl. ein kurzes Beispiel?

VG Peter
Peter

Geändert von x000x ( 7. Nov 2011 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 11:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz