Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Наименование продукта [D7, XP]


Lera ©   (2007-11-07 13:00:00) 

Доброго дня, подскажите пожалуйста как программно (не используя RxLib) можно получить содержимое поля ProductName и другие значения полей, которые находится по пути Project/Options на закладке Version Info. Заранее спасибо.


Amoeba   (2007-11-07 14:01:00) [1]

Можно еще посмотреть другой компонент по этой ссылке:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=13


Ega23   (2007-11-07 13:57:00) [2]


> все равно access. Видимо RxLib глючная


жжош!


Reindeer Moss Eater   (2007-11-07 13:37:00) [3]

И не говори подружка. Баттон-то из моего примера тоже поди глючит?


Lera   (2007-11-07 13:33:00) [4]

все равно access. Видимо RxLib глючная


Reindeer Moss Eater   (2007-11-07 13:31:00) [5]

Точнее так

with AppVerInfo do
 try
  FileName := ParamStr(0);
  ShowMessage(ProductName);
 finally
  Free;
 end;


Reindeer Moss Eater   (2007-11-07 13:20:00) [6]

unit RxVerInf;
...
function AppVerInfo: TVersionInfo;
begin
Result := TVersionInfo.Create(AppFileName);
end;
...

unit unit1;
....
with AppVerInfo(ParamStr(0)) do
try
 ShowMEssage(ProductName);
finally
 Free;
end;


Reindeer Moss Eater   (2007-11-07 13:18:00) [7]

var Button : TButton;
begin
Button.Caption := 'а баттон-то тоже оказывается глючит?';
...


Ega23   (2007-11-07 13:18:00) [8]


unit RxVerInfo

.......

procedure TVersionInfo.ReadVersionInfo;
begin
 FValid := False;
 FSize := GetFileVersionInfoSize(FFileName, FHandle);
 if FSize > 0 then
   try
     FBuffer := MemAlloc(FSize);
     FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
   except
     FValid := False;
     raise;
   end;
end;


Reindeer Moss Eater   (2007-11-07 13:16:00) [9]

Все верно


Lera   (2007-11-07 13:14:00) [10]

прм обращении к AppVerInfo.CompanyName, где AppVerInfo: TVersionInfo происходит лиагностика "Access violation"


Reindeer Moss Eater   (2007-11-07 13:06:00) [11]

просто Rx глючит

Это только кажется


korneley   (2007-11-07 13:05:00) [12]


function GetMyVersion(DigitNum: integer): integer;
var a : array[0..1024]of char;
   w, Size,ww : DWORD;
   lpData, p : pointer;
   wi : tagVS_FIXEDFILEINFO;
begin
 Result := 0;
 ww := DWORD(addr(w));
 Size := GetFileVersionInfoSize(StrPCopy(a, Application.ExeName), ww);
 if Size > 0 then begin
   GetMem(lpData, Size);
   try
     if GetFileVersionInfo(a, ww, Size, lpData) then begin
       p := addr(wi); Size := sizeof(wi);
       if VerQueryValue(lpData, '\', p, Size)then begin
         wi := tagVS_FIXEDFILEINFO(p^);
         case DigitNum of
         1:Result := wi.dwFileVersionMS shr 16;
         2:Result := wi.dwFileVersionMS and $0000FFFF;
         3:Result := wi.dwFileVersionLS shr 16;
         4:Result := wi.dwFileVersionLS and $0000FFFF;
         end;
       end;
     end;
   finally
     FreeMem(lpData, Size);
   end;
 end;
end;

Не помню откуда "выдрал", но цифру версии выдает исправно...


Lera   (2007-11-07 13:04:00) [13]

просто Rx глючит


Reindeer Moss Eater   (2007-11-07 13:03:00) [14]

как программно (не используя RxLib)

1. Поставить RX и посмотреть как это делает он
2. Запомнить как это делается.
3. Удалить RX.
4. Сделать то же самое в своем коде.


Наверх

Титульная страница Поиск, карта сайта Написать письмо