Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Record zu Class umschreiben (Getter/Setter) (https://www.delphipraxis.net/193291-record-zu-class-umschreiben-getter-setter.html)

EWeiss 12. Jul 2017 16:35

AW: Record zu Class umschreiben (Getter/Setter)
 
Zitat:

Du kannst auf properties in records verwenden.
Ich denke so wie herausgelesen weis er das alles.. ;)
Er möchte so wenig ändern wie möglich, darum geht es ihm.
Zitat:

OHNE 1000 Stellen im Code ändern zu müssen
Nur wie soll das gehen :)

gruss

Fritzew 12. Jul 2017 16:38

AW: Record zu Class umschreiben (Getter/Setter)
 
Zitat:

Nur wie soll das gehen
genau deshalb..... Properties in den Record, dann muss er nur die Record Definition anpassen.....

Glados 12. Jul 2017 16:40

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)

bra 12. Jul 2017 17:12

AW: Record zu Class umschreiben (Getter/Setter)
 
Im Prinzip kann man records ja fast wie Klassen verwenden (mit ein paar Einschränkungen):
http://docwiki.embarcadero.com/RADSt...8erweiterte.29

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...

Glados 12. Jul 2017 17:14

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;

himitsu 12. Jul 2017 18:18

AW: Record zu Class umschreiben (Getter/Setter)
 
Zitat:

Zitat von EWeiss (Beitrag 1376566)
Zitat:

Du kannst auf properties in records verwenden.
Ich denke so wie herausgelesen weis er das alles.. ;)
Er möchte so wenig ändern wie möglich, darum geht es ihm.
Zitat:

OHNE 1000 Stellen im Code ändern zu müssen
Nur wie soll das gehen :)

gruss

Bei Record belassen, die Felder umbenennen und die Property so wie das Feld nennen.

Glados 12. Jul 2017 18:22

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.

stahli 12. Jul 2017 18:23

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).

Glados 12. Jul 2017 18:26

AW: Record zu Class umschreiben (Getter/Setter)
 
Zitat:

Du musst ein privates Feld fI als Datenspeicher nutzen.
Das ist doch schon lange erledigt :P Habe sogar noch Edit an meinen Beitrag geschrieben :P

stahli 12. Jul 2017 18:29

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 03:30 Uhr.
Seite 2 von 4     12 34      

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