AGB  ·  Datenschutz  ·  Impressum  







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

Records und RTTI?

Ein Thema von 3_of_8 · begonnen am 4. Aug 2006 · letzter Beitrag vom 16. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#11

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:00
Hi Sirius,

das Verfahren ist mir noch nicht ganz klar. Würde es denn gehen, und wenn ja wie, dass die
property MyRecord mit in der Liste bei "GetPropList" erscheint?
Was meinst Du?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:03
Leg in TmyRecord mal einen String rein und schaus dir an!
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#13

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:39
Zitat von sirius:
Leg in TmyRecord mal einen String rein und schaus dir an!
hmm .. naja .. Bedingung wäre, TMyRecord nicht zu verändern.
Es handelt sich bei uns um 2 oder 3 neue Standarddatentypen. so wie Double..

Ich hab auch schon geschaut ob man die Unit TypInfo ergänzen und /oder neu compilieren könnte.
Bin da aber nicht weiter gekommen.

Da gibts so SetFloatProp proceduren, bin aber da nicht weitergekommen.
Liegt sowas im Rahmen der Möglichkeiten? oder völlig aussichtslos?

Delphi-Quellcode:
procedure SetFloatProp(Instance: TObject; const PropName: string;
  const Value: Extended);
begin
  SetFloatProp(Instance, FindPropInfo(Instance, PropName), Value);
end;
ich würde gern auch die TTypeKind um einen oder zwei neue Typen erweitern

Delphi-Quellcode:
type
  TTypeKind = (tkUnknown, tkInteger, tkChar, tkEnumeration, tkFloat,
    tkString, tkSet, tkClass, tkMethod, tkWChar, tkLString, tkWString,
    tkVariant, tkArray, tkRecord, tkInterface, tkInt64, tkDynArray);
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:42
Zitat von stoxx:
Liegt sowas im Rahmen der Möglichkeiten? oder völlig aussichtslos?
Wenn der Record so bleibt, ist es aussichtslos.

Delphi unterscheidet strikt zwischen Record mit dynamischen Inhalten (dynamische Arrays, Strings, Interfaces, Variant) und den anderen Records.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#15

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:53
Zitat von sirius:
Wenn der Record so bleibt, ist es aussichtslos.

und wenn man "ganz" viel Aufwand betreiben würde, und die VCL komplett neu compilieren würde?
Und die Unit TypInfo um einen eigenen Typ erweitern würde?

Double hat ja auch keinen eigenen String.

Würde das dann möglich sein, oder spielt der Compiler dann nicht mit?

Die neuen Möglichkeiten der Operatorenüberladung bieten halt schöne Möglichkeiten eines neuen Datentyps.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Records und RTTI?

  Alt 13. Feb 2009, 13:55
Vielleicht (irgendwie gibt es ja auch myDouble), aber ich hab vor Montag keine Zeit da genauer drüber nachzudenken.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#17

Re: Records und RTTI?

  Alt 13. Feb 2009, 14:27
ok, ich danke Dir
ich guck da Montag nochmal
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#18

Re: Records und RTTI?

  Alt 16. Feb 2009, 13:41
Hi Sirius,

ich wollte Dich nochmal fragen, warum der Typ nicht als tkRecord im RTTI System auftaucht?
Muss man den Typ vorher irgendwo registrieren, damit er erfasst wird?
tkRecord muss ja irgendwie einen Sinn haben, oder?



Danke !
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Records und RTTI?

  Alt 16. Feb 2009, 14:15
Sieht schlecht aus. In meinem verlinkten Code hatte ich sowieso die InitTable benutzt (da taucht auch kein double auf, weil es ja weder initialisiert noch finaliziert werden muss).
Bei den published properties (und Methoden) sind mir auch schon ein paar Ungereimtheiten aufgefallen. Z.B. werden bei manchen Methode die Paramter gespeichert ({MethodInfo on}) bei anderen nicht. Das Record scheint etwas besonderes an sich zu haben. Ändern kann man das meiner Meinung nach nicht. Der compiler arbeitet hier ganz autark und legt die RTTI so an, wie er sie benötigt. Die Unit TypInfo eröffnet nur eine Möglichkeit darauf zuzugreifen, sie ist aber keine Vorraussetzung für das Arbeiten des Compilers bzw. das Anlegen der RTTI.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#20

Re: Records und RTTI?

  Alt 16. Feb 2009, 15:46
und man kann diese PropList nicht nachträglich patchen irgendwie? indem man den Eintrag hinzufügt?
Meine Kenntnisse sind dafür zu gering, aber die Liste muss doch irgendwo sein
die Funktion GetPropInfos ist dann leider Assembler

aus Typinfo

Delphi-Quellcode:
function GetPropList(TypeInfo: PTypeInfo; out PropList: PPropList): Integer;
begin
  Result := GetTypeData(TypeInfo)^.PropCount;
  if Result > 0 then
  begin
    GetMem(PropList, Result * SizeOf(Pointer));
    GetPropInfos(TypeInfo, PropList);
  end;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:02 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