Entwickler-Ecke

Dateizugriff - Textdatei erstellen


darksign - Do 28.05.09 17:23
Titel: Textdatei erstellen
Hallo!

Ich noch Delphi-Anfänger, und habe nun folgende Aufgabe:

Ich solle in eine Textdatei ein paar Zeilen reinschreiben (in einer Schleife), das Ganze soll ungefähr so aussehen (Pseudocode):

for i:=1 to 20 do
SchreibeinDatei ('Zeile'+inttostr(i));

Das Ergebnis soll ungefähr so aussehen:

Zeile1
Zeile2
Zeile3
Zeile4
...

Es soll halt einfach 20 Mal ein beliebiger Satz reingeschrieben werden, jedoch soll jeder Satz eingerückt werden (er soll also nicht am Anfang der Zeile stehen, sondern davor sollen zwei Tabzeichen sein!).

Wie macht man sowas, und welche Komponenten benötige ich dazu?

mfg


Narses - Do 28.05.09 17:27

Moin!

Einfacher Ansatz:cu
Narses


ffgorcky - Do 28.05.09 17:34

Ich würde Dir als Einstieg raten, ein TMemo (also in meinem Fall wäre das hier MemoZuErweiterndeDatei) auf Deine Form zu ziehen und dort dann das so reinzuschreiben:

Delphi-Quelltext
1:
2:
for i:=0 to 20 do
    MemoZuErweiterndeDatei.addLine('Zeile'+inttostr(i));

Wobei Du natürlich vorher das ganze laden kannst, und nachher wieder Abspeichern:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
//Wenn die Datei schon existiert, möchtest Du sie sicherlich erweitern, also:
if FileExists(ExtractFileDir(ParamStr(0))+ 'mein.txt'then
    MemoZuErweiterndeDatei.LoadFromFile('mein.txt');
//Sonst wird dann ja beim Speichern einfach eine neue angelegt!
for ...//Hier kommt dann das von oben rein!

MemoZuErweiterndeDatei.SaveToFile('mein.txt');


Wobei ich jetzt ja kein begin und end; für meine if- und for-Anweisungen brauchte, weil sie ja nur einzeilig sind.
Wenn Du aber mehrere Zeilen in einem solchen Fall behandeln möchtest, dann musst Du sie mit begin und end; "umklammern"!


jaenicke - Do 28.05.09 17:47

Zu solch unsauberem Vorgehen sollte man erst gar nicht raten... :roll:

user profile iconNarses' Lösung ist nicht schwieriger, dafür aber sauber.


darksign - Do 28.05.09 19:11

danke für eure Antworten, ich werds mit der StringList probieren!

Aber eine Frage hätte ich noch:

Wie bekomme ich vor jeder Zeile (bzw. vor jedem Eintrag in der StringList einen Tabstop rein, so dass jede Zeile mit einer Einrückung anfängt, und dann erst der TExt kommt!)

mfg


jaenicke - Do 28.05.09 19:13

Tab ist das Zeichen 9. Das kannst du einfach an einen String anfügen.

Delphi-Quelltext
1:
MyStringList.Add(#9'Nach dem Tab');                    


darksign - Do 28.05.09 19:32

super, danke!


Regan - Do 28.05.09 22:05

Um dir das auch verständlich zu erklären. Es handelt sich um das ASCII-Zeichen Nr. 9: ASCII Tablle [http://asciitable.com/]