[gelöst] RC-Dateien - Strings kombinieren
-
Hallo,
ich baue gerade an einer SDK für meine eigenen Dateien. Die RC-Dateien sollen dabei auch mehr oder weniger dynamisch generiert werden. Wenn ich also ein Programm schreibe, soll die angegebene Version aus der RC-String-Tabelle zusammen gesetzt werden aus der Programm-Version und der SDK-Version.
Folgendes Wunschdenken habe ich. Es ist nicht lauffähig, sondern soll nur die Problematik aufzeigen:
// Aus include <proginfo.h> #define INFOS_PROG_VERSION_PROGRAMM "2.1" // Aus include <sdkinfo.h> #define INFOS_PROG_VERSION_SDK "3.7" // Meine RC-Datei // ... BEGIN BEGIN VALUE "CompanyName", "Ich" VALUE "FileDescription", "FooBar" VALUE "FileVersion", INFOS_PROG_VERSION_PROGRAMM "." INFOS_PROG_VERSION_SDK // Wunschdenken "2.1.3.7" // ... END END // ...
Und wo ich jetzt versage ist, dass ich Strings so zusammen baue aus mehreren Teilstrings. Ich habs mit PLUS versucht oder auch mit PUNKT. Ich habe nach Funktionen oder Makros gesucht. Ist leider in der Doku von Visual Studio nichts zu finden und bei Google hatte das Problem wohl keiner.
Man soll ja klare Fragen stellen:
- Geht mein Wunschdenken überhaupt?
- Wenn ja, wo kann ich das nachlesen, wie das geht?Danke,
Stefan
-
String Literale sollten eigentlich problemlos konkateniert werden können, dein Beispiel funktioniert bei mir.
Wie ist denn der Fehler und welche MSVC Version nutzt du?
-
Ich kann bestätigen dass das geht.
Wenn du damit Fehler bekommst muss das ne andere Ursache haben.Hast du vielleicht vergessen
proginfo.h
undsdkinfo.h
im .rc File zu includen? Oder einfach nen Tippfehler irgendwo?
-
Youka schrieb:
String Literale sollten eigentlich problemlos konkateniert werden können, dein Beispiel funktioniert bei mir.
Wie ist denn der Fehler ...?hustbaer schrieb:
Ich kann bestätigen dass das geht.
Wenn du damit Fehler bekommst muss das ne andere Ursache haben.Ich bekomme keinen Fehler. Aber wenn ich mit der rechten Maustaste im Windows-Explorer auf die Datei klicke und mit die Programm-Infos anzeigen lasse, dann steht da:
"2.1".3.7"
und nicht
2.1.3.7
Wenn ich direkt
VALUE "FileVersion", "2.1.3.7"
in die RC eintrage, dann steht auch wirklich
2.1.3.7
drinnen. Deswegen wurdert es mich ja.
Ist denn
VALUE "FileVersion", "2.1.3.7"
das gleiche wie
VALUE "FileVersion", "2.1" "." "3.7"
und auch als Syntax so richtig?
hustbaer schrieb:
Hast du vielleicht vergessen
proginfo.h
undsdkinfo.h
im .rc File zu includen? Oder einfach nen Tippfehler irgendwo?Ne, hab ich geprüft und die Fehlermeldung würde anders lauten. Ich hab auch extra nochmal mit Copy&Paste alle #Def-Bezeichnungen hinkopiert, dass ja kein Tippfehler sein kann.
Youka schrieb:
... und welche MSVC Version nutzt du?
Visual Studio 2012 Pro. Ab Januar stellen wir aber auf Visual Studio 2013 um.
-
stefanjann schrieb:
Ist denn
VALUE "FileVersion", "2.1.3.7"
das gleiche wie
VALUE "FileVersion", "2.1" "." "3.7"
und auch als Syntax so richtig?
Sollte schon das selbe rauskommen, ja.
Probier doch einfach aus was du mitVALUE "FileVersion", "2.1" "." "3.7"
bekommst...
Fehler eingrenzen halt. Wenns damit geht, dann hat's wohl irgendwas mit den Makros zu tun.
Wenns damit auch schon nicht geht, dann macht VS2012 komische sachen.
Denn so-ziemlich-das-selbe mach' ich mir VS2005 in etlichen Projekten.
-
Hallo,
das muss ein Problem mit dem Compiler sein.
Ich hab das Programm mal auf Windows Vista, Windows 7, Windows 8 und Windows 8.1 kopiert."2.1".3.7" // Windows 8.1 2.1"".3.7 // Windows 7, Windows 8 "2.1"".""3.7" // Windows Vista
Um es mal in aller Deutlichkeit zu sagen: Hä?
Ich habs dann mal mit gcc gemacht und siehe da: Es geht.
Ich habs dann mal mit VS2008 gemacht: Es geht.
Ich hab dann mal auf unserem TFS2012-Server gemacht: Es geht.Kurzum, da hat's irgendwas in meiner lokalen Installation zerlegt.
Also muss ich wohl mal neu installieren. *f...*Danke und Sorry. Da kommt man aber auch im ersten Moment nicht wirklich drauf.
Gruß,
Stefan
-
Ja sowas is immer "toll", wenn man was richtig macht, und dann stunden- oder tagelang sucht, um im Endeffekt draufzukommen dass ein Tool schuld war.