Entwickler-Ecke
Sonstiges (Delphi) - Frage zu AssignFile (im weitesten Sinne)
Matclou - Do 17.12.09 17:13
Titel: Frage zu AssignFile (im weitesten Sinne)
Hallo Leute, ich hab mal wieder ne Verständnisfrage, die euch sicher langweilen wird, weil ich ein Anfänger bin, der eben noch lernt ;)
Bin gerade dabei mir anzulernen, wie man sachen vom Programm aus in eine Textdatei überträgt. Damit ich die Daten auch später wieder einlesen kann, müssen einzelne Eigenschaften (wie z.b. Erscheinungsjahr oder Komponist) in eine eigene Zeile geschrieben, wie auch dieser Ausschnitt von "schule.de" aussagt (
http://www.schule.de/schulen/oszhdl/gymnasium/faecher/informatik/rechnerarchitektur/dateien/pascal_dateien.htm):
"Eine Textdatei ist eine Ansammlung von Zeichen, die in Zeilen angeordnet sind.
Die zu verwaltenden Daten werden jeweils als einzelne Textzeilen gespeichert, die durch Zeilenendemarken getrennt sind, i.d.R. CRT oder CRT + LF"
Die Frage ist: Wie kann ich eine solche Lehrzeile in den Editor einbauen vom Programm aus - denn der Text sagt was vom CRT oder CRT+LF aber ich habe keine Ahnung was das ist und wie man es einsetzt... Ich benutze überings das veraltete, aber einfache, AssignFile- Prinzip, ich möchte aber kein Gemecker hören :D ;)
Borland Delphi 6,
hier mein bisheriger Programmtext, so wie er - auf niedrigem Niveau - funktioniert:
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: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var Datei : TextFile; Name,Komponist,Jahr : string; DauerMinuten : Integer; begin AssignFile(Datei,'C:\Dokumente und Einstellungen\Matthias\Desktop\test.txt'); Reset(Datei); Readln(Datei, Name, Komponist, Jahr, DauerMinuten); Rewrite(Datei); Name:=Edit1.text; Komponist:=Edit2.text; Jahr:=Edit3.text; DauerMinuten:=StrToInt(Edit4.text); Writeln(Datei, Name, Komponist, Jahr, DauerMinuten); CloseFile(Datei); end;
end. |
Ich danke schonmal für die Hilfe ;)
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt
elundril - Do 17.12.09 17:39
CRT = Carriage Return
LF = Line feed
Das sind die Zeichen die einem Anzeigen das eine neue Zeile beginnt. Einfügen kannst du die wie normale Zeichen.
Delphi-Quelltext
1: 2: 3:
| deinString := deinString + #10; deinString := deinString + #13; deinString := deinString + #13#10; |
lg elundril
Matclou - Do 17.12.09 17:50
Ah, vielen Dank! ;)
Matclou - Do 17.12.09 18:05
Okay, neue Frage, gerade entdeckt:
Wie kann ich die sachen denn wieder rausziehen?
Sagen wir mal, dass wir folgende DATEI haben:
--
HARRY
WILLIAMS
2001
--
Als Beispiel - Harry ist Titel, Williams Komponist, 2001 ist das Jahr
Wie ziehe ich diese Infos aus der Datei heraus?
Matclou - Do 17.12.09 18:24
mmh versteh ich nicht :D
Muss ich mich noch mal näher mit beschäftigen, aber bei mir klappts bisher nicht... VIelleicht hat jmd. Erfahrenes (auf dem Bereich)ja (netterweise) die Zeit, mir die paar Zeilen aufzuschreiben :(
elundril - Do 17.12.09 18:31
Matclou hat folgendes geschrieben : |
| mmh versteh ich nicht :D |
ich frag mich dann wie du das readln in deinem ersten Post hinbekommen hast??
lg elundril
Matclou - Do 17.12.09 18:32
elundril hat folgendes geschrieben : |
Matclou hat folgendes geschrieben : | | mmh versteh ich nicht :D |
ich frag mich dann wie du das readln in deinem ersten Post hinbekommen hast??
lg elundril |
Das ging i-wie noch^^
Aber ich möchte jetzt das ganze in die Edit-Felder bekommen und wenn ich Edit1.text:=name; hinschreibe klappt es nicht...
elundril - Do 17.12.09 19:51
Ok, basteln wir zusammen. *Elundril läutet zur fröhlichen Bastelstunde*
Also, wir brauchen ein AssignFile, ein ReadLn, ein Reset, eine String-Variable, ein EOF.
Also, zuerst Assignen wir einer TextFile-Variablen eine Datei. Dann Reseten wir damit wir zum Anfang kommen. Jetzt lesen wir solange aus bis das ende der Datei kommt (Danke an
Marc. an dieser Stelle).
Jetzt setzen wir das zu einem Sourcecode zusammen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var Datei: TextFile; Name, Komponist, Jahr: String; Dauer: Integer; begin AssignFile(Datei, 'C:\Dokumente und Einstellungen\Matthias\Desktop\test.txt'); Reset(Datei); while not EOF(Datei) do begin ReadLn(Datei, Name); Edit1.Text := Name; ReadLn(Datei, Komponist); Edit2.Text := Komponist; ReadLn(Datei, Jahr); Edit3.Text := Jahr; ReadLn(Datei, Dauer); Edit4.Text := IntToStr(Dauer); end; CloseFile(Datei); end; |
lg elundril
Matclou - Fr 18.12.09 12:21
ah, perfekt, werde das direkt, wenn ich zuhause bin ausprobierne ;)
Vielen Dank!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!