Entwickler-Ecke

Dateizugriff - Lesen aus eigenen Dat-Dateien


PhilGo - Do 09.10.03 18:10
Titel: Lesen aus eigenen Dat-Dateien
Moin erstmal, ich hab mal aus Testzwecken eine Dat-Datei erstellt mit 3 Zeilen in den immer was anderes steht. Nun mein Problem:
- Wie kann ich die einzelnen Zeilen auslesen?
- Wie kann ich in die Dat-Datei mehrere Zeilen speichern?

Danke im voraus. :roll:

Mfg PhilGo


barfuesser - Do 09.10.03 18:14


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
MyFile := TStringList.Create;
MyFile.LoadFromFile('myfile.dat');
for i:=0 to MyFile.Count - 1 do MyFile[i] := MyFile[i] + ' ein bisschen Text';
MyFile.SaveToFile('myfile.dat');
MyFile.Free;

barfuesser


Klabautermann - Do 09.10.03 18:34

Hallo,

kommt immer drauf an, was du in deiner Datei sthen haben willst.
Soll es wirklich nur Text sein?

Gruß
Klabautermann


PhilGo - Fr 10.10.03 14:29

@barfuesser: Danke erstmal für den Quelltext, daß bringt mich schon weiter. :D Kann man mit der Stringlist dann auch den Text auslesen, also

Delphi-Quelltext
1:
2:
3:
4:
...
MyFile.LoadFromFile('myfile.dat');
Label1.Caption := MyFile[i].text;
...
:?:

@Klabautermann: Kann Text, aber auch Zahlen sein. Aber warum?

Mfg PhilGo


barfuesser - Fr 10.10.03 14:34

PhilGo hat folgendes geschrieben:
@barfuesser: Danke erstmal für den Quelltext, daß bringt mich schon weiter. :D Kann man mit der Stringlist dann auch den Text auslesen, also

Delphi-Quelltext
1:
2:
3:
4:
...
MyFile.LoadFromFile('myfile.dat');
Label1.Caption := MyFile[i].text;
...
:?:

Ja, kann man:

Delphi-Quelltext
1:
Label1.Caption := MyFile[i];                    

oder

Delphi-Quelltext
1:
Label1.Caption := MyFile.Strings[i];                    

zeigt in der Caption die i-te Zeile der Datei an.

barfuesser


PhilGo - Fr 10.10.03 14:42

Hi, fangen die Zeilen beim Index 0 oder 1 an (@barfuesser)?

Mfg PhilGo


Klabautermann - Fr 10.10.03 15:05

Hallo,
PhilGo hat folgendes geschrieben:
@Klabautermann: Kann Text, aber auch Zahlen sein. Aber warum?

um abschätzen zu können ob du Textdateien, Typisierte oder Untypisierte Dateien verwenden solltest.

Wenn du die Zahlen tatsächlich als Zahl und nicht als Folge von Chars abspeichern Willst kannst du nämlich keine Textdateien verwenden.

Wenn also ein Longint nur 4 Byte in der Datei einnehmen soll auch wenn da -2147483648 drinsteht (als Folge von Char währen es 11 Byte) dann musst du dir ein anderes Format aussuchen. Ob Typisiert oder untypisiert hängt davon ab, ob die Datein eine Feste Struktur (Ein Record) haben oder Beliebigsein können.

PhilGo hat folgendes geschrieben:
Hi, fangen die Zeilen beim Index 0 oder 1 an (@barfuesser)?

Bei 0.

Gruß
Klabautermann


PhilGo - So 12.10.03 15:02

Hi, also muss ich, wenn ich Text und Zahlen speichern (bzw. laden) will, eine Typisierte nehmen? :roll:

Mfg PhilGo


Anonymous - So 12.10.03 15:46

wenn du strings speichern willst, würde ich eine untypisierte nehmen, weil es sonst probleme gibt.
Wenn du zwischendurch auch noch anderes speicherst, kommt sowieso nur eine untypisierte in frage.


Klabautermann - Mo 13.10.03 10:49

Hi,
PhilGo hat folgendes geschrieben:
Hi, also muss ich, wenn ich Text und Zahlen speichern (bzw. laden) will, eine Typisierte nehmen? :roll:

also wenn du z.B. solche Strukturen Seichern willst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Type
  tSollGespeichertWerden = packed record
    Name : String [50];
    Schugroesse : Integer;
    GebTag : tDataTime;
  end;


Dann solltest du Typisierte Dateinen nehmen. Also immer dann wenn es um Gleichartige Daten geht.

Wenn du soetwas speichern willst:

Delphi-Quelltext
1:
'Udo ist vor 8 Jahren in unsere Stadt gezogen.'                    

Dann speicherst du troz der 8 keine Zahl sondern lässt diese als Zeichen. Dann sind Textdateien deine lösung.

Wenn es wilkührlich wird, deine Datei also im endeffekt so aussehen könnte:

Delphi-Quelltext
1:
['Hier steht eine String'][4711]['Hier noch ein String']['Hier ein Dritter String'][28.05.1996]                    

Dann musst du dich mit Untypisierten Dateien beschäftigen.

Wenn du also sagst, du willst Zahlen und Text Speichern, dann kommt es drauf an, wie diese im verhältnis zueinander stehen.

Gruß
Klabautermann


PhilGo - Do 16.10.03 11:19

Danke für eure Hilfe. Ich meinte halt Zustände von meinem Formular(wie z.Bleistift die Größe des Formulars oder die Caption des Formulars, ...) Ich wollte halt meine Daten in Dat-Datei speichern, nicht in Ini-Dateien.
Aber mit eurer Hilfe kann ich das nu machen. :P

Mfg PhilGo


Delete - Do 16.10.03 11:24

Was spricht gegen Ini-Dateien? gerade dafür sind sie gemacht worden.


Klabautermann - Do 16.10.03 11:25

Und natürlich kannst du INIs auch die Endung *.dat verpassen ;).

Gruß
Klabautermann


PhilGo - Do 16.10.03 12:00

@Luckie: Nichts spricht gegen Ini-Dateien, aber ich will halt meine Daten in Dat-Dateien speichern und wenn man das nicht kann, darf man doch fragen oder? :roll:

@Klabautermann: Wie kann man das den machen? Einfach nur umbenennen oder noch was anderes? :nixweiss:

Mfg PhilGo


Klabautermann - Do 16.10.03 12:18

Hallo,
PhilGo hat folgendes geschrieben:
@Klabautermann: Wie kann man das den machen? Einfach nur umbenennen oder noch was anderes? :nixweiss:

einfach beim erzeugen des Objektes den gewünschten Namen angeben. Also z.B. so:

Delphi-Quelltext
1:
2:
3:
4:
VAR
  INI : tMEMIniFile;
begin
  INI := tMemIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Config.dat');

Das legt eine INI-Datei mit den Namen Config.dat im Programmverzeichnis an.

Gruß
Klabautermann


PhilGo - So 19.10.03 14:19

Danke, ich wusste gar nicht das das so einfach ist :P .

Mfg PhilGo