Autor Beitrag
Matclou
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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 :D ;)

Borland Delphi 6,

hier mein bisheriger Programmtext, so wie er - auf niedrigem Niveau - funktioniert:
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:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconGausi: Code- durch Delphi-Tags ersetzt
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: 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.

ausblenden Delphi-Quelltext
1:
2:
3:
deinString := deinString + #10//fügt einen Linefeed ein
deinString := deinString + #13//fügt ein Carriage Return ein
deinString := deinString + #13#10//fügt LF + CRT ein


lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Matclou Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 17.12.09 17:50 
Ah, vielen Dank! ;)
Matclou Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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
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: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: 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
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: Do 17.12.09 18:31 
user profile iconMatclou hat folgendes geschrieben Zum zitierten Posting springen:
mmh versteh ich nicht :D


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Do 17.12.09 18:32 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMatclou hat folgendes geschrieben Zum zitierten Posting springen:
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
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: 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 user profile iconMarc. an dieser Stelle).

Jetzt setzen wir das zu einem Sourcecode zusammen:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Fr 18.12.09 12:21 
ah, perfekt, werde das direkt, wenn ich zuhause bin ausprobierne ;)

Vielen Dank!