| Autor |
Beitrag |
Matclou
      
Beiträge: 24
|
Verfasst: Do 17.12.09 17:13
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 ( www.schule.de/schule...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
Borland Delphi 6,
hier mein bisheriger Programmtext, so wie er - auf niedrigem Niveau - funktioniert:
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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Matclou 
      
Beiträge: 24
|
Verfasst: Do 17.12.09 17:50
Ah, vielen Dank! 
|
|
Matclou 
      
Beiträge: 24
|
Verfasst: 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?
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 17.12.09 18:11
naja, da immer nur die 3 sachen rauskommen aus der datei kannst du ja einfach mit readln arbeiten, oder?
bsp zu readln
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Matclou 
      
Beiträge: 24
|
Verfasst: Do 17.12.09 18:24
mmh versteh ich nicht
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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Do 17.12.09 18:31
Matclou hat folgendes geschrieben : | mmh versteh ich nicht  |
ich frag mich dann wie du das readln in deinem ersten Post hinbekommen hast??
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Matclou 
      
Beiträge: 24
|
Verfasst: Do 17.12.09 18:32
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Matclou 
      
Beiträge: 24
|
Verfasst: Fr 18.12.09 12:21
ah, perfekt, werde das direkt, wenn ich zuhause bin ausprobierne
Vielen Dank!
|
|
|