![]() |
Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Ich würde gern die Versionsnummer des aktuellen Datenbanktreibers bei der Kompilierung automatisch in den Objekteigenschaften (etwa als Kommentar oder Beschreibung) eintragen lassen, so dass diese Information im Explorer in den Dateieigenschaften verfügbar ist.
Ist das evt. durch eine Compilerdirektive (habe keine gefunden) oder dcc32 möglich? Danke, Steffen |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Hallo und herzlich Willkommen in der DP :dp: :dp:
Möglich ist so was nur durch Pre- und/oder Post-Build-Ereignisse, die es bei Delphi 2007 geben sollte. Du könntest im Pre-Build-Ereignis ein Programm ablaufen lassen, welches die Versionsnummer ermittelt, diese in eine RC-Datei schreibt und die RC-Datei dann kompiliert. Die dazugehörige Res-Datei müsste dann im Quelltext eingebunden werden. (Dies wäre aber dann im Explorer nicht sichtbar). Andere Methode, die dann auch im Explorer sichtbar wäre: Du schreibst in das Feld Kommentar einen Platzhalter rein, der so lang ist, wie deine Versionsnummer und unverkennbar ist. Dann lässt du im Post-Build-Ereignis ein Programm laufen, welches die Versionsnummer ausließt und dann deine EXE updatet. (Die entsprechende Länge, weil es sonst zu Problemen kommen könnte bezüglich der Länge der Ressourcen; Der unverkennbare Platzhalter, sodass man ihn einfach suchen kann und mit StringReplace o.Ä. einfach die neue Versionsnummer reinschreiben kann.) Bernhard |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Hallo Bernhard,
danke für die schnelle Antwort. Lösung 2, zum Verständnis: Ich muss also eine selbstständige .exe erstellen die im Binärcode eine Ersetzung macht? Kann ich die Datei dazu in ein Memo einlesen und nach dem Replace wieder exportieren - oder wie würdest du vorgehen? Mfg. Steffen |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Kein Memo bitte. Du hast ja Ressourcen. Diese kannst du mit BeginUpdateRessource und Co o.Ä. bearbeiten. Heißt: Öffnen -> Ressource auslesen -> Kommentar finden -> Treiberversion auslesen -> Treiberversion schreiben -> EXE schließen.
Windows bietet diese Funktionen an, sodass man nicht auf Binär-Ebene arbeiten muss und schon gar nicht mit visuellen Komponenten und StringListen. Bernhard |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Ich würde ja den Weg über die RC Datei favorisieren, denn da muss lediglich eine Text-Datei geschrieben werden :)
Aber wieso schreibt eigentlich jeder, dass eine RC Datei manuell kompiliert werden muss? Das erledigt Delphi doch ganz von alleine (wenn die RC Datei in der DPR -Datei angegeben wurde), oder habe ich ein anderes Delphi :gruebel: Evtl. muss man noch die daraus resultierende RES Datei löschen um ein Kompilieren der RC Datei zu erzwingen, letztendlich reduziert sich das ganze Vorhaben aber darauf ein Datei zu löschen und eine Textdatei zu erstellen/ändern. |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Und wie wird dann die Info im Explorer angezeigt, was der TE ja ganz offensichtlich haben will? - Ansonsten müssen die Delphi-Eigenen Dateiinformationen abgeschaltet sein und dann ist unter anderem nicht mehr die Funktion mit der fortlaufenden Kompilierungsnummer zu haben.
Bernhard |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Diese Informationen stehen doch in der DPROJ Datei ... Die kann man im PreBuildEvent auch bearbeiten
EDIT Ich nehme das mal wieder zurück ... das steht da zwar drin, ist aber nur eine Kopie der Werte und diese wird beim Schließen des gesamten Projekts aktualisiert. Damit ist die dafür nicht zu gebrauchen ... |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Wenn es nur um die Versionsnummer geht: RCStamp:
![]() |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
RCStamp hilft mir nicht, da ich den Kommentar und nicht die Versionsnummer bearbeiten möchte.
Nach dem was ich in den letzten Tagen über die Änderung von Ressourcen gelernt habe ist ein Austauschen einzelner Strings innerhalb eines Resourcetyps (etwa RT_VERSION) nicht möglich, es muss stets eine komplett neue Version des entsprechenden Resourcetyps erstellt werden. Das Problem dabei ist, dass im neu erstellten Resourcebereich (hier: Version Info) alle Teilinfos angegeben werden müssen, da sonst deren bisherige Information verloren geht. Dies wiederum ist recht umständlich, da diese dafür zunächst komplett ausgelesen werden müßen, etwa wie im ![]() Im Prinzip ist damit die von Bernhard zuerst genannte Lösung (Erstellung und Einbindung einer .Res Datei) die einzige praktikable Lösung. Da diese aber nicht zur Anzeige im Explorer führt, gibt es offenbar keine schnelle Lösung nach der Art "öffnen-ersetzen-speichern-schließen". Kann das jemand bestätigen? |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
Zitat:
Hast du mal mit einem Ressourceneditor geguckt, ob die Ressource auch wirklich eincompiliert wird? |
AW: Objekteigenschaften (Beschreibung, Kommentar) automatisch generieren
... probiert habe ich es noch gar nicht.
Ich hatte die Beiträge #2, 6 und 7 diese threads so verstanden, als würde die Einbindung einer kompilierten .rc Datei nicht zur Anzeige ihres Inhaltes im Explorer führen. War wohl ein Missverständnis. Der Austausch eines Teilstrings innerhalb eines Ressourceblockes scheint nicht möglich zu sein, daran scheitert auch der command.line resource editor ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz