AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verschachtelte Records

Ein Thema von Shadowwalker · begonnen am 24. Apr 2018 · letzter Beitrag vom 25. Apr 2018
Antwort Antwort
Shadowwalker

Registriert seit: 23. Apr 2018
22 Beiträge
 
#1

Verschachtelte Records

  Alt 24. Apr 2018, 21:05
Um Programmoptionen strukturiert irgendwo ablegen zu können statt in globalen Variablen dachte ich an Records in Art

Delphi-Quellcode:
type
 TProgrammEinstellungen = record
 public
  type Allgemein = record
   class var Bla...
  end;

  type Dateien = record
   class var Bla...
  end;
 end;
Lesend und schreibend etwa so erreichbar
Delphi-Quellcode:
 TProgrammEinstellungen.Allgemein.Bla :=

 TProgrammEinstellungen.Dateien.Bla :=
So wäre das ein bisschen geordnet und man hat die Variablen thematisch noch einmal gruppiert.
Macht man das so oder doch ganz anders?
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Verschachtelte Records

  Alt 24. Apr 2018, 21:17
Ich habe mir dafür eine „richtige“ Klasse TSettings erstellt. Dann einfach

Delphi-Quellcode:
Settings := TSettings.Create;
Settings.LoadFromFile(...);
[...]
Lässt sich einfach erweitern und alles ist schön gekapselt. Da ich diese übers Netzwerk als Stream versende habe ich ihr noch die entsprechenden LoadFromStream und SaveToStream Methoden spendiert..

Warum Records und keine Klasse?
Michael Kübler
  Mit Zitat antworten Zitat
Shadowwalker

Registriert seit: 23. Apr 2018
22 Beiträge
 
#3

AW: Verschachtelte Records

  Alt 24. Apr 2018, 21:21
Weil mir die Autovervollständigung sonst in der Liste zu viele Dinge anzeigt, die ich selber nirgendwo deklariert habe.
  Mit Zitat antworten Zitat
Redeemer
Online

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.022 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Verschachtelte Records

  Alt 24. Apr 2018, 23:57
Was soll class var bei einem Record sein?

Anyway. Records werden nicht ineinander veraschachtelt deklariert sondern untereinander. Also erst Anwendung, Dateien und dann Programmeinstellungen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.388 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Verschachtelte Records

  Alt 25. Apr 2018, 09:27
Ich denke die ganze Diskussion könnte und sollte in mehrere Aspekte aufgeteilt werden:
1. Record statt einzelne Variablen
2. class var statt global
3. Klasse statt record

Zu 1.: Statt einzelnen globalen Variablen finde ich es schon besser diese in einen Records zusammenzufassen.

Zu 2.: eine class var ist quasi wie eine globale Variable. Sie ist immer da und wird nicht wie eine Objekt jeweils instanziiert. Da würde ich doch eine globale Variable vom typ des records besser finden. Es ist ehrlicher und nicht so versteckt. Vorteil ist auch noch, dass man die Variable auch noch kürzer benennen kann und den Typ schön lang. Bei mir heißt einer dieser Variablen schlicht "G".

Zu 3.: ich wüsste jetzt nicht was eine Klasse da bringen sollte. Größere Logik sollte die eh nicht enthalten, kleinere Methoden kann man auch in records machen. Nachteil ist, dass man die Klasse dann instanzieren muss.
  Mit Zitat antworten Zitat
Shadowwalker

Registriert seit: 23. Apr 2018
22 Beiträge
 
#6

AW: Verschachtelte Records

  Alt 25. Apr 2018, 10:22
Hat es einen speziellen Grund, weshalb man Records nicht verschachteln darf?

Die Verschachtelung wollte ich machen, da ich dann sowas aufrufen kann TProgrammEinstellungen.Allgemein.Bla.
Ohne Verschachtelung könnte ich auch das hier aufrufen Allgemein.Bla und ich wäre nicht gezwungen, TProgrammEinstellungen vor alles zu schreiben.
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
532 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Verschachtelte Records

  Alt 25. Apr 2018, 13:06
Die Antwort kam bereits von Benedikt Magnus

Delphi-Quellcode:

unit recs;

interface

type TA = record
  type TB = record
    a : Integer;
    b : string;
  end;
  type TC = record
    a: Integer;
    b : string;
    c : string;
  end;
end;

implementation

procedure test;
var
 b: TA.TB;
begin
 b.a:=1;
end;

end.
Anwendung dafür ist mir bis jetzt noch keine eingefallen.


Um Programmoptionen strukturiert irgendwo ablegen zu können statt in globalen Variablen dachte ich an Records in Art

Delphi-Quellcode:
type
 TProgrammEinstellungen = record
 public
  type Allgemein = record
   class var Bla...
  end;

  type Dateien = record
   class var Bla...
  end;
 end;
Lesend und schreibend etwa so erreichbar
Delphi-Quellcode:
 TProgrammEinstellungen.Allgemein.Bla :=

 TProgrammEinstellungen.Dateien.Bla :=
So wäre das ein bisschen geordnet und man hat die Variablen thematisch noch einmal gruppiert.
Macht man das so oder doch ganz anders?
  Mit Zitat antworten Zitat
Antwort Antwort


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