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

Вниз

Пример с книги Delphi 3 не работает на Delphi 6   Найти похожие ветки 

 
syte_ser78 ©   (2005-01-19 11:06) [0]

Переписываю с книги код, запускаю - ошибки в двух строках (для наглядности закоментарены)

Var
  VersionBuffer, Version:String;
  VersionSize:Integer;
  Dummy:Integer;
begin
//   VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName),Dummy);
  if (VersionSize<>0) then
     begin
     SetLength(VersionBuffer,VersionSize);
     SetLength(Version,VersionSize);
        if (GetFileVersionInfo(PChar(Application.ExeName),
           Dummy,VersionSize,PChar(VersionBuffer))) and
           (VerQueryValue(PChar(VersionBuffer),
           "\StringFileInfo\040904E4\ProductVersion",
//            Pointer(Version),VersionSize)) then
        frm_main.Caption:=Version;
     end;
end;

Как исправить код чтобы работал под Delphi 6?


 
cyborg ©   (2005-01-19 11:13) [1]

Где ошибки?


 
syte_ser78 ©   (2005-01-19 11:15) [2]

в тех строках которыя я закоментировал
//   VersionSize:=GetFileVersionInfoSize(PChar(Application.ExeName),Dummy);

       if (GetFileVersionInfo(PChar(Application.ExeName),
          Dummy,VersionSize,PChar(VersionBuffer))) and
          (VerQueryValue(PChar(VersionBuffer),
          "\StringFileInfo\040904E4\ProductVersion",
//            Pointer(Version),VersionSize)) then


 
syte_ser78 ©   (2005-01-19 11:17) [3]

Types of actual and formal var parameters must be identical
в обоих случаях


 
cyborg ©   (2005-01-19 11:17) [4]

Var
 VersionBuffer, Version:String;
 VersionSize:Cardinal;
 Dummy:Cardinal;


 
Kerk ©   (2005-01-19 11:17) [5]

Dummy: DWORD;


 
syte_ser78 ©   (2005-01-19 11:19) [6]

Ок! Спасибо!


 
syte_ser78 ©   (2005-01-19 11:21) [7]

Но условие

if (GetFileVersionInfo(PChar(Application.ExeName),
          Dummy,VersionSize,PChar(VersionBuffer))) and
          (VerQueryValue(PChar(VersionBuffer),
          "\StringFileInfo\040904E4\ProductVersion",
           Pointer(Version),VersionSize))

всеравно не выполняется.
Version остается пустым


 
cyborg ©   (2005-01-19 11:22) [8]

А оно, версия файла, у тебя есть? В опциях компиляции поставь.


 
syte_ser78 ©   (2005-01-19 11:24) [9]

Project|version|version_info заполнено!


 
syte_ser78 ©   (2005-01-19 11:24) [10]

Project|option|version_info заполнено!


 
cyborg ©   (2005-01-19 11:28) [11]

А это что такое?
"\StringFileInfo\040904E4\ProductVersion"


 
syte_ser78 ©   (2005-01-19 11:30) [12]

Об этом книга умалчивает.


 
cyborg ©   (2005-01-19 11:34) [13]

Видимо версия файла не так определяется.
У меня есть где-то код определения версии, ща гляну.


 
cyborg ©   (2005-01-19 11:36) [14]


function FileVersion(FileName: string): string;
var
Buf: Pointer;
BufSize, Len, dwHandle: Cardinal;
VerInfo: PVSFixedFileInfo;
begin
Result := "";
BufSize := GetFileVersionInfoSize(PChar(FileName), dwHandle);
if BufSize <> 0 then begin
 GetMem(Buf, BufSize);
 try
  GetFileVersionInfo(PChar(FileName), dwHandle, BufSize, Buf);
  VerQueryValue(Buf, "\", Pointer(VerInfo), Len);
  with VerInfo^ do
   Result := Format("%d.%d.%d.%d", [
    dwFileVersionMS shr 16,
    dwFileVersionMS and $FFFF,
    dwFileVersionLS shr 16,
    dwFileVersionLS and $FFFF]);
 finally
  FreeMem(Buf, BufSize);
 end;
end;
end;


 
syte_ser78 ©   (2005-01-19 11:43) [15]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.061 c
1-1106474934
GSQ
2005-01-23 13:08
2005.02.06
:-(((


1-1106412722
Никита
2005-01-22 19:52
2005.02.06
Глюк ImageList


1-1106596469
MadGhost
2005-01-24 22:54
2005.02.06
TValueListEditor как вставить туда TComboBox ?


1-1106418295
MadGhost
2005-01-22 21:24
2005.02.06
Как динамически создать на форме TLabel TEdit и другие компоненты


1-1106493261
mariya_mezenceva
2005-01-23 18:14
2005.02.06
код разделителя разрядов