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

Вниз

"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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.043 c
1-1083173091
KEBZ
2004-04-28 21:24
2004.05.16
DLL и текст


3-1082034239
ksa3003
2004-04-15 17:03
2004.05.16
UPDATE


4-1080732603
rimdl
2004-03-31 15:30
2004.05.16
Hooks


1-1083316937
tlan
2004-04-30 13:22
2004.05.16
как работать с Zlib?


1-1083070280
killer
2004-04-27 16:51
2004.05.16
Scrolling в StringList





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