Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
Внизпрочитать версию о файле Найти похожие ветки
← →
КомофОнСамый (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c