Announcement

Collapse
No announcement yet.

Versionsinfo und Datum im "Info über ..."-Dialog

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Versionsinfo und Datum im "Info über ..."-Dialog

    Hallo,

    ich möchte die Versionsinfo (Dateiversion), die der C++-Builder automatisch generiert, und das Datum des Build im "Info über ..."-Dialog anzeigen. Gibt es Compileranweisungen, die diese Informationen beim Compilieren in den Source schreiben? Oder kann ich die Informationen während der Programmlaufzeit aus der exe lesen? (Im Zweifelsfall würde es auch ausreichen das Erstellung-Datum der Datei auszugeben)

    Shalom,
    Klaus

  • #2
    Für Delphi hätte ich eine Komponente, welche die Versionsinfo anzeigt!
    Falls ich sie dir schicken soll: E-Mail-Adresse angeben

    Comment


    • #3
      Hallo Bernhard,

      bitte schicke mir die Komponente zu, sie sollte ja auch unter dem BCB laufen. Oder ist da der Source dabei? Dan liese es sich wohl problemlos übertragen.

      Danke,
      Klaus

      (meine E-Mail: [email protected]

      Comment


      • #4
        Hallo,
        da ich leider kein C++-Profi bin, würde ich gerne wissen, ob mir jemand beim Auslesen der "ProductVersionInfo" oder der "FileVersionInfo" bei einem C++-Builder-Programm weiterhelfen kann ?
        Ich habe mich schon mehrere Stunden mit der Micorsoft-API-Beschreibung zu den entsprechenden Funktionen beschäftigt, aber ohne ein konkretes Quellcode-Beispiel komme ich nicht weiter.

        Danke und Gruß
        Juergen

        (E-Mail: [email protected]

        Comment


        • #5
          Hallo Jürgen,
          ich habe Dir mal ein Beispiel aus meinem Code zusammengestellt, ich hoffe Du kannst damit etwas anfangen:

          <pre>
          char szBuffer[1024];
          LPVOID pBuffer;
          char szText[1024];
          unsigned int unSize;
          char szLand[256];

          GetFileVersionInfo(sFileName.c_str(),
          0,
          sizeof(szBuffer),
          szBuffer);

          VerQueryValue(szBuffer,
          "\\VarFileInfo\\Translation",
          &pBuffer,
          &unSize);

          sprintf(szLand,"%04X%04X", *(((WORD *)pBuffer)+0),*(((WORD *)pBuffer)+1));

          sprintf(szText ,"\\StringFileInfo\\%s\\LegalCopyright",szLand) ;
          flag = VerQueryValue(szBuffer,
          szText,
          &pBuffer, //hier ist das Ergebnis der Anfrage
          &unSize);

          </pre>

          Gruß Thorste

          Comment


          • #6
            Hallo Thorsten,
            vielen Dank für Dein Code-Beispiel. Leider kann ich mich (noch) nicht mit einem ebenfalls so hilfreichen Codefragment bei Dir bedanken, da ich noch nicht so fit in C++-Builder bin.
            Aber mit der hilfreichen Unterstützung der "Entwickler Forum" - Gemeinde könnte es bei mir bald besser aussehen mit dem Wissen.
            Besten Dank noch einmal
            Gruß
            Jürge

            Comment


            • #7
              Hallo,<br>
              sieh Dir mal die Funktion GetFileVersionInfo an. (Win32.hlp)

              Gruß Thorste

              Comment


              • #8
                Hallo Thorsten,

                folgender Nachtrag zu Deinem Codeschnipsel: ich arbeite unter NT, und da ist die VersionInfo anscheinend grundsätzlich UNICODiert, d.h. doppelt so lang. Daher ist
                char szBuffer[1024];
                zu kurz. Blöderweise liefert
                GetFileVersionInfo(sFileName.c_str(),0,sizeof(szBu ffer),szBuffer);
                aber immer OK zurück, so dass man erst am Scheitern von
                VerQueryValue(szBuffer, "\\VarFileInfo\\Translation",
                &pBuffer, &unSize);
                merkt, dass etwas nicht stimmt (bei mir stand z.B. nur noch
                "\\VarFileInfo\\Transl" in szBuffer drin. Mit
                char szBuffer[2048];
                gings dann.

                Gruß Stefan

                [email protected]

                Comment

                Working...
                X