Автор Тема: Проблема с кавычками в функции FileExists()  (Прочитано 1811 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн snoitaleR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 854
  • Репутация: 222
  • Пол: Мужской
    • Награды
Проблема возникла при считывании адреса из ключа реестра...
Дело в том, что адрес к программе хранится в кавычках, и FileExists() считает такой путь неправильным...
Код: AutoIt [Выделить]
; НАЧАЛО
 $R=RegRead('HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\command','')

 If FileExists($R) Then
  MsgBox(0,$R,'FIREFOX установлен...')
 Else
  MsgBox(0,$R,'FIREFOX не установлен...')
 EndIf
; КОНЕЦ
 

Удалить кавычки можно и несложно, дело не в этом...
Вопрос в другом: почему адрес в кавычках считается неправильным?
Главное в жизни человека - это отношение...

Русское сообщество AutoIt

Проблема с кавычками в функции FileExists()
« Отправлен: Май 25, 2014, 09:34:12 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2688
  • Репутация: 457
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
функция добавляет кавычки, скорее всего
""C:\Program Files (x86)\Mozilla Firefox\firefox.exe""
что вызывает ошибку
это уже вопрос к разрабам..
ведь run и shellexecute работают с этим путем правильно
кстати, FileGetAttrib тоже не воспринимает этот путь
возможно еще какие то функции не будут работать..
не весело
« Последнее редактирование: Май 25, 2014, 13:23:37 от joiner »
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 4003
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
RegRead возвращает строковый параметр как есть, то есть с кавычками.
Следовательно, FileExists не сможет правильно обработать путь.
Код: AutoIt [Выделить]
$sPath = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\command', '')
ConsoleWrite(StringFormat('Path: %s\tExists: %d\n', $sPath, FileExists(Execute($sPath))))


Скорблю и помню.




Оффлайн snoitaleR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 854

  • Автор темы
  • Репутация: 222
  • Пол: Мужской
    • Награды
Garrett
В качестве временного решения Ваш вариант мне понравился больше, чем мой...
Код: AutoIt [Выделить]
; НАЧАЛО

 $R=StringReplace(RegRead('HKLM\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\command',''),'"','')
 MsgBox(0,$R,FileExists($R))

; КОНЕЦ
 

Так как для темы я выбрал раздел "Баг-репорты и запросы на новые функции", хотелось бы услышать мнения "баг - не баг", и если баг, то дождаться исправления бага в одной из следующих версий AUTOIT, а если не баг, то сразу отмечу тему решённой...

Русское сообщество AutoIt

Re: Проблема с кавычками в функции FileExists()
« Ответ #3 Отправлен: Май 25, 2014, 18:34:40 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 4003
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
snoitaleR  [?]
Цитировать
хотелось бы услышать мнения "баг - не баг"
IMHO нет, потому что кавычки тоже символ и функция RegRead их честно вам возвращает. :)
А вот, к примеру, функция IniRead возвращает значение уже без кавычек.
Код: (ini) [Выделить]
  1. [prog]
  2. path="C:\Program Files\Google\Chrome\Application\chrome.exe"
Код: AutoIt [Выделить]
$sPath = IniRead('test.ini', 'prog', 'path', 'null')
ConsoleWrite(StringFormat('Path: %s\tExists: %d\n', $sPath, FileExists($sPath)))


Русское сообщество AutoIt

Re: Проблема с кавычками в функции FileExists()
« Ответ #4 Отправлен: Май 25, 2014, 19:51:29 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
5253 Просмотров
Последний ответ Апрель 07, 2010, 15:00:35
от SyDr
10 Ответов
4916 Просмотров
Последний ответ Июль 15, 2015, 09:15:43
от medvedi244
6 Ответов
6054 Просмотров
Последний ответ Июнь 30, 2010, 13:18:35
от Денис
5 Ответов
3491 Просмотров
Последний ответ Январь 11, 2011, 02:26:22
от Yashied
9 Ответов
7691 Просмотров
Последний ответ Март 31, 2011, 09:11:41
от Suppir
14 Ответов
5218 Просмотров
Последний ответ Июль 26, 2011, 12:58:45
от Suppir
5 Ответов
6930 Просмотров
Последний ответ Март 08, 2012, 21:04:34
от CreatoR
7 Ответов
4405 Просмотров
Последний ответ Июль 07, 2012, 22:14:40
от Medic84
1 Ответов
1881 Просмотров
Последний ответ Октябрь 13, 2012, 01:50:55
от ---Zak---
1 Ответов
341 Просмотров
Последний ответ Август 23, 2017, 23:11:17
от Alofa