Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Version info (Build)


Nucer ©   (2007-08-30 12:11:00) 

Существует ли простой спобос получить данную информацию о своей же программе? Может есть какая-нибудь переменная? Или придется использовать стандартные функции (GetFileVersionInfo)?


DevilDevil   (2007-08-30 13:22:00) [1]

mVer := HiWord(vsInfo^.dwProductVersionMS);
lVer := LoWord(vsInfo^.dwProductVersionMS);
rVer := HiWord(vsInfo^.dwProductVersionLS);
bVer := LoWord(vsInfo^.dwProductVersionLS);


DevilDevil   (2007-08-30 13:18:00) [2]

mVer := vsInfo^.dwProductVersionMS shr 16;
lVer := vsInfo^.dwProductVersionMS and $FFFF;
rVer := vsInfo^.dwProductVersionLS shr 16;
bVer := vsInfo^.dwProductVersionLS and $FFFF;


Nucer   (2007-08-30 12:31:00) [3]

2DVM Спасибо за помощь


Fay   (2007-08-30 12:31:00) [4]

> vsInfo^.dwProductVersionMS div $FFFF;
а что это за прикол с делением на нечётное число ?


DVM   (2007-08-30 12:22:00) [5]


function GetFullFileVersion : string;
Var j,w   : Cardinal;
   s     : shortstring;
   buf   : pointer;
   buf2  : pointer;
   q     : DWord;
   vsinfo: ^VS_FIXEDFILEINFO;
   mVer,
   lVer,
   rVer,
   bVer,
   flag  : DWord;
begin
 s := ParamStr(0) + #0;
 j := GetFileVersionInfoSize(@s[1],w);
 if j = 0 then Exit;
 buf := Ptr(GlobalAlloc(GMEM_FIXED,j));
 GetFileVersionInfo(@s[1], 0, j, buf);
 VerQueryValue(buf, '\', buf2, q);
 vsinfo := buf2;
 mVer := vsInfo^.dwProductVersionMS div $FFFF;
 lVer := vsInfo^.dwProductVersionMS mod $10000;
 rVer := vsInfo^.dwProductVersionLS div $FFFF;
 bVer := vsInfo^.dwProductVersionLS mod $10000;
 flag := vsInfo^.dwFileFlags;
 s := IntToStr(mVer) + '.' +
      IntToStr(lVer) + '.' +
      IntToStr(rVer) + '.' +
      IntToStr(bVer);
 if (flag and VS_FF_DEBUG) > 0        then s := s + ' debug ';
 if (flag and VS_FF_PRERELEASE) > 0   then s := s + ' prerelease ';
 if (flag and VS_FF_PRIVATEBUILD) > 0 then s := s + ' private ';
 if (flag and VS_FF_SPECIALBUILD) > 0 then s := s + ' special ';
 Result := s;
 GlobalFree(Cardinal(buf));
end;


Desdechado   (2007-08-30 12:12:00) [6]

Придется.


Наверх

Титульная страница Поиск, карта сайта Написать письмо