![]() |
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 |
Re: Erste Schritte mit Klassen - Wer hilft?
Kann mir keiner ein paar Anhaltspunkte geben?
:cry: :cry: :cry: |
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).
|
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... |
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:
kann ich eine Klasse erzeugen.
type
TSquare = class(TObject) private FTest: integer; public end; Wie kann ich jetzt einen Ableger erstellen? Ich habe was von
Delphi-Quellcode:
gelesen.
constructor Create(Test: Integer);
Demnach müsste ich nur noch des Konstruktor schreiben:
Delphi-Quellcode:
und aufrufen:
constructor TSquare.Create(X: integer; Y: integer);
begin inherited Create; FTest := Test; end;
Delphi-Quellcode:
Klappt aber irgendwie nicht. Oder habe ich da was komplett falsch verstanden?
Square1 := TSquare.Create(12345);
:?: |
Re: Erste Schritte mit Klassen - Wer hilft?
Moin Nonsense,
die Deklaration des Konstruktors muss natürlich mit der der Implementierung übereinstimmen:
Delphi-Quellcode:
So sollte es gehen, auch wenn so eine Klasse noch nicht viel Sinn macht, und nur als Beispiel dient.
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; |
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). |
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. |
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? |
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 01:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz