![]() |
class helper
Hallo,
ich setz zum ersten mal einen class helper ein und hab dazu eine Frage ob das zu Problemen kommen kann oder nicht. Ich habe eine ListBox auf der Form liegen und möchte nun die Klasse TListBox in der Unit um eine Variable erweitern. Ich hab nun folgendes stehen:
Delphi-Quellcode:
Es funktioniert - ich habe die Variable nun zur Verfügung bei einer ListBox-Instanz und kann diese auch problemlos nutzen.
type
TListBoxHelper = class helper for TListBox class var aktive_Datei: String; end; TMainForm = class(TForm) {...} Nur kann es so zu Problemen kommen? - oder ist das genau für so was gedacht gewesen? |
AW: class helper
Hallo,
falls Du die Variable für eine Instanz nutzen möchtest, dann solltest Du ein Feld und keine Klassenvariable nutzen. -- Roman Kassebaum |
AW: class helper
Zitat:
ohne class var gehts nicht |
AW: class helper
Interessanter Artikel dazu:
![]() |
AW: class helper
Zitat:
Dort sind im class helper "nur" procedures und functions deklariert - aber keine einfache Variable. Wenn ich die Variable einfach so definiere:
Delphi-Quellcode:
gibts diesen Fehler:
TListBoxHelper = class helper for TListBox
private aktive_Datei: String; end; Zitat:
Delphi-Quellcode:
versteh ich grad etwas falsch?
class var
aktive_Datei: String; end; (dummerweise ist die Delphi-Hilfe nicht wirklich eine Hilfe dabei) |
AW: class helper
Class Helper können keine zusätzlichen Felder für Instanzen bereitstellen! Es sind lediglich Methoden erlaubt.
|
AW: class helper
Zitat:
Delphi-Quellcode:
die einzige Lösung für mein "Problem"?
class var
|
AW: class helper
Allister Christie hatte mal ein nettes Video dazu veröffentlicht:
![]() Im Grunde kann man damit Dinge wie in normalen Funktionen regeln, nur dass der Compiler so tut, als würde die Funktion zur Klasse gehören. Statt
Delphi-Quellcode:
kannst Du
X := GetResult(MyClass);
Delphi-Quellcode:
schreiben.
X := MyClass.GetResult;
Die Funktion GetResult kann aber nur auf öffentliche Eigenschaften der Klasse zugreifen. Man kann der Klasse KEINE Variablen hinzufügen. (Dass class var geht, hätte ich gar nicht gewusst/gedacht.) |
AW: class helper
In dem Fall muss man sich mit einer Cracker-Klasse behelfen, da geht das dann wieder.
Delphi-Quellcode:
uses Windows, SysUtils, {...,} StdCtrls;
type TListbox = class(StdCtrls.TListbox) private FAktive_Datei: string; public property Aktive_Datei: string read FAktive_Datei write FAktive_Datei; end; TDeinForm = class(TForm) DeineListbox: TListbox; //das ist dann die gerade definierte ... end; |
AW: class helper
Zitat:
aber das ist eine andere Diskussion... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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 by Thomas Breitkreuz