Naja, in der Buchseite sind halt "Befehle" von TList, aber da steht nix, wie das integriert werden soll.Da steht dann zum Biespiel "Letztes Element [zeilensprung] Liste.Items[Liste.Count-1]" und das wird mir auch schon nciht klar und unter count würd ich jetzt was anderes verstehen.
Oder dein Erzeugen das steht da garnicht so. (glaub ich...?)
Da steht
Anhängen eines neuen Gebäudeobjektes:
Liste.Add(Haus)
Im Buch gehts drüberhinaus um ein Projekt was wir nie gemacht haben. Aber da steht nicht wie bei dir Haus.create.
Was mich wundert bei deinem Vernichten war dass du da 0 in den eckigen klammern stehen hast... Da steht ja nicht dass das auf 0 runtermachen soll, kein index:= index-1 oder so
ED: Ich hab mal (aufgrund meines Unwissens,ob ich da wieder so eine while schleife machen muss) BT Verbergen und Zeigen ausgeklammert, jetzt gibts schon beim Compilieren eine Fehlermeldung...
Hier die Fehlermeldung die beim Erzeugen-BUtton-Klicken kommt:
http://d.imagehost.org/0044/fehlermeldung.jpg
Und hier die wenn ich auslammer und compilieren:
http://d.imagehost.org/0530/fehlermeldung_2.jpg
Sollt ich auch nochmal den aktullen Quellcode posten? Wenn nicht, tu ich es trotzdem... ;D
Delphi-Quellcode:
unit mBewegteUhr;
{Übung 14.3 - Modifikation: West; Uhr2a --> BewegteUhr: September/Oktober 2008}
interface
uses
Windows, Messages, SysUtils, Graphics, Controls, Forms, Dialogs, StdCtrls,
classes,
{z.B. für TList}
mTBewegteUhr;
{TBewegteUhr}
type
TMain =
class(TForm)
BtErzeugen: TButton;
BtVerbergen: TButton;
BtZeigen: TButton;
BtVernichten: TButton;
procedure BtErzeugenClick(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
// procedure BtVerbergenClick(Sender: TObject);
//procedure BtZeigenClick(Sender: TObject);
procedure BtVernichtenClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Uhr1: TBewegteUhr;
Liste : TList;
public
{ Public-Deklarationen }
end;
var
Main: TMain;
implementation
{$R *.DFM}
procedure TMain.BtErzeugenClick(Sender: TObject);
var
idx : integer;
begin
// Objekt erzeugen und an die Liste hängen
// idx hat dann die Position in der Liste
idx := Liste.Add( TBewegteUhr.Create (Main.Width
div 2, Main.Height
div 2, 75) );
// Liste.Items[ idx ] ist vom Typ Pointer, zeigt also nur irgendwo hin
// TBewegteUhr( Pointer ) sagt dem Programm, wie die Informationen an der Stelle
// vom Pointer zu interpretieren sind
TBewegteUhr( Liste.Items[ idx ] ).Kennt(Main);
TBewegteUhr( Liste.Items[ idx ] ).Zeigen;
end;
procedure TMain.BtVernichtenClick(Sender: TObject);
begin
while Liste.Count > 0
do
begin
if Liste.Items[ 0 ] <>
nil then
begin
TBewegteUhr( Liste.Items[ 0 ] ).Free;
Liste.Delete( 0 );
end;
end;
end;
{procedure TMain.BtVerbergenClick(Sender: TObject);
begin
if TBewegteUhr(Liste.Items[posi]) <> nil then TBewegteUhr(Liste.Items[posi]).Loeschen;
end;
procedure TMain.BtZeigenClick(Sender: TObject);
begin
if TBewegteUhr(Liste.Items[posi]) <> nil then TBewegteUhr(Liste.Items[posi]).Zeigen;
end; }
procedure TMain.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
BtVernichtenClick(Sender);
end;
procedure TMain.FormCreate(Sender: TObject);
begin
doublebuffered:= true;
randomize;
end;
end.