Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ableiten von Records (https://www.delphipraxis.net/156533-ableiten-von-records.html)

himitsu 6. Dez 2010 11:59

AW: Ableiten von Records
 
Delphi-Quellcode:
property Feld1: Integer read Base.Base.Feld1 write Base.Base.Feld1;
.
hatte sowas auch mal versucht und bei mir ging es damals irgendwie auch nicht.
(nja, die letzen Male, wo ich sowas gätte gebrauchen können, da hab ich eh intervaces genutzt, wo sowieso keine Zugriffe auf Felde möglich sind)

PS: Das Inline optimiert den Getter/Setter eh weg. (also bei einem Objekt)

uligerhardt 6. Dez 2010 12:00

AW: Ableiten von Records
 
Zitat:

Zitat von SirThornberry (Beitrag 1066542)
Das bringt mich nur kein Stückchen Weiter.
Dann müsste ich ja für jedes Feld in meinem Record (sind etwa 30 Stück) ein Property definieren.

Es ist immerhin eine Lösung, die man an einer zentralen Stelle implementieren kann, statt quer durch den ganzen Quellcode zu gehen und Casts einzubauen :mrgreen:. Und mit etwas Makrotrickserei ist das auch kein Riesenaufwand.

uligerhardt 6. Dez 2010 12:05

AW: Ableiten von Records
 
Zitat:

Zitat von himitsu (Beitrag 1066545)
Delphi-Quellcode:
property Feld1: Integer read Base.Base.Feld1 write Base.Base.Feld1;
.
hatte sowas auch mal versucht und bei mir ging es damals irgendwie auch nicht.

Also, das compiliert:
Delphi-Quellcode:
  TRecordBase = record
    Feld1: Integer;
    Feld2: string;
  end;

  TMyNewRecord = record
  public
    Base: TRecordBase;
    extraData: Byte;
    property Feld1: Integer read Base.Feld1 write Base.Feld1;
  end;

  TMyNewRecord2 = record
  public
    Base: TMyNewRecord;
    extraData: Byte;
    property Feld1: Integer read Base.Base.Feld1 write Base.Base.Feld1;
  end;
Ob's auch in komplizierteren Fällen compiliert und vor allem auch funktioniert, hab ich jetzt nicht ausprobiert. :mrgreen:

Zitat:

Zitat von himitsu (Beitrag 1066545)
PS: Das Inline optimiert den Getter/Setter eh weg. (also bei einem Objekt)

OK. Aber schreiben musste das Ding trotzdem. ;-)

himitsu 6. Dez 2010 12:16

AW: Ableiten von Records
 
Zitat:

Zitat von uligerhardt (Beitrag 1066548)
OK. Aber schreiben musste das Ding trotzdem. ;-)

Autovervollständigung, Copy&Paste und nach 'ner Weile schreibt man sowas blind in wenigen Sekunden dahin. :stupid:

pustekuchen 25. Okt 2013 08:03

AW: Ableiten von Records
 
Hallo,

*thread ausgrab*

gab es Verbesserungen in den letzten Delphi bezüglich der Vererbung von Records?

Stevie 25. Okt 2013 08:18

AW: Ableiten von Records
 
Ich würde mal sagen, das ist nach wie vor ein Fall für old style objects.

MacGuyver 12. Nov 2015 13:50

AW: Ableiten von Records
 
Moin Leute :hi:

Entschuldigt, dass ich diesen alten Bug wieder ausgrabe. Ich habe das Thema für meine DLL-Schnittstelle benötigt. Meine Lösung:

Eine Include-Datei (DLLdef.inc):
Delphi-Quellcode:
{$IFDEF Ver1}
  a : Byte;
  b : AnsiString;
{$ENDIF}

{$IFDEF Ver2}
  c : Byte;
  d : AnsiString;
{$ENDIF}

{$IFDEF Ver3}
  e : Byte;
  f : AnsiString;
{$ENDIF}
Und den Code in der Unit:
Delphi-Quellcode:
type
{$DEFINE Ver1}
  TVer1 = packed record
  {$INCLUDE DLLdef.inc}
  end;

{$DEFINE Ver2}
  TVer2 = packed record
  {$INCLUDE DLLdef.inc}
  end;

{$DEFINE Ver3}
  TVer3 = packed record
  {$INCLUDE DLLdef.inc}
  end;
Im Code verhält sich das dann wie erwartet.

Mavarik 12. Nov 2015 16:33

AW: Ableiten von Records
 
Wenn Du statische Include machst... Kannst Du den code auch direkt da hin schreiben...

Das hat nix mit Vererbung zu tun...

MacGuyver 27. Jan 2016 12:42

AW: Ableiten von Records
 
Es hat einen großen Vorteil. Wenn du einen Typen mit 50 Variablen hast und fügst eine an, darf beim Kopieren nichts falsch laufen. Ist da ein Fehler in einer Zwischenversion, suchst du dir 'nen Wolf. Wenn du mit mehreren Include-Datei arbeitest, kannst du sogar eine Hirarchie aufbauen.

Ich weiß, dass es hier keine Vererbung gibt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.
Seite 2 von 2     12   

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