AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Record zu Class umschreiben (Getter/Setter)
Thema durchsuchen
Ansicht
Themen-Optionen

Record zu Class umschreiben (Getter/Setter)

Ein Thema von Glados · begonnen am 12. Jul 2017 · letzter Beitrag vom 12. Jul 2017
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Record zu Class umschreiben

  Alt 12. Jul 2017, 16:16
TMyData = class

gruss
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#2

AW: Record zu Class umschreiben

  Alt 12. Jul 2017, 16:20
Ich möchte wirklich nicht unfreundlich sein, aber das weiß ich schon und das war nicht die Frage.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.203 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 16:30
Im Endeffekt möchtest du folgendes automatisiert haben:

Von
Delphi-Quellcode:
   TMyRecord = record
      someField: Integer;
   end;
zu
Delphi-Quellcode:
   TMyObject = class
      private var
         FSomeField: Integer;
      public
         function getSomeField(): Integer;
         procedure setSomeField(const value: Integer);
   end;
Und das für eine beliebige Anzahl an Feldern im Record. Ich kenne keinen in der IDE eingebauten Automatismus dafür, der Model Maker Code Explorer ist aber EXTREM EMPFEHLENSWERT und scheint das zu können.

Ich würde es an deiner Stelle aber trotzdem nicht tun. Erstens versteckst du das ganze Gelocke und Entsperren nur vor dem Aufrufer und zweitens fällt der Code auf die Nase falls du die Felder irgendwo z.B. in eine Methode mit var/out-Parameter gesteckt hast, das geht mit Properties in Delphi ja auch nicht.



PS: Ich möchte auch nicht unfreundlich sein, aber wenn du irgendein globales Gott-Objekt mit "tausend" Variablen hast und jetzt auch noch aus mehreren Threads anfängst die Werte zu manipulieren hast du im Kern wahrscheinlich ganz andere Probleme...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 16:35
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
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 16:38
Zitat:
Nur wie soll das gehen
genau deshalb..... Properties in den Record, dann muss er nur die Record Definition anpassen.....
Fritz Westermann
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#6

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 16:40
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)

Geändert von Glados (12. Jul 2017 um 17:14 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 17:12
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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.415 Beiträge
 
Delphi 12 Athens
 
#8

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 18:18
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#9

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 18:22
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.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Record zu Class umschreiben (Getter/Setter)

  Alt 12. Jul 2017, 16:31
Delphi-Quellcode:
type
 TMyData = record
  a,b,c,d,e,f: string;
  aa,bb,c,dd,ee,ff: Integer;
end;

 TMyDataClass = Class
 private
    fdata : TMyData;
 protected
    function GetA:String;
    procedure SetA(value:string);
          :
    function GetAA:Integer;
    procedure SetAA(Value:integer);
         :
 published
  property a : string read GetA write SetA;
    :
  property aa: integer read GetAA write SetAA;

end;
Um die Erzeugung der Instanzen an den betreffenden Stellen wirst du aber nicht drum rum kommen. Wenn du mit globalen Variablen deines Records arbeitest, reichts aber auch, wenn du dir entsprechend globalen Instanzen erzeugst (z.B. im Initialization-Teil einer Unit). Nicht vergessen die Instanzen auch wieder freigeben !.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:39 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