Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record als Property beschreiben? (https://www.delphipraxis.net/142763-record-als-property-beschreiben.html)

divBy0 3. Nov 2009 09:55


Record als Property beschreiben?
 
Hallo,

ich habe ein allgemeine Frage.

In folgender Klasse

Delphi-Quellcode:
TSpsData = class(TObject)
    CycleTime: Cardinal;
    Counter1: Integer;
    Counter2: Integer;
  end;

  TSpsTest = class(TThread)
  private
    { Private-Deklarationen }
    FDataRead: TSpsData;
    FDataWrite: TSpsData;
  public
    property DataRead: TSpsData read FDataRead;
    property DataWrite: TSpsData read FDataWrite write FDataWrite;
  end;
lege ich alle Variablen in ein Objekt, damit ich diese mit einem Property beschreiben kann. Wieso kann man denn da eigentlich keinen Record angeben?

hoika 3. Nov 2009 10:03

Re: Record als Property beschreiben?
 
Hallo,

etwas schwer verständlich,
aber besser kann ich es auch nicht erklären ;)

1


Heiko

himitsu 3. Nov 2009 10:17

Re: Record als Property beschreiben?
 
kurz gesagt: sowas ist bedingt (also fast nie) möglich

Du kannst nur ganze Records zuweisen, abe keine einzelnen Recordteile.

Delphi macht aus (unter der Voraussetzung TSpsData ist ein Record)
Delphi-Quellcode:
SpsTest.DataWrite.Counter2 := x;
Delphi-Quellcode:
property DataWrite: TSpsData read FDataWrite write GetDataWrite;
// GetDataWrite = 'nen symbolischer Getter, damit man es besser erkennt

SpsTest.GetDataWrite.Counter2 := x;

bzw.

InternalTempVar := SpsTest.GetDataWrite;
InternalTempVar.Counter2 := x;
Delphi spricht entwder den Setter oder den Getter an ... niemals Beides (leider).
da hier praktisch zuerst gelesen wird, wird auch nur der Getter genutzt
und da hier nur eine TempVariable geändert wird, landen die Daten nie in der Klasse.

divBy0 3. Nov 2009 10:22

Re: Record als Property beschreiben?
 
Danke, das habe ich gestern bei meiner Suche nicht gefunden. :thumb:

Dann bleibt TSpsData eine Klasse, damit funktioniert es ja. Es hatte mich gestern echt verwirrt, dass das nicht funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 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