Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Вниз

Как получить версию программы из нее самой   Найти похожие ветки 

 
lipskiy   (2003-05-14 21:01) [0]

не прибегая к виндовым функциям, спрашивающим версию через имя файла. Зачем о самом себе спрашивать у винды. Как вынуть эту инфу напрямик?


 
panov   (2003-05-14 21:15) [1]

const
ver="1.1"
...

ShowMessage(ver);


 
Mystic   (2003-05-14 21:22) [2]

function TAdminLoginForm.GetApplicationVer : String;
var
Buffer : pointer;
FileName : String;
Stub : DWORD;
Size : integer;
VerInfo : pointer;
Length : UINT;
begin
FileName := ParamStr (0);

Size := GetFileVersionInfoSize(PChar(FileName), Stub);
if Size = 0 then
begin
ShowMessage(IntToStr(GetLastError()));
Size := 1024 * 10;
end;
Buffer := AllocMem (Size);

if not GetFileVersionInfo (PChar(FileName), 0, Size, Buffer) then
begin
ShowMessage(IntToStr(GetLastError()));
end;

VerQueryValue(Buffer, "\", VerInfo, Length);

result:=inttostr(tVSFIXEDFILEINFO(VerInfo^).dwFileVersionMS shr 16)+"."+
inttostr(tVSFIXEDFILEINFO(VerInfo^).dwFileVersionMS and $FFFF)+"."+
inttostr(tVSFIXEDFILEINFO(VerInfo^).dwFileVersionLS shr 16)+"."+
inttostr(tVSFIXEDFILEINFO(VerInfo^).dwFileVersionLS and $FFFF);

FreeMem (Buffer);
end;


Не сильно чистил, но идея должна біть понятна...


 
Вася Пупкин   (2003-05-14 21:24) [3]

http://delphimaster.net/view/1-1052739595/


 
Mystic   (2003-05-14 21:25) [4]

Немного присмотрелся к коду. Предупреждаю --- писал не я :)


 
Palladin   (2003-05-14 21:34) [5]

хм, а что случилось?
почему не надо прибегать к виндовым функциям?


 
Mystic   (2003-05-14 23:05) [6]

> хм, а что случилось?

Если ты мне, то
1. FreeMem должно быть в finally-блоке
2. После ShowMessage надо ставить выход


 
Palladin   (2003-05-15 08:25) [7]

да нет, я автору поста...


 
dtrn   (2003-05-15 12:12) [8]

function MyVerInfo(NameFile:string):string;
var
VInfoSize,DetSize:DWord;
PVInfo,pDetail:Pointer;
begin
if not FileExists(NameFile) then
NameFile:=Application.ExeName;
VInfoSize:=GetFileVersionInfoSize(PChar(NameFile),DetSize);
if VInfoSize>0 then
begin
GetMem(pVInfo,VInfoSize);
try
GetFileVersionInfo(Pchar(NameFile),0,VInfoSize,pVInfo);
verQueryValue(pVInfo,"\",pDetail,DetSize);
with TVSFixedFileInfo (pDetail^) do
Result:=
IntToStr(dwFileVersionMS shr 16)+"."+
IntToStr(dwFileVersionMS and $FFFF)+"."+
IntToStr(dwFileVersionLS shr 16)+"."+
IntToStr(dwFileVersionLS and $FFFF);
finally
FreeMem(pVInfo);
end;
end
else
Result:="0";
end;


 
lipskiy   (2003-05-17 00:18) [9]


> panov © (14.05.03 21:15)

Я имел ввиду ту информацию о версии, которая компилируется в ехешник, когда разрешена опция "Include Version Information in Project" в настройках проекта. Удобно лишь в одном месте ее поменяв показывать потом везде где надо.

> Palladin © (14.05.03 21:34)

Я не говорю, что нельзя.
Интерес чисто спортивный.
Если в файл включена информация, то зачем кого-то со стороны просить вынуть ее из себя чтобы вернуть обратно. Можно же самому свои ресурсы посмотреть.

Всем остальным спасибо, попробую попробовать. Пока не пробовал.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
14-95114
Yorick
2003-05-11 23:01
2003.05.29
ОС на Delphi


3-94776
dpv
2003-05-12 12:28
2003.05.29
работа в консоле


1-94794
YuN
2003-05-19 07:58
2003.05.29
Как выцепить сообщение в обработчике исключений?


1-94863
Salvator
2003-05-19 10:28
2003.05.29
Работа с Word через Delphi


3-94700
P.Kert
2003-05-07 11:31
2003.05.29
TEST





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский