Главная страница
    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.04 c
1-1083728597
Dark Man
2004-05-05 07:43
2004.05.16
Работа с 1С


3-1082109937
ksa3003
2004-04-16 14:05
2004.05.16
Выборка пустых значений


3-1082615591
mixam
2004-04-22 10:33
2004.05.16
Lookup


14-1082805073
ctranik
2004-04-24 15:11
2004.05.16
Ув. мастера подскажите как работать с MSDN


4-1080211220
Volodya_
2004-03-25 13:40
2004.05.16
Потоки





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