AGB  ·  Datenschutz  ·  Impressum  







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

Ableiten von Records

Ein Thema von SirThornberry · begonnen am 6. Dez 2010 · letzter Beitrag vom 27. Jan 2016
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

AW: Ableiten von Records

  Alt 6. Dez 2010, 12:59
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)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#12

AW: Ableiten von Records

  Alt 6. Dez 2010, 13:00
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 . Und mit etwas Makrotrickserei ist das auch kein Riesenaufwand.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#13

AW: Ableiten von Records

  Alt 6. Dez 2010, 13:05
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.

PS: Das Inline optimiert den Getter/Setter eh weg. (also bei einem Objekt)
OK. Aber schreiben musste das Ding trotzdem.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Ableiten von Records

  Alt 6. Dez 2010, 13:16
OK. Aber schreiben musste das Ding trotzdem.
Autovervollständigung, Copy&Paste und nach 'ner Weile schreibt man sowas blind in wenigen Sekunden dahin.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von pustekuchen
pustekuchen

Registriert seit: 27. Aug 2010
265 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Ableiten von Records

  Alt 25. Okt 2013, 09:03
Hallo,

*thread ausgrab*

gab es Verbesserungen in den letzten Delphi bezüglich der Vererbung von Records?
Delphi programming is awesome.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: Ableiten von Records

  Alt 25. Okt 2013, 09:18
Ich würde mal sagen, das ist nach wie vor ein Fall für old style objects.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#17

AW: Ableiten von Records

  Alt 12. Nov 2015, 14:50
Moin Leute

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.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: Ableiten von Records

  Alt 12. Nov 2015, 17:33
Wenn Du statische Include machst... Kannst Du den code auch direkt da hin schreiben...

Das hat nix mit Vererbung zu tun...
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#19

AW: Ableiten von Records

  Alt 27. Jan 2016, 13:42
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!
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:10 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