AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Textdatei Zeile für Zeile auslesen, bis zum Ende
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei Zeile für Zeile auslesen, bis zum Ende

Ein Thema von BillieJoe90 · begonnen am 28. Mär 2007 · letzter Beitrag vom 28. Mär 2007
Antwort Antwort
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#1

Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 15:30
Hallo,
ich würde gerne eine Datei auslesen, und zwar Zeile für Zeile. Es handelt sich um eine m3u-Datei. Theroretisch kann ich mir vorstellen, wie es funktioniert:
While-Schleife, in der ReadLn aufgerufen wird, bis der Dateizeiger am Ende ist.
Quasi:
Delphi-Quellcode:
while DateiZeiger nicht am Ende do begin
  ReadLn(...);
  ReadLn(...);
end;
(Da es eine erweiterte m3u-Datei ist, muss ich pro Durchlauf 2 Zeilen auslesen)

Aber wie sieht das in Delphi-Code aus?

Danke schonmal!

Johannes
Johannes
Wenn Sie jetzt gleich bestellen, bekommen Sie ein zweites Set GRATIS!
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 15:43
Hallo Johannes,

hilft dir diese Seite?

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#3

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 15:49
Zitat von Hawkeye219:
Hallo Johannes,

hilft dir diese Seite?

Gruß Hawkeye
Vielen vielen Dank, ja!

Kann den Beitrag jemand verschieben? Ich habe mich auf der Anfangs-Saeite wohl verklickt, sollte in "Object Pascal/Delphi Language" sein Danke!
Johannes
Wenn Sie jetzt gleich bestellen, bekommen Sie ein zweites Set GRATIS!
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 15:51
Zitat von BillieJoe90:
Hallo,
ich würde gerne eine Datei auslesen, und zwar Zeile für Zeile. Es handelt sich um eine m3u-Datei. Theroretisch kann ich mir vorstellen, wie es funktioniert:
While-Schleife, in der ReadLn aufgerufen wird, bis der Dateizeiger am Ende ist.
Quasi:
Delphi-Quellcode:
while DateiZeiger nicht am Ende do begin
  ReadLn(...);
  ReadLn(...);
end;
Schau mal in nach Delphi-Referenz durchsuchenEOF, das ist der Dateiende-Zeiger. Allerdings ist es eher unüblich noch auf diese Funktionen zurück zu greifen. In der Regel öffnet man Dateien eher als Stream (damit kannst Du weiter von Inhalt und Speicherort abstrahieren).
Willst Du mit einer Textdatei arbeiten bietet sich zudem die TStringList an. Diese liest für Dich eine Datei in eine Liste ein. Die Anzahl der Zeilen kannst Du mit der Eigenschaft Count ermitteln, auf einzelne Zeilen kannst Du mit der Eigenschaft Items[i] zugreifen (kannst auch [i] direkt an die Instanz anhängen, ist die Standardeigenschaft).

Delphi-Quellcode:
var s: TStringList;
    blubb: String;
    i: Integer;
begin
  s := TStringList.Create;
  s.LoadFromFile(DATEI_NAME);

  for i := 0 to s.count - 1 do
  begin
    blubb := s[i];
    
    // mach irgendwas mit blubb
  end; // for i := 0 to s.Count - 1
end;
Du kannst natürlich auch die Zeilen verändern und/oder neue hinzufügen. Um die Datei wieder zu Speichern steht Dir dann die Methode saveToFile zur Verfügung.

Gruß Der Unwissende

[edit]
Ich könnte schwören, dass es einst einen roten Kasten gab, der war, hm, rot!
[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von BillieJoe90
BillieJoe90

Registriert seit: 29. Sep 2006
Ort: Bovenden
122 Beiträge
 
#5

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 15:55
Ja, die Methode mit der StringList war mir bekannt, ich hielt sie aber für, wie soll ich sagen, "unsauber"...
Johannes
Wenn Sie jetzt gleich bestellen, bekommen Sie ein zweites Set GRATIS!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 16:04
Die Stringlist-Variante hat den Nachteil das die gesamte Datei in den Speicher geladen wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: Textdatei Zeile für Zeile auslesen, bis zum Ende

  Alt 28. Mär 2007, 18:11
Zitat von SirThornberry:
Die Stringlist-Variante hat den Nachteil das die gesamte Datei in den Speicher geladen wird.
Klar, andererseits hält sich die Größe einer m3u-Datei warscheinlich in Grenzen, oder? Kann man natürlich nicht drauf spekulieren und natürlich ist das ein klarer Nachteil! Aber wie wird denn weiter mit den Daten gearbeitet? Da würde ich schätzen landet ein großer Teil 1:1 im Hauptspeicher.

Das verwenden von AssignFile, Readln usw. hat natürlich auch ein paar Nachteile, glaube mich dunkel zu erinnern, dass jmd. mal beschrieben hat, dass diese Zugriffe nur auf eine Schicht umgeleitet werden, die selbst wieder auf Streams zurück greift. Aber da bin ich mir nicht mehr 100%ig sicher.
Ich würde jedenfalls am ehesten zum FileStream (oder allgemein zum Stream) raten.

Gruß Der Unwissende
  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 20: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