![]() |
Typdeklaration array und normaler Typ gleichzeitig
Hi alle,
ich habe in einem Beispiel folgendes gesehen: Trealarray ist als Klasse definiert (wie weiss ich nicht). t:Trealarray; Zugriff einmal t[i,j]:=... als array und gleichzeitig t.xmax als Funktion mit Rückgabewert. sowas wie t[i,j].wert hätt ich ja verstanden. Wie macht man sowas? Über eine Antwort würde ich mich freuen! |
Re: Typdeklaration array und normaler Typ gleichzeitig
Das geht über das sogenannte Default Array Property. Schau dir mal das Property Items in TList an.
|
Re: Typdeklaration array und normaler Typ gleichzeitig
Hi,
ich komm da nicht weiter. Vielleicht fehlt mir auch das nötige Wissen. Ich habe eine eigene Klasse Ttest mit einem default property erzeugt. Hab das so behandelt wie ich Propertys immer behandle.
Delphi-Quellcode:
Irgendwo muss ich dem Teil doch mitteilen wie gross das Array sein soll. Sobald ich in create setlength einfüge verlangt er nach dem I ein "[".
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, math, StdCtrls; type Ttest = class private { Private-Deklarationen } constructor create; function iget(Index: Integer): integer; procedure iput(Index: Integer; Item: integer); //ig:array of integer; public { Public-Deklarationen } property I[Index: Integer]: integer read iGet write iPut; default; end; TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; s:Ttest; implementation {$R *.dfm} constructor Ttest.create; begin //setlength(I,10); end; function Ttest.iget(Index: Integer): integer; begin result:=I[Index]; end; procedure Ttest.iput(Index: Integer; Item: integer); begin I[Index]:=Item; end; procedure TForm1.Button1Click(Sender: TObject); begin label1.caption:=inttostr(s[10]); end; procedure TForm1.FormCreate(Sender: TObject); var f:double;tl:tlist; begin s:=TTtest.Create; s[1]:=0; end; end. Kann mir jemand helfen? Danke im Vorraus! |
Re: Typdeklaration array und normaler Typ gleichzeitig
Du musst auch irgendwo ein Feld haben:
Delphi-Quellcode:
type
Ttest = class constructor create; //der ist selten private private { Private-Deklarationen } FI:array of Integer; //das Feld zum Property function iget(Index: Integer): integer; procedure iput(Index: Integer; Item: integer); //ig:array of integer; public { Public-Deklarationen } property I[Index: Integer]: integer read iGet write iPut; default; end; constructor Ttest.create; begin setlength(FI,10); end; function Ttest.iget(Index: Integer): integer; begin result:=FI[Index]; end; procedure Ttest.iput(Index: Integer; Item: integer); begin FI[Index]:=Item; end; |
Re: Typdeklaration array und normaler Typ gleichzeitig
Hi,
vielen Dank hab's begriffen! Danke für die Mühe! |
Re: Typdeklaration array und normaler Typ gleichzeitig
Nur ganz nebenbei...
Es ist grundsätzlich nicht schlecht sich an gewisse Konventionen zu halten, damit Menschen, die dir auf eine Frage helfen sollen, einen leichteren Einstieg in dein Projekt bekommen. Getter und Setter Methoden werden im der Regel mit GetIrgendwas und SetIrgendwas bezeichnet und dem Feld auf das sie sich beziehen (wie auch im Beispiel von sirius) wird ein großes "F" vorgestellt. Es ist ganz praktisch, dies so zu handhaben, weil alle sofort auf einen einheitlichen Stand sind. |
Re: Typdeklaration array und normaler Typ gleichzeitig
Hi,
war mir klar, hab das im Beispiel, verschlampt. Danke für die Info! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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