Autor Beitrag
DK99
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

Win Vista (64 Bit) + W7 Up
(Delphi 7,) Java 6 (Eclipse+ BlueJ), OpenGL2.0
BeitragVerfasst: Fr 11.07.08 11:04 
Hallo
Kann mir mal jemand sagen wie man eine .txt Datei erstellen kann, wie man etwas hineinschreiben kann und wie man sie dann wieder auslesen und einer String Variable zuordnen kann?
Vielen Dank schonma für die Antworten :)
MFG


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 11.07.2008 um 12:08

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."-- Dan Salomon
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 11.07.08 11:09 
Moin!

Schonmal in die Suche geschaut? Suche in: Delphi-Forum, Delphi-Library STRINGLIST LOADFROMFILE ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 11:11 
Hallo!

Zunächst einmal legen wir eine Variable vom Typ TextFile an.

ausblenden Delphi-Quelltext
1:
var Datei: TextFile;					


Danach vielleicht noch eine Variable mit dem Pfad zur Datei.

ausblenden Delphi-Quelltext
1:
2:
var Datei: TextFile;
    Pfad: String;

anhang: Boolean;
Jetzt haben wir alles, um eine Datei anzulegen und sie mit Daten zu füllen

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
 pfad:= '<Pfad zur Datei>';
 assignfile(datei, pfad);

 anhang:= false;
 //Prüfen, ob die Datei schon existiert
 if not fileexists(pfad) then
 begin
  //Datei ist noch nicht vorhanden
  //neu erzeugen
  rewrite(datei);
 end
 else
 begin
  //Datei ist vorhanden
  //zum Schreiben öffnen
  reset(datei);
  append(datei);
  anhang:= true;
 end;

 //Jetzt schreiben wir etwas hinein
 writeLn(datei, 'Meine erste Zeile in der Datei');
 //Beliebig viele writeLn();

 //Wenn angehangen, sicherstellen, dass es auch passiert ist
 if anhang then
  flush(datei);

 //Ganz wichtig: Datei nach Gebrauch schliessen
 closefile(datei);
end;



Das Auslesen geht analog dazu (siehe Suche in der Entwickler-Ecke READLN) oder einfach die Delphi-Hilfe benutzen.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.


Zuletzt bearbeitet von ZeitGeist87 am Fr 11.07.08 11:34, insgesamt 1-mal bearbeitet
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 11.07.08 11:24 
user profile iconZeitGeist87 hat folgendes geschrieben:
Hallo!
ausblenden Delphi-Quelltext
1:
2:
3:
  //Jetzt schreiben wir etwas hinein
 writeLn(datei, 'Meine erste Zeile in der Datei');
 //Beliebig viele writeLn();

Ohne
ausblenden Delphi-Quelltext
1:
Append(datei);					

wirds wohl nix mit schreiben.

gruß delphi10

_________________
Salus populi suprema lex esto
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Fr 11.07.08 11:34 
user profile icondelphi10 hat folgendes geschrieben:

Ohne Append(datei); wirds wohl nix mit schreiben.


Doch. Er hat ja bereits Rewrite aufgerufen, um in die Datei zu schreiben. Allerdings dachte ich bisher, dass es nicht möglich ist, in eine mit Reset geöffnete Datei zu schreiben.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 11:37 
Delphi10 hat schon Recht.

Hab den Code oben angepasst.

Alternative kann man das Schreib-/Leserecht auch über Filemode:= 0 bzw. 2 steuern.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 11:42 
user profile icondelphi10 hat folgendes geschrieben:
user profile iconZeitGeist87 hat folgendes geschrieben:
Hallo!
ausblenden Delphi-Quelltext
1:
2:
3:
  //Jetzt schreiben wir etwas hinein
 writeLn(datei, 'Meine erste Zeile in der Datei');
 //Beliebig viele writeLn();

Ohne
ausblenden Delphi-Quelltext
1:
Append(datei);					

wirds wohl nix mit schreiben.

gruß delphi10


Doch, aber nur gesetzt dem Fall, die Datei war noch nicht vorhanden und wurde mit rewrite() erzeugt.

Beim reset() allerdings ist ein append() gefolgt von einem flush von Nöten.

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
DK99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

Win Vista (64 Bit) + W7 Up
(Delphi 7,) Java 6 (Eclipse+ BlueJ), OpenGL2.0
BeitragVerfasst: Fr 11.07.08 12:28 
OK also ersma vielen Dank für die Antworten :)
Jetz hab ich aba ei nneues Problem:
Jedes Mal wenn ich das ausprobiere hängt sich mein PC auf und der Prozessor ist nur noch zu 1 % ausgelastet. TaskManager usw. funzt alles nich mehr.
Kann das am Programm liegen oder einfach an meinem PC?

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."-- Dan Salomon
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 12:32 
Zeig uns mal bitte deinen Quelltext..

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 11.07.08 15:10 
Nur mal so nebenbei, wenn du eine TMemo - Komponente benutzt, dann kann diese direkt speichern und lesen mit
ausblenden Delphi-Quelltext
1:
2:
  memo1.lines.loadFromFile('meinedate.txt');
  memo1.lines.saveToFile('meinedatei.txt');


Eine Memo-Komponentte kann auch unsichtbar sein (visible=false), und sie kann auch so eingestellt werden dass der Text nicht umgebrochen wird (wordWrap=false).

Die Erfahrung zeigt, dass diese Methode für viele Anfänger bereits reicht ;)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 11.07.08 15:12 
Moin!

