TP: Texte aus Datei in Array lesen

Wie kann man mit Turbo-Pascal mehrere Zeilen Text in Mehrere Strings eines Arrays lesen? Jede Textzeile in ein String des Array.

Danke!

Wie kann man mit Turbo-Pascal mehrere Zeilen Text in Mehrere
Strings eines Arrays lesen? Jede Textzeile in ein String des
Array.

Danke!

Vorschlag:
plist:=Tstringlist.create;
plist.Loadfromfile();

plist.free; // wenn du den Text nicht mehr brauchst

Gruß Michael

Ich kann mich an keine TStringList in Turbo-Pascal erinnern !!
Verwechselst du das mit Delphi?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Wie kann man mit Turbo-Pascal mehrere Zeilen Text in Mehrere
Strings eines Arrays lesen? Jede Textzeile in ein String des
Array.

Danke!

Kennst du die Anzahl Zeilen ?
Sind die Zeilen alle gleich lang ?
Besteht das Array schon oder willst du es für die Datei anlegen ?

Ich hab TP nicht mehr und nur vage Erinnerungen an genaue Syntax, daher sind die folgenden Angaben allgemein, aber mit etwas Eigenleistung und der Online-Hilfe mußt du es schaffen.

Im flexibelsten Fall:

Die Idee ist, den gesamten Text am Stück in eine Variable vom Typ PChar einzulesen (nennen wir sie PText). Dein String-Array ist ein (offenes) Array von PChar (z.B. AZeile: ^Array[0…0] of PChar). Hier werden die Zeiger auf die Vorkommen von Absatzmarken in PText gespeichert. Fertig.

Dazu mußt du vorher die Dateigröße in Byte ermitteln (z.B. als Filf Of Byte öffnen, Seek(eof) und dann FilePos ausgeben lassen) und mit GetMem oder AllocMem Speicher für PText reservieren. Dann kannst du die Datei zum Lesen öffnen und mit Blockread alles in PText einlesen.

Jetzt mußt du z.B. mit der Funktion Pos oder besser StrScan die Absatzmarken finden (chr(13) oder #13). An der Stelle danach fängt eine neue Zeile an. Den Zeiger darauf speicherst zu im Feld AZeile, was du vorher für jede neue Zeile mit ReallocMem in der Größe anpaßt. Die benötigte Größe ist Anzahl Zeilen mal Zeigergröße, also z.B. AnzZeilen*SizeOf(PChar).

Abbrush, wenn StrStan = NIL oder Pos = 0.

Das war’s.

Gruß
Jochen

Stimmt !

(Sorry, da hatte ich wohl die falsche Brille auf).

Gruß Michael

Es sind immer 3 Zeilen.
2 davon können immer gleich lang sein, die 3. nicht.
Welche an welcher Position in der Datei steht kann egal sein, auch ein anderer Aufbau ist möglich. Diese Datei wird von Delphi erstellt.

Was das Programm eigentlich machet:
Delphi soll mp3-Dateien abspielen, Damit man ohne Bildschirm sieht, was läuft und wie lange es noch läuft werden diese Informationen in der Datei gespeichert, Das dritte ist ein Delay-Wert für Pascal.
Pascal gibt das dann an ein 2*20-Zeichen Kassen-Display am LPT aus. Der Titelname wird gescrollt, wenn zu lang(Delay-Wert).
In der 2. Zeile kommt Datum/Uhr und die Titel-Zeit. Datum/Uhr macht Pascal selbst.