Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Вниз"Reading version information." Найти похожие ветки
← →
Domkrat © (2004-04-29 13:21) [0]Ув. мастера, подскажите почему не работает пример из "F1"-
"Reading version information."
← →
Domkrat © (2004-04-29 13:23) [1]procedure TForm1.Button1Click(Sender: TObject);
const
InfoNum = 10;
InfoStr: array[1..InfoNum] of string = ("CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments");
var
S: string;
n, Len, i: DWORD;
Buf: PChar;
Value: PChar;
begin
S := Application.ExeName;
n := GetFileVersionInfoSize(PChar(S), n);
if n > 0 then
begin
Buf := AllocMem(n);
Memo1.Lines.Add("VersionInfoSize = " + IntToStr(n));
GetFileVersionInfo(PChar(S), 0, n, Buf);
for i := 1 to InfoNum do
if VerQueryValue(Buf, PChar("StringFileInfo\040904E4\" + InfoStr[i]), Pointer(Value), Len) then
Memo1.Lines.Add(InfoStr[i] + " = " + Value);
FreeMem(Buf, n);
end
else
Memo1.Lines.Add("No version information found");
end;
← →
Гаврила © (2004-04-29 13:34) [2]Скорее всего, не тот идентификатор языка
← →
Юрий Зотов © (2004-04-29 13:39) [3]Проверьте:
1. Не удалена ли случайно из DPR опция {$R *.RES}
2. Стоит ли птичка "Include version information into a project" на вкладке Version Info в диалоге Project Options (вызывается из меню Project - Options).
← →
Domkrat © (2004-04-29 13:44) [4]Точно, когда поставил Английский(США) вместо Русского-заработало.
Насколько я понял "StringFileInfo\040904E4\ - это и есть идентификатор языка, какой для русского языка 0419???? ?
← →
Гаврила © (2004-04-29 13:46) [5]>>Domkrat © (29.04.04 13:44) [4]
Его (идентификатор) по хорошему, надо сначала считать из этого же самого ресурса, а потом от него плясать
← →
Domkrat © (2004-04-29 13:48) [6]Спасибо Всем, дальше сам.
← →
Domkrat © (2004-04-29 17:53) [7]Если кому интересно вот что получилось...
function TfmMain.GetModuleVersion;
const
InfoNum = 10;
InfoStr: array[1..InfoNum] of string = ("CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments");
var
s, FileName : string;
n, i : DWORD;
Buf : PChar;
Value: PChar;
FileInfo : PVSFixedFileInfo;
trans: pointer;
temp, Major1, Minor1, Major2, Minor2 : integer;
LangCharSet, LanguageInfo: string;
begin
S := Application.ExeName;
FileName := ExtractFileName(S);
n := GetFileVersionInfoSize(PChar(S), n);
Buf := AllocMem(n);
GetFileVersionInfo(pchar(S),cardinal(0),n,Buf);
//Определяем язык
VerQueryValue(Buf,"\VarFileInfo\Translation",Trans, n);
if n >= 4 then
begin
temp:=0;
StrLCopy(@temp, pchar(Trans), 2);
LangCharSet:=IntToHex(temp, 4);
StrLCopy(@temp, pchar(Trans)+2, 2);
LanguageInfo := LangCharSet+IntToHex(temp, 4);
end else raise EReadError.Create("Invalid language info in file "+S);
for i := 1 to InfoNum do
begin
//Для всех параметров
VerQueryValue(Buf, PChar("\StringFileInfo\"+LanguageInfo+"\" + InfoStr[i]), Pointer(Value), n);
Memo1.Lines.Add(InfoStr[i] + " = " + Value);
end;
//Для миноров мажоров
VerQueryValue(Buf, "\", Pointer(FileInfo), n);
Major1 := FileInfo.dwFileVersionMS shr 16;
Major2 := FileInfo.dwFileVersionMS and $FFFF;
Minor1 := FileInfo.dwFileVersionLS shr 16;
Minor2 := FileInfo.dwFileVersionLS and $FFFF;
FreeMem(Buf, n);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c