user profile iconTilman hat folgendes geschrieben:
Die Erfahrung zeigt, dass diese Methode für viele Anfänger bereits reicht ;)
Die Erfahrung zeigt überdeutlich, dass unsichtbare visuelle Komponenten als Datenlager definitiv eine schlechte Wahl sind! :| Alleine schon der gedankliche Ansatz ist falsch, hier wäre dann in jedem Fall die TStringList-Variante vorzuziehen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 11.07.08 15:24 
user profile iconNarses hat folgendes geschrieben:
Alleine schon der gedankliche Ansatz ist falsch, hier wäre dann in jedem Fall die TStringList-Variante vorzuziehen. :idea:


1. hat der Threadersteller möglicherweise bereits eine Memo-Komponente verwendet - dann ist es in jedem Fall die richtige Wahl.
2. Sei mal nicht so dogmatisch. Es ist einfach und funktioniert - wo daran der gedankliche Ansatz falsch sein soll leuchtet mir nicht ein. Viele Anfänger haben ihr Problem mit dem zur-laufzeit-erzeugen.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Fr 11.07.08 15:27 
user profile iconTilman hat folgendes geschrieben:
user profile iconNarses hat folgendes geschrieben:
Alleine schon der gedankliche Ansatz ist falsch, hier wäre dann in jedem Fall die TStringList-Variante vorzuziehen. :idea:


1. hat der Threadersteller möglicherweise bereits eine Memo-Komponente verwendet - dann ist es in jedem Fall die richtige Wahl.
2. Sei mal nicht so dogmatisch. Es ist einfach und funktioniert - wo daran der gedankliche Ansatz falsch sein soll leuchtet mir nicht ein. Viele Anfänger haben ihr Problem mit dem zur-laufzeit-erzeugen.

Wenn er ohnehin ein (sichtbares) TMemo verwendet, bin ich deiner Meinung, aber wenn er es nur unsichtbar im Hintergrund verwenden will, muss ich Narses Recht geben. Das hat nichts mit Dogmatik zu tun, sondern fördert die Unübersichtlichkeit auf Formularen zur Entwurfszeit und verschwendet Ressourcen. Und dass viele Anfänger Probleme mit dem Erstellen von Objekten zur Laufzeit haben, ist kein Argument. Schließlich kann man es lernen. Wenn sie es nicht lernen, bleiben sie Anfänger. Viele Anfänger haben auch Probleme mit typisierten Variablen. Sollen sie stattdessen nur noch Variant verwenden? Viele Fahranfänger haben Schwierigkeiten mit Rechts vor Links. Sollen wir deshalb die Vorfahrt nach Alter regeln? Programmieren heißt Lernen.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell


Zuletzt bearbeitet von Timosch am Fr 11.07.08 15:31, insgesamt 1-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 11.07.08 15:30 
Ja hast ja recht *grmpfl*. Ich mein nur er will vermutlich nur kurz was speichern, und ZeitGeist kommt mit einem 30-Zeiligen Code. Das schreckt doch ab. Am schnellsten lernt es sich mit Spaß. Ich Progge seit 10 Jahren mit Delphi, hab am Anfang alles nur über Memo gespeichert, und trotzdem hab ich alles gelernt.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Fr 11.07.08 15:33 
falls du einstellungen speichern und laden willst nimm lieber TInI. Damit kann man das dann viel einfacher machen.

Leider greifen viel zu viele Anfänger zu der Memo-Methode die eigentlich nur schwachsinn ist. Memo hat den Nachteil das man alles viel umständlicher macht weil man zum beispiel keine Sections und Values hat.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 15:37 
user profile iconTilman hat folgendes geschrieben:
Ja hast ja recht *grmpfl*. Ich mein nur er will vermutlich nur kurz was speichern, und ZeitGeist kommt mit einem 30-Zeiligen Code. Das schreckt doch ab. Am schnellsten lernt es sich mit Spaß. Ich Progge seit 10 Jahren mit Delphi, hab am Anfang alles nur über Memo gespeichert, und trotzdem hab ich alles gelernt.


Entschuldigung, dass ich den Code zusätzlich dokumentiert hab und explizit mit einer von vielen Möglichkeiten auf seine Frage geantwortet habe..also langsam glaub ich echt, ich programmier falsch :eyes:

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Fr 11.07.08 15:40 
user profile iconelundril hat folgendes geschrieben:
falls du einstellungen speichern und laden willst nimm lieber TInI. Damit kann man das dann viel einfacher machen.

Leider greifen viel zu viele Anfänger zu der Memo-Methode die eigentlich nur schwachsinn ist. Memo hat den Nachteil das man alles viel umständlicher macht weil man zum beispiel keine Sections und Values hat.

lg elundril

Heißt das Ding nicht TIniFile? Nicht vergessen: ganz oben bei uses hinten inifiles dranhängen.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 11.07.08 15:40 
Nein, Zeitgeist. Dein Post war völlig korrekt und gut. Ich wollte meinen bitte nur als Alternative verstanden wissen. Es war nicht geplant dich anzugreifen. Dein Post diente lediglich als Argument, warum mein Post ebenfall seine DAseinsberechtigung hat. Und damit klinke ich mich aus diesme Thread aus ;)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Fr 11.07.08 15:42 
Okay Tilman ;-)

Ich war jetzt nur leicht irritiert ;-)

Klink mich ebenfalls aus..

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
DK99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46

Win Vista (64 Bit) + W7 Up
(Delphi 7,) Java 6 (Eclipse+ BlueJ), OpenGL2.0
BeitragVerfasst: Fr 11.07.08 19:56 
OK
Das Problem ist gelöst . Es lag an meinem PC dass es nicht funktioniert hat :(
Aber jetzt läuft es.
Vielen Dank für die Hilfe :)

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."-- Dan Salomon