Autor Beitrag
darksign
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 58



BeitragVerfasst: Do 28.05.09 17:23 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 28.05.09 17:27 
Moin!

Einfacher Ansatz:
  • TStringList anlegen
  • Inhalt deiner Datei zeilenweise in die Stringliste einfügen
  • StrList.SaveToFile('C:\mein.txt');
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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"!


Zuletzt bearbeitet von ffgorcky am Do 28.05.09 17:56, insgesamt 3-mal bearbeitet
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 58



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19335
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 28.05.09 19:13 
Tab ist das Zeichen 9. Das kannst du einfach an einen String anfügen.
ausblenden Delphi-Quelltext
1:
MyStringList.Add(#9'Nach dem Tab');					
darksign Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 58



BeitragVerfasst: Do 28.05.09 19:32 
super, danke!
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: 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