Форум: "Основная";
Текущий архив: 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