![]() |
AW: Record zu Class umschreiben (Getter/Setter)
Zitat:
Er möchte so wenig ändern wie möglich, darum geht es ihm. Zitat:
gruss |
AW: Record zu Class umschreiben (Getter/Setter)
Zitat:
|
AW: Record zu Class umschreiben (Getter/Setter)
Ist es irgendwie auch möglich den TMultiReadExclusiveWriteSynchronizer den ich nutze in diese Unit, welche dann mein Record enthält, einzubinden?
Ich möchte in diese Unit nämlich nur ungern andere Units per uses einbinden. Frage: wenn ich dennoch eine Class daraus mache mit Propertys und allem drum und dran - dann könnte ich den TMultiReadExclusiveWriteSynchronizer doch im überschriebenen Create() erstellen und meine Klasseninstanz im FormCreate meiner Hauptform, sehe ich das richtig? Und ändern müsste ich auch nicht viel da wo ich meine Variablen abrufe. (bzw im Initialization meiner Globals-Unit) |
AW: Record zu Class umschreiben (Getter/Setter)
Im Prinzip kann man records ja fast wie Klassen verwenden (mit ein paar Einschränkungen):
![]() Da könntest du deine Variablen einfach in Setter/Getter verpacken, mit den jeweiligen Aufrufen drin. Ob das dann wirklich schön ist, sei mal dahin gestellt... |
AW: Record zu Class umschreiben (Getter/Setter)
Edit
Ok ich habs. Habe Fi: Integer in Private vergessen. Ich denke ich werde Class verwenden und dann doch hier und da ein wenig umschreiben. Ich mache es lieber einmal richtig, als dass ich später 100 Fehler drin habe. Das hier funktioniert jedenfalls nicht
Delphi-Quellcode:
unit classTest_;
interface uses System.SysUtils; type TTest_ = class private Fi: Integer; // VERGESSEN! Test: TMultiReadExclusiveWriteSynchronizer; function Geti: Integer; procedure Seti(const Value: Integer); public constructor Create; overload; destructor Destroy; override; property i: Integer read Geti write Seti; end; implementation constructor TTest_.Create; begin Test := TMultiReadExclusiveWriteSynchronizer.Create; end; destructor TTest_.Destroy; begin Test.Free; inherited; end; function TTest_.Geti: Integer; begin Test.BeginRead; Result := Fi; // Fi, nicht i Test.EndRead; end; procedure TTest_.Seti(const Value: Integer); begin Test.BeginWrite; Fi := Value; // Fi, nicht i Test.EndWrite; end; end.
Delphi-Quellcode:
var
TestInstance: TTest_; begin TestInstance := TTest_.Create; TestInstance.i := 123; ShowMessage(TestInstance.i.ToString); TestInstance.Free; |
AW: Record zu Class umschreiben (Getter/Setter)
Zitat:
|
AW: Record zu Class umschreiben (Getter/Setter)
Hat ein Record hier denn vernünftige Vorteile gegenüber einer Klasse?
Dass ich eine Klasseninstanz erstellen und wiederfreigeben muss, damit habe ich kein Problem. |
AW: Record zu Class umschreiben (Getter/Setter)
Du musst ein privates Feld fI als Datenspeicher nutzen.
Sorry, ich habe die Änderung übersehen... Eine Klasse finde ich übersichtlicher, da die Speicherverwaltung m.E. einfacher ist. Aber das ist vermutlich einfach Geschmacksache (sofern man keine Vererbung oder Interfaces benötigt). |
AW: Record zu Class umschreiben (Getter/Setter)
Zitat:
|
AW: Record zu Class umschreiben (Getter/Setter)
Ja, die Korrektur ist doch auch schon lange erledigt... :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 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