![]() |
Delphi-Version: 10.4 Sydney
zu manchen Records gibt es keine Rtti
Hi All,
ich muss eine alte SW REST-Full machen. Die Daten in JSON wandeln. Habe mich durch zig Foren und Beitäge gewühlt und festgestellt, daß alle bloß Klassen serialisieren. Mit Infos zu Records sieht es recht mau aus. Oder ich habe falsch gefragt :-( habe aber u.a. in: ![]() Mein Problem ist jetzt bei diesen beiden Strukturen (und vielen anderen mehr)
Delphi-Quellcode:
D_DatRecTyp = RECORD
D_BuildStr : BuildStr; {hier neu seit A006} D_AbtlDabei : D_AbtlDabeiTyp; D_AbtlZuord : D_AbtlZuordTyp; D_InstDabei : D_InstDabeiTyp; D_InstKenn : D_InstKennTyp; {0 = allgemein, 1 Med.Inst} D_InstZuord : D_InstZuordTyp; D_FallDabei : D_FallDabeiTyp; D_FallZuord : D_FallZuordTyp; {dummy ?} D_AbtlFall : D_AbtlFallTyp; D_FreigabeF : D_FreigabeFTyp; D_FreigabeI : D_FreigabeITyp; D_RepFreiAb : D_RepFreiAbTyp; D_AnschafM : D_AbtlDrealTyp; {alle MVZ neu seit A005} D_InvestiM : D_AbtlDrealTyp; D_InstndM : D_AbtlDrealTyp; D_VerwaltM : D_AbtlDrealTyp; D_LebensmM : D_AbtlDrealTyp; D_TechnikM : D_AbtlDrealTyp; D_MVZ_EignPaAntNormal : D_AbtlDrealTyp; D_MVZ_EignPaZusErlNorm: D_AbtlDrealTyp; D_MVZ_EignPaAntWahl : D_AbtlDrealTyp; D_MVZ_EignPaZusErlWahl: D_AbtlDrealTyp; D_MVZ_EignPaVersTage : D_AbtlDrealTyp; D_MVZ_FrmdPaAntNormal : D_AbtlDrealTyp; D_MVZ_FrmdPaZusErlNorm: D_AbtlDrealTyp; D_MVZ_FrmdPaAntWahl : D_AbtlDrealTyp; D_MVZ_FrmdPaZusErlWahl: D_AbtlDrealTyp; D_MVZ_FrmdPaVersTage : D_AbtlDrealTyp; D_ArztMinM : D_AbtlDrealTyp; {Achtung! hier wird was reingerechent, entspricht B-Dat aber PerUNabhängig } D_KPIBasisW : BasisWFld; {die Basiswerte zum Punkte ermitteltn } D_KPIPunkte : KPIPktFld; {die daraus resultierenden Punkte } D_SSkPktSum : SSkSumFld; {Hier steht die Summe aller SoftSkillPunkte} END; {of D_DatRecTyp}
Delphi-Quellcode:
das Folgende:
{Entscheidungsdaten ---------------------------------------------------------- }
EInvAltFldTyp = ARRAY[InvAlternTyp] OF BOOLEAN; EInstRecTyp = RECORD InvAlt : EInvAltFldTyp; OutSourc : BOOLEAN; DienstlE : LONGINT; dummy : REAL; {für ev einheiten in real} DienstlP : REAL; END; EInstFldTyp = ARRAY[InstTypD] OF EInstRecTyp; ENutzRecTyp = RECORD UmwZi : SMALLINT; ErwZi : SMALLINT; BettErl : REAL; END; ENutzFldTyp = ARRAY[AbtlTypD,StatTypD] OF ENutzRecTyp; EPersRecTyp = RECORD Einst : WORD; Entla : WORD; Train : WORD; {tage} NebKo : REAL; END; EPersFldTyp = ARRAY[AbtlTypD,DienstATyp] OF EPersRecTyp; {einstel, entl usw} EVersetzung = ARRAY[AbtlTypD,AbtlTypD] OF WORD; {interne versetzung} EFinaRecTyp = RECORD KrdKurz : REAL; {eventuell ein ARRAY mit Aufzähltyp} KrdLang : REAL; Dividen : REAL; WpKauf : REAL; dummy : REAL; END; EGenFldTyp = ARRAY[GenEntTyp] OF REAL; E_Pg3Typ = RECORD PersEntFld: EPersFldTyp; Versetzung: EVersetzung; PNebKoInst: REAL; END; E_Pg5Typ = RECORD {A004} EGenFld : EGenFldTyp; CodDienst: BOOLEAN; END; E_DatRecTyp = RECORD E_BuildStr: BuildStr; {hier neu seit A006} E_Pg0 : FallVertFldTyp; E_Pg1 : EInstFldTyp; E_Pg2 : ENutzFldTyp; E_Pg3 : E_Pg3Typ; E_Pg4 : EFinaRecTyp; E_Pg5 : E_Pg5Typ; {A004} END; {of E_DatRecTyp} Den Typ E_DatRecTyp bekomme ich angezeigt, den Typ D_DatRecTyp aber NICHT. Emit runtime type information ist true und mir ist nicht klar, wo der Unterschied zu suchen ist??? Die beiden Definitionen stehen in der Unit, in der alles definiert ist, direkt hintereinander. Und das Ganze ist im Interfaceteil nach "type" zu finden. Vieleicht hat jemand einen Tip Charly |
AW: zu manchen Records gibt es keine Rtti
Über Compilerdefines (evtl. inc-Dateien versteckt) kann man die Erstellung von RTTI abschalten bzw. auf das absolute Minimum reduzieren.
Und das wirkt dann auf Unit a, aber nicht auf b, wenn der Compiler-Define nicht über das Projekt definiert ist. |
AW: zu manchen Records gibt es keine Rtti
Danke für den Tip, aber die 2 erwähnten Deklarationen stehen in der selben Unit ohne was dazwischen hintereinander.
Das kanns dann wohl nicht sein. |
AW: zu manchen Records gibt es keine Rtti
Kopiere doch den record bei dem es funktioniert. Dann ändere den Schritt für Schritt in Richtung des neuen und prüfe jedes Mal obs noch funktioniert. So kommst du sicherlich der Ursache näher.
|
AW: zu manchen Records gibt es keine Rtti
Sowas in der Art habe ich jetzt auch begonnen,
aber es muss doch irgendeine Möglichkeit geben, festzustellen/nachzulesen wann der Compiler was macht? Oder bin ich da zu blauäugig? Charly |
AW: zu manchen Records gibt es keine Rtti
Zitat:
Zitat:
![]() ![]() Bis bald... Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz