![]() |
Klassen-Eigenschaft als Array
Hallo zusammen,
ich probiere mich gerade an Klassen. Ich habe mich schon durch ein paar Tutorials gewühlt. Eine Klasse zu erzeugen mit Eigenschaften und so weiter funktioniert auch wunderbar. Ich habe die Klasse wie folgt erstellt :
Delphi-Quellcode:
Wenn ich das ganze jetzt in mehrmals aufrufe, dann werden die Werte hintereinander geschrieben. Nun möchte ich die Ergebnisse von FWert1 und FWert2 in ein Array schreiben, so das die Eigenschaft Wert1 und Wert2 als array of integer ist. Wie mache ich aus der einfachen Integer-Wert-Eigenschaft ein Array Of Integer ?
TSample = class(TObject)
private FWert1 : integer; FWert2 : integer; public constructor Create; property Wert1: integer read FWert1; property Wert2: integer read FWert2; procedure GetInfos; end; constructor Create; begin GetInfos; end; procedure GetInfos; begin FWert1 := FWert1 + random(10); FWert2 := FWert2 + (Random(10) + FWert1); end; |
Re: Klassen-Eigenschaft als Array
z.B. über funktionen:
Delphi-Quellcode:
Da kann man natürlich auch die Variablen in ein Array legen.
TSample = class(TObject)
private FWert1 : integer; FWert2 : integer; function getWert(i:integer); public constructor Create; property Wert[i:integer]: integer read getWert; procedure GetInfos; end; function TSample.getWert(i:integer); begin case i of 1: result:=FWert1; 2: result:=FWert2; else raise Exception.create('Idiot'); end; end; Edit: kleiner Fehler behoben |
Re: Klassen-Eigenschaft als Array
Meinst du das so:
Delphi-Quellcode:
@roter kasten:
TSample = class(TObject)
private FWert1 : integer; FWert2 : integer; function GetWert(idx: Integer): Integer; public constructor Create; property Wert[idx: Integer]: Integer read GetWert; procedure GetInfos; end; function TSample.GetWert(idx: Integer): Integer; begin case idx of 0: result := FWert1; 1: result := FWert2; end; end; och mennoooo :/ du warst schneller |
Re: Klassen-Eigenschaft als Array
Zitat:
|
Re: Klassen-Eigenschaft als Array
hallo,
zuerst solltest du einen Typ TIntArray definieren: type TIntArray = array of Integer; Dann brauchst du ein Feld FIntArray: TIntArray. Jetzt musst du noch das Property definieren: property IntArray[index: Integer]: TIntArray read GetInteger; GetInteger ist dabei eine Getter-Funktion, die wie folgt definiert ist: function GetInteger(Index: Integer): Integer; Die Implementation für GetInteger sollte dan so lauten: function TDeineKlasse.GetInteger(Index: Integer):Integer; begin if FIntArray <> nil then if Length(FIntArray) < Index then result := FIntArray[Index]; end; Hoffe der Code ist selbstsprechend genug! mfg, heiopei PS: du kannst auch mehrdimensionale Properties definieren, indem du statt FIntArray[Index: Integer] z.B. FIntArray[Breite, Tiefe: Integer] schreibst! |
Re: Klassen-Eigenschaft als Array
Zitat:
|
Re: Klassen-Eigenschaft als Array
Zitat:
|
Re: Klassen-Eigenschaft als Array
Zitat:
Delphi-Quellcode:
function getWert(i:integer);
Zitat:
|
Re: Klassen-Eigenschaft als Array
Zitat:
|
Re: Klassen-Eigenschaft als Array
Hallo,
ja ich glaube schon, da du ja immer wissen musst, auf welches Feld du zugreifen musst, aus dem der Wert jeweils gelesen werden soll. Es kann aber sein, das du noch was mit der Direktive "index" machen kannst. Erkundige dich mal in der OH, ich selbst hab das noch nie verwendet, ich weis nur das es das gibt. mfg, heiopei |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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