Autor Beitrag
Gina_86
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 21.04.05 19:09 
Hallo,

bin grad dabei für die Schule ein Programm nach diesem Muster zu erstellen:

[url] www.oszhdl.be.schule...pat99/muster_2.2.htm

Nur dass es sich bei mir um eine Fildatenbank handelt.
Hab die Fenster Unit, eine ListenUnit (mit sämtlichen Listenoperationen) und eine FilmUnit (also zu jedem Film Titel, Inhalt, Genre...).

Möchte nun in einer Listbox nur die Titel der Filme anzeigen, aber ich hab einfach keine Idee wie.
Weil ich muss ja irgendwie die ganze Liste durchgehen und dann aus jedem Film (also jeder Position) den Titel kopieren...

Kann mir da vielleicht jemand helfen?
Wäre superlieb!

Bye
Gina
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 21.04.05 19:57 
Vielleicht kannst du dir den Filmtitel markieren mit einem zeichen wie zumbeispiel *alt gedrückthalten+0160 auf dem nummernblock* sieht aus wie ne leertaste, ist aber ein anderes zeichen. dann versuchst du es mit dem befehl Suche in: Delphi-Forum, Delphi-Library POS... oder wo genau ist das problem? vielleicht sollte ein listeneintrag dann so aussehen:
ausblenden Quelltext
1:
dauer nochsowas irgentwas nochmalwas *ALT 0160* TITEL!!!					

und dann kannst du mit Suche in: Delphi-Forum, Delphi-Library COPY auch gleich die entsprechende stelle rauskopieren.

Ich hoffe ich habe dein Problem richtig verstanden...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Fr 22.04.05 19:29 
Wenn ich dich richtig verstanden habe, dann hat die Klasse Film bei dir die Eigenschaften Name,Inhalt,Genre... . Dann musst du doch nur alle Elemente der Liste durchgehen und dir den Namen des Fils geben lassen. Ich weiß nicht, wie deine Liste aussieht, aber wenn du Delphis TList nimmst, dann kannst du das so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
for i:=1 to FilmListe.Count do
begin
   ListBox1.Add(TFilm(FilmListe.Items[i-1]).GetName);
end;

Dabei solltest du beachten, dass TFilm der Name der Filmklasse und GetName eine von dir selbst implementierte Methode ist, die den Namen eines Film-Objektes zurückgibt.

_________________
Linux und OpenSource rulez!
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Fr 22.04.05 19:39 
Hallo,

Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:
Richtlinien:

1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!

Gruß,
raziel

_________________
JSXGraph
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 23.04.05 15:53 
... hatte ich auch schon sagen wollen...

... wetten, dass der genau diese nachricht entweder bei sich in ner textdatei gespeichert hat, oder dass das forum eine Moderatorfunktion hat, die das generieren solcher posts übernimmt? xD

... Hatte ich schon gesagt, dass wir deinen Quellcode brauchen könnten? sourcehunter hatte schon einen quelltext mit einer selbsterstellten klasse geschrieben, aber keiner weis, wie genau du das machst... Hast du denn solch eine klasse?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Gina_86 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 23.04.05 16:59 
Hier erst mal meine Quellcodes:

Sind insgesamt 3 Units: Fenster, Liste und Film.

Fenster:

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:
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:
unit Fenster;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ETitel: TEdit;
    EGenre: TEdit;
    ESchauspieler: TEdit;
    EInhalt: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    BNeu: TButton;
    Bandern: TButton;
    BSuchen: TButton;
    BLoschen: TButton;
    Banzeigen: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BandernClick(Sender: TObject);
    procedure BNeuClick(Sender: TObject);
    procedure BanzeigenClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    procedure init;
    procedure DatenAktualisieren (var Film:TFilm);
    procedure MaskeAktualisieren (Film:TFilm);
  end;

var
  Form1: TForm1;
  aktuellerFilm: TFilm;
  Filmliste:TListe ;

implementation


{$R *.dfm}

procedure TForm1.Init;

begin
  ETitel.Text    := '';
  EGenre.Text := '';
  ESchauspieler.Text  := '';
  EInhalt.Text := '';

end;

procedure TForm1.FormCreate(Sender: TObject);
 begin
  Form1.Init;
  Filmliste   := TListe.Create;
  aktuellerFilm:=TFilm.Create;
end;

procedure TForm1.DatenAktualisieren (var Film:TFilm);
begin
Film.SetTitel(ETitel.text);
Film.SetGenre(EGenre.text);
Film.SetSchauspieler(ESchauspieler.text);
Film.SetInhalt(EInhalt.text);
end;

