Главная страница
    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
3-94773
Sirus
2003-05-12 09:57
2003.05.29
Сдается мне что FireBird работает медленне чем Interbase...


6-94982
VIB
2003-03-29 16:12
2003.05.29
MAC-Adress


7-95148
kliff
2003-03-30 13:51
2003.05.29
Как создать системную службу?


1-94918
Артем К.
2003-05-17 15:30
2003.05.29
Как сделать индикатор выбранной строки для StringGrida


3-94661
Sirus
2003-05-07 11:19
2003.05.29
Как выбрать первую запись с определенными условиями???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский