Board index » delphi » Version Information
Gary Lowe
![]() Delphi Developer |
Gary Lowe
![]() Delphi Developer |
Version Information2003-10-25 08:37:34 PM delphi102 I am creating my first project containing Version Information and I know this information is stored with the compiled code. How do I programatically access this information so I can add the current Version Information to an About Dialog when the About Dialog is created? Thanks! |
Mark Vaughan
![]() Delphi Developer |
2003-10-27 07:08:02 PM
Re:Version Information
"Gary Lowe" <XXXX@XXXXX.COM>wrote in
QuoteI am creating my first project containing Version Information and I (www.logicfundamentals.com/) -- Mark Vaughan ___________ Visit the Numerical Methods in Pascal web page at www-rab.larc.nasa.gov/nmp/fNMPhome.htm |
adalberto baldini
![]() Delphi Developer |
2005-04-27 02:53:49 PM
Re:Version Information
Hi.
Where can I find information about to manage numbers concerning version project? Major version Minor Version Release Build Thanks Adalberto Baldini |
John Leavey
![]() Delphi Developer |
2005-04-27 04:28:35 PM
Re:Version Information
adalberto baldini writes:
QuoteHi. VerInfoSize, VerValueSize, Dummy: DWord; VerInfo: Pointer; VerValue: PVSFixedFileInfo; begin VerInfoSize := GetFileVersionInfoSize( PChar( ParamStr( 0 ) ), Dummy ); if VerInfoSize>0 then begin GetMem( VerInfo, VerInfoSize ); try GetFileVersionInfo( PChar( ParamStr( 0 ) ), 0, VerInfoSize, VerInfo ); VerQueryValue( VerInfo, '\', Pointer( VerValue ), VerValueSize ); with VerValue^ do begin W1 := dwFileVersionMS shr 16; W2 := dwFileVersionMS and $FFFF; W3 := dwFileVersionLS shr 16; W4 := dwFileVersionLS and $FFFF; end; finally FreeMem( VerInfo, VerInfoSize ); end; end; end; John Leavey |
Lauchlan M
![]() Delphi Developer |
2005-04-27 05:09:07 PM
Re:Version InformationQuote>Where can I find information about to manage numbers concerning later. HTH Lauchlan M |
JD
![]() Delphi Developer |
2006-12-02 01:27:41 AM
Re:Version Information
"Stephane Tremblay" <XXXX@XXXXX.COM>writes:
Quote
#define VerInfoH //------------------------------------------------------------- struct TVersionInformation { private: char *Buffer; public: bool Available; AnsiString CompanyName; AnsiString FileDescription; AnsiString FileVersion; AnsiString InternalName; AnsiString LegalCopyright; AnsiString LegalTrademarks; AnsiString OriginalFilename; AnsiString ProductName; AnsiString ProductVersion; AnsiString Comments; TVersionInformation() { Buffer = NULL; Available = false; CompanyName = ""; FileDescription = ""; FileVersion = ""; InternalName = ""; LegalCopyright = ""; LegalTrademarks = ""; OriginalFilename = ""; ProductName = ""; ProductVersion = ""; Comments = ""; DWORD Handle, Size = ::GetFileVersionInfoSize( Application->ExeName.c_str(), &Handle ); if( Size ) { UINT Length; LPVOID lpBuffer; unsigned short *LangCharSet; Buffer = new char[ Size ]; LPVOID pBlock = (LPVOID) Buffer; if( ::GetFileVersionInfo( Application->ExeName.c_str(), Handle, Size, pBlock ) ) { if( ::VerQueryValue( pBlock, "\\VarFileInfo\\Translation", (void **)&LangCharSet, &Length ) ) { AnsiString Prefix; Prefix.sprintf("\\StringFileInfo\\%04x%04x\\", LangCharSet[0], LangCharSet[1] ); if( ::VerQueryValue( pBlock, AnsiString( Prefix + "CompanyName" ).c_str(), &lpBuffer, &Length ) ) CompanyName = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "FileDescription" ).c_str(), &lpBuffer, &Length ) ) FileDescription = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "FileVersion" ).c_str(), &lpBuffer, &Length ) ) FileVersion = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "InternalName" ).c_str(), &lpBuffer, &Length ) ) InternalName = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "LegalCopyright" ).c_str(), &lpBuffer, &Length ) ) LegalCopyright = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "LegalTrademarks" ).c_str(), &lpBuffer, &Length ) ) LegalTrademarks = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "OriginalFilename" ).c_str(), &lpBuffer, &Length ) ) OriginalFilename = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "ProductName" ).c_str(), &lpBuffer, &Length ) ) ProductName = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "ProductVersion" ).c_str(), &lpBuffer, &Length ) ) ProductVersion = (char *) lpBuffer; if( ::VerQueryValue( pBlock, AnsiString( Prefix + "Comments" ).c_str(), &lpBuffer, &Length ) ) Comments = (char *) lpBuffer; Available = true; } } } } ~TVersionInformation() { if( Buffer ) delete [] Buffer; } }; //------------------------------------------------------------- #endif Usage: #include "VersionInfo.h" //------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TVersionInformation Info; if( Info.Available ) { ShowMessage("CompanyName : " + Info.CompanyName ); ShowMessage("FileDescription : " + Info.FileDescription ); ShowMessage("FileVersion : " + Info.FileVersion ); ShowMessage("InternalName : " + Info.InternalName ); ShowMessage("LegalCopyright : " + Info.LegalCopyright ); ShowMessage("LegalTrademarks : " + Info.LegalTrademarks ); ShowMessage("OriginalFilename : " + Info.OriginalFilename ); ShowMessage("ProductName : " + Info.ProductName ); ShowMessage("ProductVersion : " + Info.ProductVersion ); ShowMessage("Comments : " + Info.Comments ); } else ShowMessage("Version Information Not Available."); } //------------------------------------------------------------- ~ JD |
Stephane Tremblay
![]() Delphi Developer |
2006-12-02 02:00:18 AM
Re:Version Information
How we can get the version information of our projet in run time.
Thanks. |