AGB  ·  Datenschutz  ·  Impressum  







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

erweitertes Record in abgeleiteter Klasse

Ein Thema von Berni68 · begonnen am 17. Feb 2010 · letzter Beitrag vom 17. Feb 2010
Antwort Antwort
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 09:01
Hallo zusammen,

ich verwende in einer Form einen VST. Die Daten werden ja in einem Record abgelegt.
Von diesem Formular erstelle ich eine abgeletete Klasse, zur Erledigung einer sehr änlichen Aufgabe.
Allerdings benötige ich hier im Datenrecord des VST eine Variable mehr.
Natürlich könnte man dieses Feld in dem Ursprungsrecord definieren und im Ur-VST ungenutzt lassen.
Aber schöner wäre es natürlich, dieses Feld erst in der abgeleiteten Klasse einzuführen.
Ist das möglich? (Gefühlsmäßig würde ich sagen es ist nicht möglich, aber ich würde mich gerne eines besseren belehren lassen.)

Danke für jede Rückmeldung.
Bernhard
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 09:03
Ein Record ist halt keine Klasse
Markus Kinzler
  Mit Zitat antworten Zitat
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#3

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 09:06
Was dann heißt es geht nicht? Auch nicht mit 'Hilfskonstruktionen'?
Bernhard
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 09:12
Da wäre die Variante, dies gleicjh in den Usprungsrecord einzubauen die einfachere
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 09:25
Das heißt, daß Records keine Vererbungshierarchie besitzen und sowas demach auch nicht möglich ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von vsilverlord
vsilverlord

Registriert seit: 7. Jan 2008
Ort: Baden Württemberg- Hohenlohekreis
174 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 10:39
genau die gleiche Frage habe ich auch! Wenn es dafür ein Lösung gäbe, wäre das genial!
Volker
~beware
Wizards First Rule:
People are stupid; given proper motivation, almost anyone will believe almost anything. Because people are stupid, they will believe a lie because they want to believe it’s true, or because they are afraid it might be true
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 10:43
Gibt es nicht ... ein Record läßt sich nicht nachträglich verändern.

Es ist grundsätzlich nicht möglich irgendwelche Typen in ihrer Größe nachträglich zu verändern.
Selbst bei Klassen geht sowas nicht, abgesehn von den Class-Helpern, aber diese fügen nur etwas ab der aktuellen Position hinzu, ohne vorher Deklariertes nachträglich zu ändern.
Genauso ist es bei Forward-Deklararionen.

Das Einzige, welches möglich wäre, ist eine nachträgliche Typkonvertierung,
aber dabei muß man höllisch aufpassen, daß man am Speichermanagement nicht zerschießt.
Delphi-Quellcode:
type
  TMyBasisRecord = record
    ...
    variabel: record
      data: array[0..1023] of byte;
    end;
  end;

  TMyChangedRecord = record
    ... // genau gleiche Deklaration, wie vorher
    variabel: record
      ... // aber nicht mehr, als 1024 Byte (siehe andere Deklaration)
           // und Strings, dynamische Arrays, Interfaces sind verboten,
           // es sei denn man fügt genau an der Selben Stelle im Basis-Record
           // einen Dummy von gleichem Typen ein
    end;
  end;

  TMyAdditionRecord = record
    ... // aber nicht mehr, als 1024 Byte (siehe andere Deklaration)
         // und Strings, dynamische Arrays, Interfaces sind verboten,
         // es sei denn man fügt genau an der Selben Stelle im Basis-Record
         // einen Dummy von gleichem Typen ein
  end;

var X: TMyBasisRecord;

  TMyChangedRecord(X)
  TMyAdditionRecord(X.variabel)
Beim VirtualTreeView wird z.B. die Variante mit dem TMyAdditionRecord für das .Data-Attribut der Nodes angewendet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: erweitertes Record in abgeleiteter Klasse

  Alt 17. Feb 2010, 11:11
Hallo,

die Antwort "Record ist halt keine Klasse" ist doch schon fast die Lösung.

Entweder du machst aus deinem Record eine Klasse
im NodeDataSize (?) wäre dann SizeOf Class -> immer 4 bei 32bit ...

Oder du nimmst eine Hüllklasse

Delphi-Quellcode:
type
  THullClass = class
    rec: TMyRectXXX;
  end;
Du du es erweitern willst,
wäre jetzt

Delphi-Quellcode:
  THullClass2 = class(THullClass)
    varX: Integer
  end;
Seht doof aus, ist es auch
Also mache asu dem Record gleich eine Klasse.


Heiko
Heiko
  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 01:09 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