Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Erste Schritte mit Klassen - Wer hilft? (https://www.delphipraxis.net/11444-erste-schritte-mit-klassen-wer-hilft.html)

Nonsense 6. Nov 2003 22:07

Re: Erste Schritte mit Klassen - Wer hilft?
 
Mhh, dann würde ja mein Beispiel gar nicht funktionieren. Immerhin sollen sich ja mehrer Objekte gleichzeitig und an unterschiedlichen Positionen bewegen.
Und funktioniert denn kein
Delphi-Quellcode:
constructor Create(AParent: TObject);
?

Das ganze kombiniert mit
Delphi-Quellcode:
constructor TSquare.Create(AParent: TObject);
begin
 inherited Create();
 [...]
end;
Hab es jetzt nicht getestet, ich geh ja sowieso nur vom theoretischen Standpunkt aus.

Edit: Habs nochmal überarbeitet. Er gibt mir jedenfalls keine Fehler mehr aus.

Christian Seehase 6. Nov 2003 22:25

Re: Erste Schritte mit Klassen - Wer hilft?
 
Moin Nonsense,

wenn Du verschiedene Objekte gleichzeitig benötigst, und ansprechen willst, musst Du diese auch alle irgendwo speichern.
Sei es nun in einzelnen Variablen, in einem Array, einer TList, oder was einem sonst noch so einfällt.

Delphi-Quellcode:
constructor Create(AParent: TObject);
kannst Du natürlich schreiben, die Frage ist jetzt halt, was Du damit bezweckst.

Nonsense 6. Nov 2003 22:39

Re: Erste Schritte mit Klassen - Wer hilft?
 
Dass wird so nix, wie ich mir das vorstelle.
Irgendwie hatte das damals geklappt, wie gesagt, aber mit DelphiX.
Hatte den Code mal von einer alten Sicherungs-CD rausgekramt, und:
Delphi-Quellcode:
 
TPlayer = class(TImageSprite)
private
 Mode: Integer;
 [...]
protected
 procedure Collision(Sprite: TSprite; var Done: Boolean); override;
 procedure Move(MoveCount: Integer); override;
public
 constructor Create(AParent: TSprite ); override;
end;

TPlayerShoot = class(TImageSprite)
private
 Player: TPlayer;
protected
 procedure Collision(Sprite: TSprite; var Done: Boolean); override;
 procedure Move(MoveCount: Integer); override;
public
 constructor Create(AParent: TSprite); override;
 destructor Destroy; override;
end;
Naja, irgendwie wird das mit meinem Wischwasch nix. :wink:

MrSpock 7. Nov 2003 07:12

Re: Erste Schritte mit Klassen - Wer hilft?
 
Hallo Nonsense,

Christian hat dir doch schon einige Hinweise gegeben, wie es funktioniert.
Was ist denn genau dein Problem?

Du kannst beliebig viele Instanzen eines Klasse erstellen. Lediglich der verfügbare Speicherplatz ist eine Grenze. Wenn du auf diese Objekte zugreifen willst, benötigst du eine Struktur (z.B. ein Array oder eine Liste), um auf die Objekte ansprechen zu können. Du willst ja z.B. die Position ändern oder den Zustand. Das mit dem Freigeben hat Christian ja auch schon erklärt. Grundsätzlich bist du selbst dafür verantwortlich (auch dazu benötigst du ein Zugriff auf das freizugebende Objekt).

Bestimmte Basisklassen haben aber bereits eine Eigenschaft Owner (z.B. TComponent), diese kannst du setzen, dann kümmert sich der Owner um die Freigabe. TObject kennt einen solchen Mechanismus noch nicht. Was du dir also als erstes überlegen musst, ist, von welcher Basisklasse du deine neue Klasse ableiten willst. Benötigst du kein Windowshandle, solltest du TGraphicControl nutzen.

Code:
TNonsenseSeineShooterClass = Class(TGraphiControl)
...
Jetzt müsstest du doch schon einen Schritt weiter kommen, oder?

Nonsense 7. Nov 2003 07:22

Re: Erste Schritte mit Klassen - Wer hilft?
 
Danke @ MrSpock:
Ja, eigentlich schon. Ich hatte mir die ganze Beschreibung auf Delphi-Source mittlerweile schon ein viertes mal durchgelesen und langsam kommt Licht in die Sache.
Irgendwie klammere ich mich aber noch zu sehr an die Umsetzung von DelphiX.
Um mal wieder auf mein Beispiel zurück zu kommen: Nehmen wir an, ich speichere jetzt die einzelnen Daten in einem Array, kann ich dann eigentlich allg. überprüfen ob irgendeine Instanz der Klasse die rote Linie überquert hat?
Ich meine, es wäre ja umständlich jede einzelne Instanz abzufragen.
Oder geht das auch nicht?

Motzi 7. Nov 2003 08:39

Re: Erste Schritte mit Klassen - Wer hilft?
 
Alternativ zu Delphi-Source kann ich dir noch meine Ausarbeitung zu OOP mit Delphi anbieten - vielleicht hift sie dir ein bisschen weiter: www.x-spy.net/personal

MrSpock 7. Nov 2003 08:55

Re: Erste Schritte mit Klassen - Wer hilft?
 
Hallo Nonsense,

wenn du Objekte bewegen willst, musst du ja für jede zu bewegende Instanz eine Methode z.B. Move aufrufen. Diese hätte die Aufgabe, die neue Position zu errechnen und dabei auch zu prüfen, ob die rote Linie überschritten wird.

Nonsense 7. Nov 2003 12:35

Re: Erste Schritte mit Klassen - Wer hilft?
 
@Motzi: Der Server scheint down zu sein.

@MrSpock: Ja, so habe ich mir das ja auch von Anfang an gedacht. So das die jeweilige Instanz die procedure erbt. Sprich: Die Instanz wird erstellt und per procedure bewegt.

Motzi 7. Nov 2003 14:37

Re: Erste Schritte mit Klassen - Wer hilft?
 
Zitat:

Zitat von Nonsense
@Motzi: Der Server scheint down zu sein.

Also bei mir funktioniert es problemlos..! :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz