Главная страница
    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.46 MB
Время: 0.045 c
3-1082642368
Paranoik
2004-04-22 17:59
2004.05.16
Картинки и базы данных


1-1082972077
MikePol
2004-04-26 13:34
2004.05.16
Подключение dll


14-1082816379
kriolla
2004-04-24 18:19
2004.05.16
программа


3-1082533864
mich
2004-04-21 11:51
2004.05.16
Метод Synchronize


3-1082451811
ivs
2004-04-20 13:03
2004.05.16
ora-01041: hostdef расширение не существует





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