AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Klassen / property Aufbau

Ein Thema von SimStar001 · begonnen am 5. Jun 2009 · letzter Beitrag vom 5. Jun 2009
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 17:16
Hallo, ich habe eine Frage betreffs einer eigenen Klasse.

Und zwar ist sie z.b. so definiert:

Delphi-Quellcode:

type TTestData = record
      T1 : integer;
      T2 : integer;
end;

type TData = record
      Wert1 : integer;
      Wert2 : TTestData;
end;



type TMeineKlasse = class(TObject)
private
FData : array of TData;
procedure SetWert2 (Index : integer; AValue : integer);
function GetWert2(Index : integer) : Integer;
public
// hier soll die Property hin
constructor create;
destructor destroy;

Property Wert2[Index : integer] : TTestData read GetWert2 write SetWert2;
end;

Jetzt ist meine Frage wie ich es hinbekomme, dass wenn ich das Object mein Objekt erstellt habe einen solchen Zugriff hinbekomme:

Delphi-Quellcode:
MeinObject := TMeineKlasse.create;
MeinObject.Wert2[0].T2 := 4;
Geht sowas, oder muss ich für jeden parameter von Wert2 eine eigene Property definieren!?

Danke
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 17:25
Delphi-Quellcode:
type
  TMeineKlasse = class(TObject)
  private
    FData : array of TData;
    function GetWert2(Index: integer): TTestData;
  public
    // hier soll die Property hin
    constructor create;
    destructor destroy; override;

    Property Wert2[Index : integer] : TTestData read GetWert2;
  end;

[...]

function TMeineKlasse.GetWert2(Index: integer): TTestData;
begin
  Result := FData[index].Wert2;
end;
Write kannst Du dabei vergessen...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 17:26
Halt. Ohne von Records auf Klassen oder Zeiger umzustellen, funktioniert es nicht. Es gab hier schon einige Threads über dieses Problem.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 17:35
Hmm... glaube das Problem hatte ich sogar selber mal und hatte dazu sogar selber ein Thread aufgemacht.

Naja, in meinem Alter darf man auch mal vergesslich werden
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 17:50
Zitat von Apollonius:
Halt. Ohne von Records auf Klassen oder Zeiger umzustellen, funktioniert es nicht.
Man kann auch eine temporäre lokale Variable anlegen. Ich würde aber die Lösung mit der Umstellung auf Objekte auch vorziehen.

Delphi-Quellcode:
var
  TmpWert: TTestData;
begin
  MeinObject := TMeineKlasse.create;
  TmpWert := MeinObject.Wert2[0];
  TmpWert.T2 := 4;
  MeinObject.Wert2[0] := TmpWert;
end;
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Frage zu Klassen / property Aufbau

  Alt 5. Jun 2009, 18:06
Sicher, man kann eine lokale Variable verwenden. Allerdings kann dann, abhängig von der Implementation von Getter und Setter, die Semantik eine ganz andere sein. Man stelle sich einmal vor, dass die Speicherseite unseres Objektes absichtlich geunmappt ( ) wurde, mit der Absicht, in einem Exceptionhandler auf Zugriffe zu reagieren. Der Exceptionhandler wird dann einen Lesezugriff feststellen, auf den er mitunter nicht vorbereitet ist. Zugegebenermaßen ist dieses Beispiel etwas gestellt, da man bei solchen Aktionen kaum Objektinstanzen verwenden wird. Aber es kann bei dem genannten Workaround durchaus zu unerwarteten Komplikationen führen. Das Hauptargument dürfte aber wohl sein, dass zweimal unnötig Speicher kopiert wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:37 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