Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1083359366
Vemer
2004-05-01 01:09
2004.05.16
Как заставить нефокусироваться Radiogroup...


14-1082640058
skx
2004-04-22 17:20
2004.05.16
Diamond Access Full Source 2.20


1-1083249482
Berzercer
2004-04-29 18:38
2004.05.16
Можно ли раскрасить строки в Tmemo


14-1082821801
Maxim Vetera
2004-04-24 19:50
2004.05.16
Самая заветная мечта!


3-1082617596
gleb_b
2004-04-22 11:06
2004.05.16
Любителям Oracle. Какие операционки используете?





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