Borland C Builder 6 version-fråga *SVAR HITTAT*

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Icecap
Inlägg: 26612
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Borland C Builder 6 version-fråga *SVAR HITTAT*

Inlägg av Icecap »

OK, jag behöver veta vilket versionsnummer jag har skrivit in i projektet men ta mig tusan om jag hittar hur man gör. Logisk hade ju varit att det fanns en systemvariabel t.ex. Major_Version eller liknande som man kunde använda men jag hittar inte det.

Det finns en Get_Major_Version men jag kan inte få det att fungera då man ska inkludera en ospecificierat fil.

Vad jag skulle vilja ha tag på är Major version, Minor version, Build osv.

Någon som kan?

Jepp, på Tek-Tips var det någon som kunde:

Kod: Markera allt

void VersionInfo::GetVersion(int& Major, int& Minor, int& Release, int& Build)
  {
  DWORD tempHandle = 0;
  DWORD infoLen;
  VS_FIXEDFILEINFO* fileInfo;

  //-------------------------------------------------------------------------//
  //                                                                         //
  // Obtain the length of the version information available.                 //
  // If the length is not zero, create a buffer of the appropriate size, and //
  // retrieve the information block.                                         //
  // Then retrieve the language-independant version information.             //
  //                                                                         //
  //-------------------------------------------------------------------------//

  infoLen = GetFileVersionInfoSize(ParamStr(0).c_str(), &tempHandle);
  if(infoLen > 0)
    {
    char* pBuf = (char *) malloc(infoLen);
    unsigned int valueLen;

    GetFileVersionInfo(ParamStr(0).c_str(), 0, infoLen, pBuf);

    if(VerQueryValue(pBuf, "\\", (void **)&fileInfo, &valueLen))
      {
      Major   = (int)((fileInfo->dwFileVersionMS >> 16) & 0xffff);
      Minor   = (int)((fileInfo->dwFileVersionMS      ) & 0xffff);
      Release = (int)((fileInfo->dwFileVersionLS >> 16) & 0xffff);
      Build   = (int)((fileInfo->dwFileVersionLS      ) & 0xffff);
      }
    else
      {
      Major   = 0;
      Minor   = 0;
      Release = 0;
      Build   = 0;
      }

      //----------------------------------------------------------------------//
      //                                                                      //
      // Free buffer.                                                         //
      //                                                                      //
      //----------------------------------------------------------------------//

    free(pBuf);
    }
  else
    {
    //----------------------------------------------------------------------//
    //                                                                      //
    // Unable to obtain file version information.                           //
    ...
    }
  }