procedure TForm1.MaskeAktualisieren (Film:TFilm);
Begin
ETitel.text:=Film.GetTitel;
EGenre.text:=Film.GetGenre;
ESchauspieler.text:=Film.GetSchauspieler;
EInhalt.text:=Film.GetInhalt;
end;


procedure TForm1.BandernClick(Sender: TObject);
 begin
  if Filmliste.IsEmpty
  then showmessage(' Keine Einträge vorhanden')
  else
    begin
    DatenAktualisieren(aktuellerFilm);
    Filmliste.SetElement(aktuellerFilm);
end;

end;
procedure TForm1.BNeuClick(Sender: TObject);

begin
aktuellerFilm:=TFilm.Create;
Datenaktualisieren (aktuellerFilm);
Filmliste.Append (aktuellerFilm);
init;

end;

procedure TForm1.BanzeigenClick(Sender: TObject);

begin
Filmliste.first;
repeat
listbox1.Items.add(aktuellerFilm.GetTitel);
Filmliste.Next;
until Filmliste.IsLast;
end;

{
Das ist meine Prozedur zum Anzeigen der Titel der Filme! Jedoch zeigt er mir immer nur den letzten Titel in der Liste an!
}


end.


Hier der der Liste:

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:
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:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
UNIT Liste;

 INTERFACE
 uses classes,
 Sysutils,
 Film;

 const
   MAXLAENGE = 100;

