![]() |
Einer Methode Klassen-eigene Variablen übergeben?
Hallo,
ich habe eine Klasse mit 4 Variablen (Integer). Nun möchte ich diese 4 Variablen verändert, d.h. inkrementieren oder dekrementieren. Da ich nicht für jede der 4 Variablen eine Prozedur für Inc und Dec schreiben will, dachte ich mir, dass man doch eigentlich nur die Klassen-eigene Variable übergeben müsste. Pustekuchen. Funktioniert nicht.
Delphi-Quellcode:
Hat jemand eine Idee?
TStatistics = class(TObject)
private FNumFox : Integer; FNumGrass : Integer; FNumRabbit: Integer; FNumSand : Integer; public constructor Create; procedure DecNumCreature(NumCreature: Integer); procedure IncNumCreature(NumCreature: Integer); property NumFox: Integer read FNumFox; property NumGrass: Integer read FNumGrass; property NumRabbit: Integer read FNumRabbit; property NumSand: Integer read FNumSand; end; [...] procedure TStatistics.DecNumCreature(NumCreature: Integer); begin Dec(NumCreature, 1); end; Aufruf mit: Statistics.IncNumCreature(Statistics.NumFox); |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Moin Nonsense,
wenn Du die Property als Read Only deklarierst (write Angabe fehlt), kannst Du sie natürlich nicht verändern. |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Delphi-Quellcode:
Eine andere Variante wäre vielleicht noch einen Zeiger auf das Element zu übergeben und durch den Vergleich der Adressen auf das richtige Feld zu schliessen.
type
TNums = (numFox, numGrass, ..); .. procedure IncNumCreature(const Num: TNum); begin case Num of numFox: Inc(FNumFox); .. MfG, Tryer |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Zitat:
@Tryer: Gibt es da denn keinen eleganteren Weg? |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Hi,
1. vergiß das mit den Pointern 2. Hör auf Christian 3. Schon mal was von Fehlermeldungen gehört, wenn du möchtest, das man dir hilft, dass sei bitte nicht zu faul, diese uns mitzuteilen. Grüsse Woki |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Zitat:
|
Re: Einer Methode Klassen-eigene Variablen übergeben?
Delphi-Quellcode:
Probier es mal so.
TStatistics = class(TObject)
private FNums: Array[0..3] of Integer; public constructor Create; procedure DecNumCreature(NumCreature: Integer); procedure IncNumCreature(NumCreature: Integer); property NumFox: Integer read FNums[0] write FNums[0]; property NumGrass: Integer read FNums[1] write FNums[1]; ... end; Procedure TStatistics.IncNumCreature(Index: Integer); Begin FNums[Index] := FNums[Index]+1; End; Wenn Du, wie von Tryer angesprochen, einen Aufzählungstypen erstellst, wird es auch noch übersichtlich, und Du kannst die Methoden mit KLartext aufrufen.
Delphi-Quellcode:
Gruß, teebee
MyStatistics.IncNumCreature(NumFox);
[edit] 'Inc' ersetzt... [/edit] |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Ich denke du musst , diese Zeile:
Code:
durch das
property NumFox: Integer read FNumFox;
Code:
ersetzen!
property NumFox: Integer read FNumFox; write FNumFox;
rsilo |
Re: Einer Methode Klassen-eigene Variablen übergeben?
Zitat:
PS: Da kommt übrigens kein ";" vor's write. |
Re: Einer Methode Klassen-eigene Variablen übergeben?
properties sind halt keine variablen! ...sie fühlen sich nur so an :stupid:
Was spricht gegen inc(FNumFoo); ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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