Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - einfach verkettete listen


angela - Mo 09.02.09 23:03
Titel: einfach verkettete listen
hey erstmal,

ich brauch dringend hilfe, weil ich in info ein programm schreiben soll und ich nicht weiter weiß. Unser Lehrer hat uns zwar ein paar sachen vorgegeben, aber es funktioniert nicht.
es wär echt nett wenn mir jemand helfen könnte.


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:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
    Pknoten = ^Tknoten;
    TKnoten = Record
            Nr:Integer;
            Inhalt:String;
            Next:PKnoten;
            end;
  TForm1 = class(TForm)
    Edit1: TEdit;
    ListBox1: TListBox;
    Schliessen: TButton;
    weiter: TButton;
    speichern: TButton;
    eingabe: TButton;
    Edit2: TEdit;
    loeschen: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure SchliessenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure weiterClick(Sender: TObject);
    Procedure FormClose(Sender:Tobject; var Action:TcloseAction);
    procedure eingabeClick(Sender: TObject);
    procedure loeschenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Root,knoten:Pknoten;
implementation

{$R *.DFM}

procedure TForm1.SchliessenClick(Sender: TObject);
begin
 Form1.close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var Nr: integer;
    inhalt: string;
    next:Pknoten;
begin
     new(root);
     Knoten:=root;
     with Knoten^ do
     begin
     Nr:=0;
     Inhalt:='';
     Next:= nil;
     end;
end;

procedure Anzeige;
begin
     with knoten^ do
     begin
          Form1.edit1.text:=inttostr(nr);
          Form1.edit2.text:=inhalt;
          end;
end;

Procedure Tform1.FormClose(Sender:Tobject; var Action:TcloseAction);
begin
     knoten:=root;
     while knoten^.next <> nil do
     begin
     root:=knoten;
     Knoten:=Root^.next;
     end;
     Dispose(root);
end;

Procedure DateiEinlesen;
var f:Textfile;
    S:string;
    Neuerknoten:Pknoten;
    I:integer;
begin
     Assignfile(f,'Liste\Daten.dat');
     {$I-}
     reset(f);
     {$I+}
     if Ioresult <> 0 then
     begin
          showmessage('Datei konnte nicht gefunden werden');
          exit;
     end;
     I:=0;
     while not eof(f) do
     begin
     Readln(f,s);
     new(neuerknoten);
     with knoten^ do
     begin
          next:=neuerknoten;
          inhalt:=s;
          Nr:=i;
     end;
         knoten:=neuerknoten;
         knoten^.next:=nil;
         inc(i);
     end;
     closefile(f);
     knoten:=root;
     anzeige;
end;


procedure TForm1.weiterClick(Sender: TObject);
begin
     if knoten.next^.next <> nil then knoten:=knoten^.next;
     anzeige;
     end;


procedure TForm1.eingabeClick(Sender: TObject);
var inhalt:string;
    Nr:integer;
begin
 Dateieinlesen;
 listbox1.Items.add(inhalt);
 listbox1.items.add(inttostr(nr));
end;

procedure TForm1.loeschenClick(Sender: TObject);
begin
listbox1.clear;
end;

end.


Moderiert von user profile iconNarses: Quote- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus VisualCLX (Component Library for Cross Platform) verschoben am Mo 09.02.2009 um 22:48


uko - Mo 09.02.09 23:13

Erst mal hallo :welcome:

Wenn wir Dir helfen sollen, mußt Du uns schon auch sagen, was dein Problem ist! :P
Was geht denn nicht?

Grüße,
Uli


angela - Mo 09.02.09 23:17

naja einfacher zu sagen ist was geht und das ist nur die anzeige 'datei konnte nicht gefunden werden'


jaenicke - Mo 09.02.09 23:29

Dir fehlt auch die Pfadangabe. Wenn die Datei im selben Verzeichnis (bzw. einem Unterverzeichnis) liegt, musst du das auch dazuschreiben:
http://www.delphi-library.de/viewtopic.php?p=499701


Jens Hartmann - Mo 09.02.09 23:31

Hallo erstmal,

Also uko meinte, was sollst Du überhaupt konkret machen, wo ist dein Problem, Was für eine Aufgabe hast Du bekommen und womit hast Du dich bereits beschäftigt?


Gruß

Jens


angela - Mo 09.02.09 23:43

naja ich danke euch erstmal...

also ich soll ein programm schreiben in dem in edit-feldern die nummer und der inhalt angegeben werden und die sollen in eine listbox übertragen werden. und irgendwie soll man das mit zeigern machen. das versteh ich leider nicht, tut mir leid hab nich viel ahnung davon.


Jens Hartmann - Mo 09.02.09 23:46

Zum einlesen von Dateien,

das wäre eine Möglichkeit


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TFUebung.BTTextEinlesenSender: TObject);
var
f : TextFile;
i : integer;
s : String;
begin
  AssignFile(f,'test.txt');
  {$i-}Reset(f){$i+};
  if IOResult <> 0 then
  begin
    ShowMessage('Datei nicht gefunden');
    Exit
  end;
  while NOT EOF(F) do
    begin
      Readln(f,s);
      Memo1.Text := s;
     end;
  end;
end;


Gruß

Jens

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Was für Nummern und für ein Inhalt soll den in den EDIT Feldern stehen.


angela - Di 10.02.09 18:43

danke schön...

also das in den edit feldern so man das so eintragen können, also da gibt es keine vorgabe


Jens Hartmann - Di 10.02.09 20:16

Ja,

aber Du musst doch irgendeine Richtung haben, was da eingegeben wird.

Wenn das egal ist, könntest Du wahrscheinlich mit einem String arbeiten, denn du dann an deine Listbox übergibst.

Allerdings, wenn da sowas wie ...

Delphi-Quelltext
1:
1. Meine Eingabe steht,                    

dann willst du doch gewiss was mit dem Zähler 1 erreichen, oder?

Wenn ich dich richtig verstanden habe, soll man in das Editfeld was eingeben und anschließend den Button klicken.

Nach dem klick soll der Wert im Edit der Listbox hinzugefügt werden.

Wenn das so richtig ist, müsstest du mit

Delphi-Quelltext
1:
ListBox.Items.Add                    


was anfangen können.

MFG

Jens