![]() |
Was ist <Delphi.Personality> in der Dproj Datei
Hallo
in manchen *.dproj Dateien gibt es einen <Delphi.Personality> tree. Wie zum beispiel in dieser hier(nicht meine Datei oder Website sondern ein Internet Fund...) ![]() Wozu ist der da? Mich interessiert vor allem alles Versions bezogene. Also innerhalb dieses Trees <VersionInfo> und <VersionInfoKeys Name="FileVersion">0.7.5.1</VersionInfoKeys> <VersionInfoKeys Name="ProductVersion">0.75</VersionInfoKeys> Kann ich und sollte ich diese Einträge ändern damit sie auf dem selben stand sind wie die Anderen Versionsnummern Einträge des Projekts? |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Personality = verschiedene "Module" in der IDE
z.B. Delphi (was deinem Beispiel entspricht) oder C++Builder entspricht auch dem StartParameter -p ala
Delphi-Quellcode:
,
bds -pDelphi
welches nur die Delphi-Personality lädt, aber nicht den C++Builder (falls installiert) siehe cmd:
Delphi-Quellcode:
bds -?
Betrifft dich, wenn du das RAD-Studio benutzt, wo Delphi und C++Builder enthalten sind oder bei Fremdkomponenten (ich glaub z.B. TMSWebCore) Im BeforeCompile wird diese VersionsInfo aus DPROJ in die VersionRessource in der Projekt-RES synchronisiert. Wir haben einfach die Versions-Ressource in den Projektionen deaktiviert (entfernt), erstellen unsere eigene Ressource als *.RC, lassen sie zu einer *.RES kompilieren und binden sie dann selber in unsere DPK/DPR ein (
Delphi-Quellcode:
bzw.
{$R
Delphi-Quellcode:
)
{$RESOURCE
Es gibt hier und da auch Projekte, um z.B. via Parameter an eine Consolen-Anwendung die Versionsinfos in der EXE/DLL/BPL (post-compile) oder RES/DPROJ (pre-compile) ändern zu können. |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Zitat:
|
AW: Was ist <Delphi.Personality> in der Dproj Datei
Direkt BeforeCompile ist es natürlich ist,
aber es kommt jedenfalls in den Actions des MSBuild-Scripts, welche vor dem Compilieren (DCC) ausgeführt werden. Ja, wenn du alles in der DPROJ löschst, dann wird nicht automatosch die Ressource gelöscht ... das passiert nur, wenn
Delphi-Quellcode:
<VerInfo_IncludeVerInfo>false</VerInfo_IncludeVerInfo>
Hmmm, kann auch sein, dass es was für den Editor ist. :gruebel:
Delphi-Quellcode:
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
Das Letzte der aktiven Node-Groups davon düfte wohl verwendet werden. Blöd ist aber auch, dass die Synchronisation auch andersrum geht. Findet die IDE beim Laden die Ressource in der RES, dann wird in der DPROJ der Knoten eingefügt und auf True gestellt. (nur im Editor, aber nicht beim Kompilieren im MSBuild ... dort erst, nach dem nächsten Speichern in der IDE) Wir hatten ein selten bearbeitet Modul, wo sich ab un an die Version vom Delphi wieder aktivierte und der Linker dann später wegen der doppelten Ressource rumnörgelte, weil sich durch einen Mergefehler eine alte RES wieder einschlich. |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Die VersionsInfo in den <PropertyGroups> im <VerInfo_Keys> Tag mit der CVS setzte ich bereits (FileVersion ProductVersion)
Was mich halt Beschäftigt sind die Versions einträge in dem <Delphi.Personality> tree. Vor allem da alle meine neuen Projekte den Tree gar nicht haben. Ist es ein problem wenn ich die Synchron setze? Oder ist das nicht eine Projekt version sonder die Version von Delphi? Ist das wenn die VersionsInfo für C++ und Delphi abweicht gedacht ? wobei wir wirklich nur Delphi entwickeln. |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Vielleicht sind das einfach nur alte Einträge alter Delphi-Versionen, welche es beim Migrieren der Projektdatei mitgenommen hat?
Früher gab es mal nur eine VersionInfo in der DPROJ (eventuell dieses im <Delphi.Personality>), jetzt kann man für unterschiedliche Configs/Platformen Unterschiedliche haben (ein bzw. mehrere <VerInfo_Keys> in unterschiedlichen Configs) Hier am Besten drauf achten, dass man beim Ändern in der IDE immer zuerst auf Alle-Alle umstellt, da es sonst passieren kann, das die sich "gefühlt" nahezu unkontrollierbar gegenseitig überschreiben und nicht das in der EXE landet, was dort rein soll. |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Zitat:
|
AW: Was ist <Delphi.Personality> in der Dproj Datei
Genau da sind die drinn!
Wir portieren gerade alles von D2007 auf Delphi XE n.m Ok also sind das einfach legacy Einträge in der DProj Datei? Na toll , dann also am besten ignorieren... Vielen Dank! |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Wir von D7 zu XE (OK, dort wurden die DPROJ sowieso neu generiert),
aber auch von XE zu D10 D11 ... Am Besten bei solchen großen Sprüngen (oder generell immer) die DPROJ neu generieren (und leider komplett neu eintichten) und möglichst nicht migrieren. |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Es hat ziemlich gut geklapt, aber wir wollen jetzt das alle Exen die zusammenarbeiten auch immer dieselbe versionsnummer haben...dafür dieses tool.
btw. Muss ich XPathQueries lange aus Internetquellen lernen oder kann man das recht schnell verstehen? |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Ich würde die .dproj-Datei gar nicht anfassen sondern die Versions-Ressource mit einem externen Tool erzeugen, z.B. aus einer INI-Datei. Und zufällig ;-) habe ich dazu auch was:
![]() Das Tool kann im Prinzip auch die .droj-Dateien schreiben, allerdings habe ich das schon ewig nicht mehr benutzt, also keine Garantie, dass es noch funktioniert. Und die Beschreibung auf der Seite ist auch nicht mehr wirklich aktuell, vielleicht sollte ich die mal aktualisieren... |
AW: Was ist <Delphi.Personality> in der Dproj Datei
Ich würde bei einer solchen großen Portierung schlicht die Projektdatei (.bdsproj, .dproj) und die .res Datei löschen und durch das Öffnen der .dpr neu anlegen lassen. Dann setzt du die gewünschten Werte einmal richtig, dann weißt du was drin ist...
|
AW: Was ist <Delphi.Personality> in der Dproj Datei
Interessant. Bin vor einigen Jahren über
Delphi-Quellcode:
gestoßen. Weiß einer, was es denn damit auf sich hat?
System._DelphiPersonalityRoutine
|
AW: Was ist <Delphi.Personality> in der Dproj Datei
Hat nichts hiermit zu tun.
Hatte vom Namen her gedacht, dass es irgendwas mit en Aufrufpunkten im Android zu tun hat, also wo Android oder andere Apps quasi exportierte Funktionen aufrufen können. Aber hat eigentlich nur irgendwas mit Fehlerbehandlung zu tun. Das in System sind nur Vorwarddeklarationen, zu c:\program files (x86)\embarcadero\studio\23.0\source\rtl\sys\ex.an droid.arm.inc c:\program files (x86)\embarcadero\studio\23.0\source\rtl\sys\ex.an droid.arm64.inc c:\program files (x86)\embarcadero\studio\23.0\source\rtl\sys\ex.in c Hab die Funktion grade bei mir in einer Datei von 2015 entdeckt ... so 'ne art "TODO ... später ma angucken" :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 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