Delphi-PRAXiS
Seite 1 von 2  1 2      

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 19:06


Erste Schritte mit Klassen - Wer hilft?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Community,
ich würde mich jetzt gerne in das Thema Klassen einarbeiten, aber diese Thematik ist so komplex, dass man davon fast erschlagen wird. :wink:

Ich möchte gerne eine Klasse TSquare erstellen. Nach einem Ereignis (z.B. OnKeyDown oder ButtonClick) wird jeweils ein Ableger erstellt (Ich glaube die heißen Instanzen, bin mir aber nicht sicher).
Wenn sie, wie in meinem Beispiel, einen bestimmten Punkt überqueren, sollen sie sich automatisch löschen (Destroy\Free).

Ich habe keine Ahnung, wo ich anfangen soll, da ich nicht so recht weiß, welche Befehle hierfür angebracht sind. Ich habe mir schon das Tutorial von Delphi-Source durchgelesen, bin aber noch sehr unsicher.

Kann mir jemand bei diesem Thema ein paar Einstiegshilfen geben?

Danke.

MfG

Nonsense 6. Nov 2003 20:01

Re: Erste Schritte mit Klassen - Wer hilft?
 
Kann mir keiner ein paar Anhaltspunkte geben?
:cry: :cry: :cry:

Basic-Master 6. Nov 2003 20:12

Re: Erste Schritte mit Klassen - Wer hilft?
 
ich kann mir nich richtig was darunter vorstellen.. mach doch unter jedem ereignis wo das erstellt wird ne überprüfung ob der wert left + width deines ablegers höher als der wert left + width von deiner linie ist, wenn ja dann lösch das ganze doch... das kannste ja mit free machen (destroy geht auch, aber free is besser).

Christian Seehase 6. Nov 2003 20:15

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

findest Du es nicht auch ein klein wenig übertrieben (um es mal nett zu formulieren), nach einer (!!) Stunde (!!) nachzufragen?
Nach einem Tag, ok, aber nach einer Stunde...

Nonsense 6. Nov 2003 20:29

Re: Erste Schritte mit Klassen - Wer hilft?
 
@Christian Seehase: Ok, ich hab wohl die Dimensionen des DP überschätzt :wink: Sorry.

Ok, also, ich war ja nicht untätig und hab ein bissel was probiert.
Seid bitte so nett und korrigiert mich, wenn ich was falsch verstanden habe.

Mit:
Delphi-Quellcode:
type
  TSquare = class(TObject)
  private
   FTest: integer;
  public
 end;
kann ich eine Klasse erzeugen.
Wie kann ich jetzt einen Ableger erstellen?
Ich habe was von
Delphi-Quellcode:
 constructor Create(Test: Integer);
gelesen.

Demnach müsste ich nur noch des Konstruktor schreiben:
Delphi-Quellcode:
constructor TSquare.Create(X: integer; Y: integer);
begin
 inherited Create;

 FTest := Test;
end;
und aufrufen:
Delphi-Quellcode:
Square1 := TSquare.Create(12345);
Klappt aber irgendwie nicht. Oder habe ich da was komplett falsch verstanden?
:?:

Christian Seehase 6. Nov 2003 20:35

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

die Deklaration des Konstruktors muss natürlich mit der der Implementierung übereinstimmen:

Delphi-Quellcode:
type
  TSquare = class(TObject)
  private
   FTest: integer;
  public
    constructor Create(Test: Integer);
  end;

implementation

constructor TSquare.Create(Test: Integer);
begin
  inherited Create;
  FTest := Test;
end;
 
// an einer Stelle, wo die Klasse benutzt wird

var
  Square1 : TSquare;

begin
  Square1 := TSquare.Create(12345);
  //...
end;
So sollte es gehen, auch wenn so eine Klasse noch nicht viel Sinn macht, und nur als Beispiel dient.

Nonsense 6. Nov 2003 20:40

Re: Erste Schritte mit Klassen - Wer hilft?
 
@Christian Seehase: Hab's genauso wie du, der Fehler lag woanders. Es klappt jedenfalls.
Wie kann ich jetzt beliebig viele Ableger der Klasse erstellen? Ich meine ohne das ich diese immer extra deklarieren muss ("Square1", "Square2", etc.)?
Hab dazu noch gar nix gefunden (weder in meinen Büchern nochunter Delphi-Source).

Christian Seehase 6. Nov 2003 20:46

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

wenn Du eine Klasse erstellst, die keinen Owner hat, wie z.B. von TComponent abgeleitete Klassen, musst Du Dich zwingend auch selber wieder um die Freigabe der durch die Instanzen der Klasse belegten Resourcen kümmern.
Ausserdem:
Um mit den Instanzen der Klasse arbeiten zu können, musst Du sie irgendwo speichern, mal unabhängig davon, ob sie nun einen Owner haben oder nicht.
Dazu könntest Du z.B. auch eine Tabelle (array) oder ein TList Objekt verwenden.
Dann müsstest Du zumindest nicht je eine Variable deklarieren.

Nonsense 6. Nov 2003 21:40

Re: Erste Schritte mit Klassen - Wer hilft?
 
Meine ganz Denkweise kommt daher, dass ich mal vor Ewigkeiten (gute 3 Jahre :wink: ) in DelphiX programmiert habe. Dort gab es einen 2D-Shooter, bei dem man, wieder der Name schon sagt, auch schießen konnte. Ich glaube mich zu erinnern, dass die Schüsse Instanzen einer Klasse waren.

Ist ja auch egal, es geht mir ja mehr um die Theorie als um grafische Spielereien.

Deshalb dachte ich, dass man einfach unendlich viele Instanzen erstellen kann. Da ist es ja egal, dass ich die Resourcen selbst freigeben muss, da sie ja sowieso nach ein paar Pixeln wieder gelöscht werden.

Also ist direkt nicht möglich, wie ich es mir vorgestellt habe?

Christian Seehase 6. Nov 2003 21:49

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

Du kannst natürlich einer Variablen beliebig oft ein Objekt zuweisen.
Du musst halt nur daran denken, vor einer erneuten Zuweisund das jeweils enthaltenen Objekt wieder freizugeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Seite 1 von 2  1 2      

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