Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

прочитать версию о файле   Найти похожие ветки 

 
КомофОнСамый   (2004-01-28 20:04) [0]

где может быть ошибка??

type
{$M+}
//заставляет Delphi включать в код RTTI-информацию для
//перечислимых типов. В основном допускает работу с перечислимыми
//типами как со строками с помощью GetEnumName
TVersionType = (vtCompanyName,
vtFileDescription,
vtFileVersion,
vtInternalName,
vtLegalCopyright,
vtLegalTradeMark,
vtOriginalFileName,
vtProductName,
vtProductVersion,
vtComments);
{$M-}
function GetVersionInfo(VersionType: TVersionType):string;
var
FVersionInfo: array[0..Ord(high(TVersionType))] of string;
sAppName, sVersionType: string;
iAppSize, iLenOfValue, i: Cardinal;
pcBuf, pcValue: PChar;
begin
sAppName:=Application.ExeName;
iAppSize:=GetFileVersionInfoSize(PChar(sAppName), iAppSize);
if(iAppSize>0)then
begin
pcBuf:=AllocMem(iAppSize);
GetFileVersionInfo(PChar(sAppName), 0, iAppSize, pcBuf);
for i:=0 to Ord(High(TVersionType)) do
begin
sVersionType := GetEnumName(TypeInfo(TVersionType), i);
sVersionType := Copy(sVersionType, 3, length(sVersionType));
if(VerQueryValue(pcBuf,
PChar("StringFileInfo\040904E4\"+sVersionType),
Pointer(pcValue),
iLenOfValue))then FVersionInfo[i]:=pcValue;
end;
FreeMem(pcBuf, iAppSize);
end;
result := FVersionInfo[ord(VersionType)];
end;



 
baataar   (2004-01-29 11:43) [1]

что никто не использует версионность? мож у кого есть другой пример??


 
icWasya ©   (2004-01-29 12:05) [2]

if(VerQueryValue(pcBuf,
PChar(" \StringFileInfo\040904E4\"+sVersionType),
Pointer(pcValue),
iLenOfValue))then FVersionInfo[i]:=pcValue;


 
baataar   (2004-01-29 12:35) [3]

не помогает :(
а у когонить работает?


 
Erik ©   (2004-01-29 12:56) [4]

У меня все прекрасно уже год работает. Ты в самом проекте галочку поставил? И заполнил инвормацию о версии?
Я так делал:
function GetCurrentVersion(const FileName: string): Int64;
var
Info: Pointer;
Temp,
InfoSize,
FileInfoSize: DWORD;
FileInfo: PVSFixedFileInfo;
CurFile: string;
begin
Result := 0;
CurFile := LowerCase(FileName);
InfoSize := GetFileVersionInfoSize(PChar(CurFile), Temp);
if InfoSize > 0 then
begin
GetMem(Info, InfoSize);
FileInfoSize := SizeOf(FileInfo^);
try
GetFileVersionInfo(PChar(CurFile), 0, InfoSize, Info);
VerQueryValue(Info, "\", Pointer(FileInfo), FileInfoSize);
with FileInfo^ do
begin
Result := dwFileVersionMS;
Result := Result shl 32;
Result := Result + dwFileVersionLS;
end;
finally
FreeMem(Info, InfoSize);
end;
end;
end;


 
baataar   (2004-01-29 13:28) [5]

младшую версию нормально узнал (dwFileVersionLS). а вот старшую нет.

посмотрел FileInfo^ - там ничего похожева нету. а сдвиг дал вообще цифирю очень большую



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

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
9-29187
X-shadow
2003-07-30 20:56
2004.02.10
Алгоритм вот надо :)


3-29214
Прохор
2004-01-19 18:09
2004.02.10
Не меняется курсор мыши при использовании ADO


3-29224
dim-
2004-01-17 01:47
2004.02.10
Проблема с запросом


14-29592
-Wind-
2004-01-19 11:15
2004.02.10
Всегда писал на С, а тепрь надо на делфи...


14-29605
TurburatoR
2004-01-19 13:17
2004.02.10
ServicePak для D6