![]() |
Read/Write Properties in Delphi 2010
Hallo.
Ich habe gerade ein kleines Problem mit Delphi 2010 und folgendem Code(-Beispiel):
Delphi-Quellcode:
Unter Delphi2009 kein Problem, gibt's mit 2010 ein Compile-Error, das der linken Seite (DrawRect.Left := xxx) nichts zugewiesen werden kann. Ich weiß aus Marco Cantu's Delphi2010 Handbuch (Part 2, Seite 21), das sich da was mit Delphi2010 verändert hat, aber ich dachte, mit "write" in der Property-Beschreibung müsste es gehen.
type
TForm4 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FDrawRect: TRect; published { Public-Deklarationen } property DrawRect: TRect read FDrawRect write FDrawRect; end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.FormCreate(Sender: TObject); begin DrawRect.Left := 0; end; Wie löse ich das Problem? Vielen Dank & Gruß, kaju |
Re: Read/Write Properties in Delphi 2010
Hi,
Records als Properties waren schon immer so eine Sache. (Haben in den Delphiversionen wo ich es ausprobiert hatte nie funktioniert). Du kannst dann nur das Record als ganzes schreiben. Ist allerdings sehr unpraktisch. Dafür gibts auch irgendeine gute Erklärung warum das nicht gehen kann soweit ich weiß. Die alternative die ich nur kenne wäre eine Klasse oder ein PRect (was allerdings auch nicht so komfortabel ist) |
Re: Read/Write Properties in Delphi 2010
Delphi-Quellcode:
wird intern zu
Form.DrawRect.Left := x;
Delphi-Quellcode:
Und das war schon immer so ... drum isses gut, daß Delphi dieses jetzt endlich bemängelt.
TempRect := Form.{Get}DrawRect;
TempRect.Left := x; Properties können entweder gelesen ODER gespeicher werden. Hierfür wäre aber eine Lese-Änder-Schreib-Aktion nötig. |
Re: Read/Write Properties in Delphi 2010
Das Fehler in den älteren Delphi-Versionen war einfach, daß der Compiler beim Schreiben eines Record-Properties, bei dem keine Getter-Methode angegeben war, eben direkt das Record-Feld beschrieben hat. Damit funktionierte der Code solange, bis der Entwickler den direkten Feldzugriff in eine Methode umwandelt. Leider merkte man das nicht sofort - lediglich durch ein fehlerhaftes Verhalten des Programms. Die jetzige Warnemeldung vermeidet das Problem daher schon an der Wurzel.
|
Re: Read/Write Properties in Delphi 2010
Hallo.
Danke für die Antwort(en)...aber wie würde man dass dann jetzt richtig schreiben, um über eine Property auf eine TRect-Struktur lesend und schreibend zuzugreifen? Mein Problem ist, das ich eine "alte" Komponente auf Delphi2010 migrieren muss, und dort dummerweise viele dieser Properties so deklariert sind... Gruß, kaju |
Re: Read/Write Properties in Delphi 2010
Zitat:
|
Re: Read/Write Properties in Delphi 2010
Okay...danke...dann muss ich wohl einiges umschreiben...
Lieben Gruß, kaju |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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