Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2014, 11:23   #11
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Какой смысл лезть в реестр за путём, чтоб потом идти по этому пути и выдёргивать версию из exe, если можно сразу в реестре глянуть версию? Какой путь оптимальнее?
Цитата:
А зачем реестр? Путь к Program Files и без реестра узнается через винапи
А WinApi откуда путь берёт? Не из реестра ли?
indexx вне форума Ответить с цитированием
Старый 14.10.2014, 11:32   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
будь мужиком признать.
Признаю. Я - мужик. Чо дальше-то?
В данном случае нинада никакой реестр, т.к. IE торчит всегда в папке
Код:
%SYSTEMDRIVE%\Program Files\Internet Explorer
Цитата:
Какой смысл лезть в реестр за путём, чтоб потом идти по этому пути и выдёргивать версию из exe, если можно сразу в реестре глянуть версию?
Вопрос аффтара перечитай, гений мля, он говорит, что в реестре неверная инфа!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 14.10.2014 в 11:38.
min@y™ вне форума Ответить с цитированием
Старый 14.10.2014, 11:37   #13
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Цитата:
Признаю. Я - мужик. Чо дальше-то?
Дальше ты тряпка, ибо цитируешь кусок фразы, меняя её смысл. С тряпками говорить, и тем более спорить нет смысла.
indexx вне форума Ответить с цитированием
Старый 14.10.2014, 11:43   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
А WinApi откуда путь берёт? Не из реестра ли?
Какая разница? Он-то уж точно разрулит где нужные значения в реестре.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.10.2014, 11:43   #15
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Дальше ты тряпка, ибо цитируешь кусок фразы, меняя её смысл. С тряпками говорить, и тем более спорить нет смысла.
Не передёргивай. Настало время тебе признать, что ты не прав.
Мне пришлось доказывать свою правоту, я это сделал.
Твой ход.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.10.2014, 11:46   #16
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Правоту ты свою не доказал тряпка. %SYSTEMDRIVE% это системная переменная, получаемая угадай откуда. Более мне с тобой говорить не о чем, тряпка.
indexx вне форума Ответить с цитированием
Старый 14.10.2014, 13:56   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Правоту ты свою не доказал тряпка. %SYSTEMDRIVE% это системная переменная, получаемая угадай откуда. Более мне с тобой говорить не о чем, тряпка.
Собака лает - караван идёт.
Автор, я в каментах срать не стал, сходил пообедал, повалялся на диване, а заодно тебе пример написал.

Код:
program p266870;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils;

function QueryString(const EntryName: string; pInfoBuffer: Pointer): String;
var
  Buffer: array[0..255] of Char;
  FuncSize, Size, LangCharset: UINT;
  Ptr: Pointer;
  Translation: string;
begin
   Result:= '';

   VerQueryValue(pInfoBuffer, '\VarFileInfo\Translation', Ptr, Size);
   LangCharset:= pCardinal(Ptr)^;
   Translation := Format('%4.4x%4.4x',[LangCharset and $FFFF,  HiWord(LangCharset)]);

   StrPCopy(Buffer, '\StringFileInfo\' + Translation + '\' + EntryName);
   if VerQueryValue(pInfoBuffer, Buffer, Ptr, FuncSize) then
     Result := StrPas(PChar(Ptr));
end;

function GetFileVersion(const FileName: string): string;
var
  ExePath: PChar;
  Size: Cardinal;
  Buffer: PChar;
begin
  Result:= 'not available.';
  ExePath:= PChar(FileName);
  Size:= GetFileVersionInfoSize(ExePath, Size);

  if Size = 0
    then Exit;

  Buffer:= StrAlloc(Size + 1);
  try
    if not GetFileVersionInfo(ExePath, 0, Size, Buffer)
      then Exit;
    Result:= QueryString('FileVersion', Buffer);
  finally
    StrDispose(Buffer);
  end;
end;

function SystemHostDrive: Char;
var
   SysDir: array[0..MAX_PATH - 1] of Char;
begin
   GetWindowsDirectory(SysDir, MAX_PATH+1);
   result:= SysDir[0];
end;

var
  IEName: string;

begin
  IEName:= SystemHostDrive + ':\Program Files\Internet Explorer\iexplore.exe';
  WriteLn('Current IE version: ', GetFileVersion(IEName));
  ReadLn;
end.
Отлажено на Delphi 7 + Windows 8.1x64.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 14.10.2014, 14:23   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Правоту ты свою не доказал тряпка. %SYSTEMDRIVE% это системная переменная, получаемая угадай откуда. Более мне с тобой говорить не о чем, тряпка.
это переменная окружения, которая уже лежит в вашем приложении между прочим.
в систему за ней лезть не нужно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать версию сервера? Vit@L БД в Delphi 2 04.11.2011 16:54
Узнать версию Indy из исходников FreeBrain Помощь студентам 2 01.09.2010 19:49
Как узнать версию библиотеки в Devcpp? Lavisa Общие вопросы C/C++ 2 30.07.2009 16:44
Узнать версию WINDOWS dimonbest Win Api 1 29.12.2008 12:07
Как узнать версию браузера FlooPy PHP 3 24.11.2007 23:25