type
  Pointer=TFilm;
  TListe  = class (TObject)
             protected
              Kollektion  : array [0..MAXLAENGE + 1of Pointer;
              ListenLaenge,
              AktuellePos : integer;

             public
              constructor Create;  virtual;
              procedure Init;      virtual;

              procedure First;     virtual;
              procedure Next ;     virtual;
              procedure previous;  virtual;
              procedure Last ;     virtual;

              function  GetElement : Pointer;          virtual;
              procedure SetElement (Elem : Pointer);   virtual;
              procedure Append (Elem : Pointer);       virtual;
              procedure Remove;                        virtual;
              procedure RemoveAll;                     virtual;
              function  GetLen  : integer ;            virtual;
              function  GetAktuellePos : integer ;     virtual;

              function  EoList  : boolean;             virtual;
              function  IsFirst : boolean;             virtual;
              function  IsLast  : boolean;             virtual;
              function  IsEmpty : boolean;             virtual;
              function  IsFull  : boolean;             virtual;
            
            end;



IMPLEMENTATION
(* ==================================================================== *)

constructor TListe.Create;
(* -------------------------------------------------------------------- *)
begin
  inherited Create;
  Init;
end;


procedure TListe.Init;
(* -------------------------------------------------------------------- *)
var i : integer;
begin
  for i := 0 to MAXLAENGE +1 do
  begin
    Kollektion[i] := NIL;
  end;
  ListenLaenge    := 0;
  AktuellePos     := 0;
end;


procedure TListe.First;
(* -------------------------------------------------------------------- *)
begin
  If NOT IsEmpty
  then AktuellePos := 1;
end;


procedure TListe.Next;
(* -------------------------------------------------------------------- *)
Begin
  if NOT (IsEmpty OR IsLast)  // EoList
  then AktuellePos := AktuellePos + 1;
end;


procedure TListe.Previous;
(* -------------------------------------------------------------------- *)
begin
  if NOT (IsEmpty or IsFirst)
  then AktuellePos := AktuellePos - 1;
end;


procedure TListe.Last;
(* -------------------------------------------------------------------- *)
begin
  if NOT (IsEmpty)
  then AktuellePos := ListenLaenge ;
end;


function TListe.GetElement : Pointer;
(* -------------------------------------------------------------------- *)
begin
  Result := Kollektion[AktuellePos];
end;


procedure TListe.SetElement (Elem : Pointer);
(* -------------------------------------------------------------------- *)
begin
  Kollektion[AktuellePos] := Elem;
end;


procedure TListe.Append (Elem : Pointer);
(* -------------------------------------------------------------------- *)
begin
  if NOT IsFull
  then
    begin
      AktuellePos := Listenlaenge + 1;
      SetElement(Elem);
      inc (ListenLaenge);
    end;
end;


procedure TListe.Remove;
(* -------------------------------------------------------------------- *)
var
  i    : Cardinal;

begin
  if NOT IsEmpty
  then
    begin
      for i := aktuellepos to ListenLaenge do
        Kollektion[i] := Kollektion[i+1];

      Kollektion[ListenLaenge] := NIL;
      dec(ListenLaenge);
      AktuellePos := 0;
    end;
end;  (* remove *)


procedure TListe.RemoveAll;
(* -------------------------------------------------------------------- *)
begin
  if NOT IsEmpty
  then Init;        // der Schrott bleibt im Speicher
end;  (* remove *)


function TListe.GetLen : integer ;
(* -------------------------------------------------------------------- *)
begin
  Result := ListenLaenge;
end;


function TListe.GetAktuellePos : integer ;
(* -------------------------------------------------------------------- *)
begin
  Result := AktuellePos;
end;


function TListe.EoList : boolean;
(* -------------------------------------------------------------------- *)
begin
  if Kollektion[AktuellePos] = NIL
  then Result := true
  else Result := false;
end;


function TListe.IsFirst : boolean;
(* -------------------------------------------------------------------- *)
begin
  if AktuellePos = 1
  then Result := true
  else Result := false;
end;


function TListe.IsLast : boolean;
(* -------------------------------------------------------------------- *)
begin
  if AktuellePos = ListenLaenge
  then Result := true
  else Result := false;
end;


function TListe.IsEmpty : boolean ;
(* -------------------------------------------------------------------- *)
begin
  Result := false;
  if ListenLaenge = 0
  then Result := true;
end;


function TListe.IsFull : boolean ;
(* -------------------------------------------------------------------- *)
begin
  Result := false;
  if ListenLaenge = MAXLAENGE
  then Result := true;
end;



END.


und der des Films:

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:
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:
UNIT Film;

INTERFACE

USES Classes;


type
  TFilm = class (TObject)
    protected
    Titel, Genre, Schauspieler, Inhalt:string;

    public

    constructor Create;                      virtual;
    procedure   Init;                        virtual;
    procedure   SetTitel (n: string);         virtual;
    procedure   SetGenre (vn: string);     virtual;
    procedure   SetSchauspieler (gb : string); virtual;
    procedure   SetInhalt (g: string);   virtual;

    function GetTitel       : string;         virtual;
    function GetGenre    : string;         virtual;
    function GetSchauspieler : string;         virtual;
    function GetInhalt : string;          virtual;

    function IstGleich (suchFilm : TFilm) : boolean; virtual;

    procedure InDateiSchreiben (var fs : TFilestream); virtual;
    procedure AusDateiLesen    (var fs : TFilestream); virtual;
  end;



IMPLEMENTATION


constructor TFilm.Create;

begin
   inherited Create;
   Init;
end;

procedure TFilm.Init;

begin
  Titel       := '';
  Genre    := '';
  Schauspieler := '';
  Inhalt := '';
end;

procedure TFilm.SetTitel (n: string);

begin
  Titel := n;
end;


procedure TFilm.SetGenre (vn: string);

begin
  Genre := vn;
end;


procedure TFilm.SetSchauspieler (gb: string);

begin
  Schauspieler := gb;
end;

procedure TFilm.SetInhalt (g: string);

begin
  Inhalt := g;
end;


function TFilm.GetTitel : string;

begin
  result := Titel;
end;


function TFilm.GetGenre : string;

begin
  result := Genre;
end;


function TFilm.GetSchauspieler : string;

begin
  result := Schauspieler;
end;

function TFilm.GetInhalt : string//char;

begin
  result := Inhalt;
end;



function TFilm.IstGleich (suchFilm : TFilm) : boolean;

begin
  result := false;
  if suchFilm.Titel = Titel
  then result := true
end;


procedure TFilm.InDateiSchreiben (var Fs : TFileStream);

begin
  Fs.write(Titel, SizeOf(Titel));
  Fs.write(Genre, SizeOf(Genre));
  Fs.write(Schauspieler, SizeOf(Schauspieler));
  Fs.write(Inhalt, SizeOf(Inhalt));
end;


procedure TFilm.AusDateiLesen (var Fs : TFileStream) ;
(* -------------------------------------------------------------------- *)
begin
  Fs.read(Titel, SizeOf(Titel));
  Fs.read(Genre, SizeOf(Genre));
  Fs.read(Schauspieler, SizeOf(Schauspieler));
  Fs.read(Inhalt, SizeOf(Inhalt));
end;


END.


Im Quellcode der Unit Fenster hab ich nochmal auf das Problem hingewiesen!

bye[/i]

Moderiert von user profile iconGausi: Color Tags gehen innerhalb von Delphi-Tags nicht. Hab sie durch Highlight ersetzt, um auf das Problem hinzuweisen.