AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Einer Methode Klassen-eigene Variablen übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

Einer Methode Klassen-eigene Variablen übergeben?

Ein Thema von Nonsense · begonnen am 18. Apr 2004 · letzter Beitrag vom 18. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#1

Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 14:18
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:
  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);
Hat jemand eine Idee?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 14:40
Moin Nonsense,

wenn Du die Property als Read Only deklarierst (write Angabe fehlt), kannst Du sie natürlich nicht verändern.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#3

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 14:43
Delphi-Quellcode:
type
  TNums = (numFox, numGrass, ..);
  
  ..
  procedure IncNumCreature(const Num: TNum);
  begin
    case Num of
      numFox: Inc(FNumFox);
    ..
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.

MfG,
Tryer
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#4

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 16:38
Zitat von Christian Seehase:
Moin Nonsense,

wenn Du die Property als Read Only deklarierst (write Angabe fehlt), kannst Du sie natürlich nicht verändern.
Hatte ich schon probiert, funktioniert nicht. Außerdem habe ich ja 2 Methoden mit denen ich auf die Variablen zugreifen will - würde das denn überhaupt gehen!?
@Tryer: Gibt es da denn keinen eleganteren Weg?
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:02
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
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#6

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:04
Zitat von woki:
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.
Ich kriege lediglich einen Hinweis, dass der zugewiesene Wert von NumCreature nie benutzt wird. Ansonsten bleiben die Werte unverändert (d.h. sind immer noch wie im Contructor deklariert).
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:08
Delphi-Quellcode:
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;
Probier es mal so.
Wenn Du, wie von Tryer angesprochen, einen Aufzählungstypen erstellst, wird es auch noch übersichtlich, und Du kannst die Methoden mit KLartext aufrufen.MyStatistics.IncNumCreature(NumFox); Gruß, teebee

[edit] 'Inc' ersetzt... [/edit]
  Mit Zitat antworten Zitat
rsilo

Registriert seit: 12. Feb 2004
43 Beiträge
 
#8

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:11
Ich denke du musst , diese Zeile:

Code:
property NumFox: Integer read FNumFox;
durch das

Code:
property NumFox: Integer read FNumFox; write FNumFox;
ersetzen!

rsilo
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#9

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:16
Zitat von rsilo:
Ich denke du musst , diese Zeile:

Code:
property NumFox: Integer read FNumFox;
durch das

Code:
property NumFox: Integer read FNumFox; write FNumFox;
ersetzen!

rsilo
Funktioniert nicht.
PS: Da kommt übrigens kein ";" vor's write.
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Einer Methode Klassen-eigene Variablen übergeben?

  Alt 18. Apr 2004, 17:43
properties sind halt keine variablen! ...sie fühlen sich nur so an

Was spricht gegen inc(FNumFoo); ?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz