Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Textdatei in ein Record einlesen ? (https://www.delphipraxis.net/21099-textdatei-ein-record-einlesen.html)

Bit Juggler 27. Apr 2004 23:54


Textdatei in ein Record einlesen ?
 
Hi,
ich möchte eine Texdatei in einen Record einlesen, aber jeweils nur bestimmte Stellen aus dem Text.
Ich habe schon hier im Forum gesucht und gegooglet hab ich auch schon -> ohne Erfolg.
Ich hab ein Tutorial auf Delphi-Source.de gelesen, das handelt aber von Typisierten Datein, mit Textfiles hab ich es nicht hinbekommen -> Tutorial

Das Problem ist das ich immer nur bestimmte Stellen der Datei in meinen Record lesen möchte, zb:

"Dieser Satz dient als Test"

Test.Text sollte dann zb "als" erhalten.
Gibt es da eine Möglichkeit oder funktioniert das ganze an sich nicht, Records mit Textfiles ?


Gruß
Bit

Edit:
Hinzu kommt noch das zwischendurch immer mal wieder ein Satz mit dem Rautezeichen "#" anfängt, dieses Zeichen dient als Anfang von Kommentaren, das heißt alle Sätze welche mit "#" eingeleitet werden sollen übersprungen werden.

alcaeus 28. Apr 2004 04:22

Re: Textdatei in ein Record einlesen ?
 
Du kannst immer noch mit
Delphi-Quellcode:
Readln(Textdatei,StringVar);
eine Zeile aus der Textdatei auslesen. Das ganze machst du solange EoF(Textdatei) False ist. Den String den du dann erhälst kannst du dann auslesen, z.B. so:
Delphi-Quellcode:
var
  TextDatei: TextFile;
  Pfad, Zeile: String;
AssignFile(TextDatei,Pfad);
Reset(TextDatei);
while not EoF(TextDatei) do
begin
  Readln(TextDatei,Zeile);
  if Zeile[1] <> '#' then
//Deine Auswertung
end;
CloseFile(TextDatei);
Der Code ist nicht getestet, aber ich sehe keinen Grund warum er nicht funktionieren sollte :wink:

Bit Juggler 28. Apr 2004 11:07

Re: Textdatei in ein Record einlesen ?
 
Hi,
danke für Deine Antwort.
Nun hab ich aber nach wie vor noch 2 Probleme:

1:
Die Datei stammt von einem Unix System, wird unter Windiws bearbeitet und soll danach dann auch wieder auf Linux funktionieren - gibt es da beim Speichern irgendwas zu beachten ?

2:
Wie muss ich denn in meinem Fall den Datensatz zeiger Positionieren ?
Beispiel einer Zeile in der Datei:


#Bla bla bla das dient zur info (Das ist sozusagen der Kommentar den ich nicht will!)
Computeruser die Einstellung - 5

#Noch eine Zeile die mich nicht intressiert
Computeronlinestatus - ON

In beiden Fällen möchte ich nun in eine Variable meines Records 5 und in die andere "ON" haben.
Weiss aber ehrlich gesagt absolut nicht wie ich es hinbekomme den Datensatzzeiger zu positioniren!
Ich werde heute abend vielleicht mal die gesamte Datei posten, dann ist vielleicht klarer wie ich das meine

Gruß
Bit

alcaeus 28. Apr 2004 11:41

Re: Textdatei in ein Record einlesen ?
 
Zu 1: Ich weiß es nichtgenau, aber Linux verwendet #10 als Zeilenumbruch, während Windows mit #13#10 einen Zeilenwechsel signalisiert.

Zu 2: Durch die Verwendung von Readln wird nach dem Lesen automatisch zum nächsten Datensatz gesprungen. Deshalb brauchst du dich darum nicht zu kümmern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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