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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2012, 23:21   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Поиск версий и вывод самой последней

Попытался реализовть и попал в тупик. Вижу, что получился бред, но нормально сделать не могу.
Код:
function GetJavaVersion: string;
var
  Reg: Tregistry;
  Java6, Java7: string;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.6', False) then Java6 := '1.6';
  if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.7', False) then Java7 := '1.7';
  Reg.Free;

  if (Java6 <> '') then Result := '1.6';
  if (Java7 <> '') then Result := '1.7';
  if ((Java6 <> '') and (Java7 <> '')) then Result := '1.7' else Result := 'Java не установлена';
end;
Требуется найти все версии и вывести самую последную, иначе
Код:
Result := 'Java не установлена';
Shouldercannon вне форума Ответить с цитированием
Старый 20.03.2012, 23:45   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Попытался реализовть и попал в тупик. Вижу, что получился бред, но нормально сделать не могу.
Код:
function GetJavaVersion: string;
var
  Reg: Tregistry;
  Java6, Java7: string;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.6', False) then Java6 := '1.6';
  if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.7', False) then Java7 := '1.7';
  Reg.Free;

  if (Java6 <> '') then Result := '1.6';
  if (Java7 <> '') then Result := '1.7';
  if ((Java6 <> '') and (Java7 <> '')) then Result := '1.7' else Result := 'Java не установлена';
end;
Требуется найти все версии и вывести самую последную, иначе
Код:
Result := 'Java не установлена';
Реально бред. Зачем такой махачь с реестром, когда есть CMD грабли:
Код:
java -version
И я вижу ответ:
Код:

C:\Documents and Settings\root\Рабочий стол>java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)
Человек_Борща вне форума Ответить с цитированием
Старый 21.03.2012, 09:10   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Так это стандартными средсвами Windows, надо через Delphi.
Shouldercannon вне форума Ответить с цитированием
Старый 21.03.2012, 09:18   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Человек_Борща
Реально бред. Зачем такой махачь с реестром, когда есть CMD грабли:
java -version
Человек_Борща, не согласен насчёт бреда!
TC нужно из Delphi проверить, если ли джава на данной машине и если да - то какой версии...

да, и, кстати, если java на компьютере отсутствует, что получите в результате?!
java не является внутренней или внешней командой, исполняемым файлом ?...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.03.2012, 09:42   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Если проверять через CMD и если Java нет, то
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Shouldercannon>java -version
Error opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.

C:\Users\Shouldercannon>
Shouldercannon вне форума Ответить с цитированием
Старый 21.03.2012, 10:21   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Serge_Bliznykov,
Цитата:
java не является внутренней или внешней командой, исполняемым файлом
Да. Но куда проще вызвать шелл
Код:
java -version > "1.txt"
А затем выбрать оттуда только нужное при помощи регулярного выражения, или своими рукми.

Shouldercannon,
Цитата:
Error opening registry key 'Software\JavaSoft\Java Runtime Environment'
Error: could not find java.dll
Error: could not find Java SE Runtime Environment.
Вот хотябы по этому, и не сунуться в реестр.
И да, что будет если я не админ, а скажем, юзер или вообще гость, которому доступна ваше ПО? Как думаете..?
Человек_Борща вне форума Ответить с цитированием
Старый 21.03.2012, 10:45   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
И да, что будет если я не админ, а скажем, юзер или вообще гость, которому доступна ваше ПО? Как думаете..?
Неважно xD
Вот
Код:
function GetJavaVersion: string;
var
  Reg: Tregistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.6', False) then
  begin
    Result := '1.6';
    if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.7', False) then Result := '1.7';
  end
  else if Reg.OpenKey('\SOFTWARE\JavaSoft\Java Runtime Environment\1.7', False) then Result := '1.7' else Result := 'Java íå óñòàíîâëåíà';
  Reg.Free;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 21.03.2012, 11:27   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Неважно xD
Выпадение в AV. По крайней мере вас 7-ка точно в лес пошлет самым грубым способом.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск последней строки с данными D_e_n_n C# (си шарп) 1 21.02.2012 13:13
вывод последней строки из TXT файла vlad.md PHP 4 01.12.2011 06:08
Вывод последней записи из таблицы mysql NapalmRain PHP 4 24.06.2011 14:41
поиск последней заполненной стрки dedwar Microsoft Office Excel 1 27.04.2011 02:45
макрос поиск последней незаполненной строки Uralmaster Microsoft Office Excel 21 10.02.2011 02:17