AGB  ·  Datenschutz  ·  Impressum  







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

RTTI Attribute verändern

Ein Thema von Neutral General · begonnen am 5. Mai 2014 · letzter Beitrag vom 7. Mai 2014
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: RTTI Attribute verändern

  Alt 6. Mai 2014, 14:50
Ja, ich war mir auch sicher, daß die RTTI (an vielen Stellen) ein Singleton verwenden und die Daten daher nur einmal vorkommen.
Darum hatte ich auch schon Probleme, wenn man die neue RTTI in Threads verwendet.


Aber, wie du am code siehst, hab ich das Create/Destroy des Attributes quasi geloggt und genau da erkennt man, daß es zwei Mal erstellt wird und nach dem "End" auch zwei Mal freigegeben.
Außerdem ist beim letzen Auslesen der zugewiesene Wert weg (ist ja auch die zeite instanz).
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: RTTI Attribute verändern

  Alt 6. Mai 2014, 16:49
Aber, wie du am code siehst, hab ich das Create/Destroy des Attributes quasi geloggt und genau da erkennt man, daß es zwei Mal erstellt wird und nach dem "End" auch zwei Mal freigegeben.
Außerdem ist beim letzen Auslesen der zugewiesene Wert weg (ist ja auch die zeite instanz).
Bei mir ebend nich (XE). Da wird das Create nur einmal aufgerufen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

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

AW: RTTI Attribute verändern

  Alt 6. Mai 2014, 17:30
Aber XE(1) sollte doch XE(1) sein?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: RTTI Attribute verändern

  Alt 6. Mai 2014, 18:19
Sehr eigenartig.

Ich hab das jetzt nochmal in einer einzelnen Anwendung getestet und hier im XE3 gibt es nur eine Instanz.
Angehängte Dateien
Dateityp: 7z Project17.7z (2,1 KB, 5x aufgerufen)
$2B or not $2B

Geändert von himitsu ( 6. Mai 2014 um 20:09 Uhr) Grund: weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: RTTI Attribute verändern

  Alt 6. Mai 2014, 23:52
Sehr eigenartig.

Ich hab das jetzt nochmal in einer einzelnen Anwendung getestet und hier im XE3 gibt es nur eine Instanz.
Und genau diese Anwendung soll unter deinem XE eine andere Ausgabe liefern? Bei mir nicht.
Dann kann das nur an irgendeiner Compileroption liegen, durch die bei der erneuten Zuweisung des Contexts zuerst die Variable gecleared (und somit die TRttiPool Instanz freigegeben) und dann erst das Create aufgerufen wird.

Wenn du das herausfinden willst debug halt mal mit debug dcus in Zeile 151.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

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

AW: RTTI Attribute verändern

  Alt 6. Mai 2014, 23:59
durch die bei der erneuten Zuweisung des Contexts zuerst die Variable gecleared (und somit die TRttiPool Instanz freigegeben) und dann erst das Create aufgerufen wird.
Im Prinip wäre es ja so eigentlich doch auch richtig?
Das Context-Interface in der Variable sollte ja erst freigegeben werden, bevor das Andere dort rein kommt.

Nja, massig Debuginfos, Eurekalog usw.. Da könnte es sich eventuell doch etwas am Verhalten ändern.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: RTTI Attribute verändern

  Alt 7. Mai 2014, 00:07
durch die bei der erneuten Zuweisung des Contexts zuerst die Variable gecleared (und somit die TRttiPool Instanz freigegeben) und dann erst das Create aufgerufen wird.
Im Prinip wäre es ja so eigentlich doch auch richtig?
Das Context-Interface in der Variable sollte ja erst freigegeben werden, bevor das Andere dort rein kommt.

Nja, massig Debuginfos, Eurekalog usw.. Da könnte es sich eventuell doch etwas am Verhalten ändern.
Es wird halt erst Create aufgerufen und dann CopyRecord:

Code:
Unit16.pas.151: Rtti := TRttiContext.Create;
004EA99C 8D8514FFFFFF    lea eax,[ebp-$000000ec]
004EA9A2 E8A197FDFF      call TRttiContext.Create
004EA9A7 8D9514FFFFFF    lea edx,[ebp-$000000ec]
004EA9AD 8D45F8           lea eax,[ebp-$08]
004EA9B0 8B0D90754B00     mov ecx,[$004b7590]
004EA9B6 E8B5D5F1FF      call @CopyRecord
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 19:25 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