AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Datei zeilenweise Einlesen mit TFileStream
Thema durchsuchen
Ansicht
Themen-Optionen

Datei zeilenweise Einlesen mit TFileStream

Ein Thema von petergensfeld · begonnen am 16. Nov 2010 · letzter Beitrag vom 16. Nov 2010
Antwort Antwort
petergensfeld

Registriert seit: 8. Dez 2005
Ort: Raeren (B)
6 Beiträge
 
Delphi XE Professional
 
#1

Datei zeilenweise Einlesen mit TFileStream

  Alt 16. Nov 2010, 14:38
Delphi-Version: 2010
Hallo zusammen,

ich würde gerne eine umfangreichere Datei mit Messdaten im Textformat zeilenweise einlesen. Aufgrund des Umfangs möchte ich es nicht so gerne mit TStringList.LoadFromFile machen, weil dann alles auf einmal im Hauptspeicher landet.

Das zeilenweise Einlesen mit den veralteten Routinen AssignFile/Reset/ReadLn/CloseFile geht schon, aber ich würde es lieber mit Streams machen. Dazu habe ich die TStream-Klasse um eine ReadLn-Funktion ergänzt. So hab ich's versucht:

Delphi-Quellcode:
type
  TStreamHelper = class helper for TStream
  public
    function ReadString: string;
  end;

function TStreamHelper.ReadLine: string;
var
  S: String;
  Ch: Char;
begin
  S := '';
  while Read(Ch, 1) = 1 do
  begin
    S := S + Ch;
    if RightStr(S, Length(sLineBreak)) = sLineBreak then
    begin
      S := LeftStr(S, Length(S) - Length(sLineBreak));
      Break;
    end;
  end;
  Result := S;
end;
Funktioniert auch, ist aber leider quälend langsam. Was kann ich tun, um die Laufzeit zu optimieren? Oder gibt es einen anderen Ansatz ohne die veralteten Routinen zu verwenden?

Dirk
Dirk
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Datei zeilenweise Einlesen mit TFileStream

  Alt 16. Nov 2010, 14:55
Hallo Dirk,

hast du den Delphi-Referenz durchsuchenTStreamReader aus der Unit Classes schon einmal getestet?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Datei zeilenweise Einlesen mit TFileStream

  Alt 16. Nov 2010, 14:55
Die alten Pascal-Routinen kann man immernoch nutzen.
> Delphi-Referenz durchsuchenAssignFile, Delphi-Referenz durchsuchenReset, Delphi-Referenz durchsuchenReadLn und Co.
- diese arbeiten sequentiell und laden nicht alles in den RAM
- sie funktionieren aber direkt nur mit ANSI-Text

ansonsten
eventuell das genannte TStreamReader
http://www.delphipraxis.net/88342-te...tml#post600578
http://www.delphipraxis.net/151481-t...-einlesen.html
...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
petergensfeld

Registriert seit: 8. Dez 2005
Ort: Raeren (B)
6 Beiträge
 
Delphi XE Professional
 
#4

AW: Datei zeilenweise Einlesen mit TFileStream

  Alt 16. Nov 2010, 15:25
Dankeschön! Das ist genau das, was ich gesucht habe.
Dirk
  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 02:12 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