Перейти к содержанию
Fire Monkey от А до Я
  • 0

Правильно подключить измененный стандартный pas файл


kami

Вопрос

Доброго времени суток, коллеги!

 

Пришлось несколько изменить код стандартного модуля FMX.WebBrowser.iOS для корректной работы при загрузке локальных файлов.

Вопрос: какие действия надо предпринять, чтобы изменения подхватывались приложениями без дополнительных телодвижений? В VCL это делалось достаточно просто - меняем pas на нужный, подключаем путь в SearchPath, пытаемся скомпилировать, после чего получившийся dcu заменяем в /lib и убираем путь из SearchPath.

 

Предыстория (не обязательно к прочтению):

Несколько недель я бился над проблемой вылета приложения при работе с WebBrowser.Navigate(local_file_path). Вылетало далеко не всегда, но удалось выявить закономерность и после долгих мучений, я нашел виновника торжества - метод TiOSWebBrowserService.DoNavigate(...). В нем проводились хитрые манипуляции с пересборкой URL, которые иногда приводили к nil в одной из переменных. Через десятые руки и внутренности iOS это все передавалось в TiOSWebViewDelegate.webView, где и возникало исключение. До метода TiOSWebViewDelegate.webView(webView: UIWebView;  didFailLoadWithError: NSError); дело даже не доходило, call stack виновника, само собой, не показывал.

 

Кому интересно, что получилось (не гарантирую идеальность кода) на XE7 Update1:

Простите, кнопка "код" почему-то удаляет весь код при сохранении сообщения, несколько раз пробовал. Пришлось воспользоваться "цитатой". А цитирование удаляет некоторые строки из кода...

Update: видимо, движку форума не нравятся два слеша, которые используются в этом коде. Пришлось удалить код...

Изменено пользователем kami
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Сталкивались с той же фигней, метод отвечающий за мутацию URL, кривой как ни крути, в частности мы не могли передать локальному HTML файлу параметры, т.к там проверяется существование файла и конструкции типа index.html?type=1 не работают, зачем это нужно было делать не ясно... Положите исправленный файл в корневую папку вашего приложения.

Ссылка на комментарий
  • 0

Положите исправленный файл в корневую папку вашего приложения.

Думаю, это не поможет. Если я правильно понимаю, то при релизной компиляции будут использоваться dcu из пред-компилированных папок. Соответственно, dcu модуля FMX.WebBrowser подхватит не измененную dcu FMX.WebBrowser.IOS.

Сейчас я напрямую подключил в проект измененный модуль из /Source/fmx/ . Но чтобы проверить правильность "подхватывания" мне сейчас нужно провести дополнительно кучу действий, чем я, собственно, и занимаюсь.

 

Изменения (еще раз обращаю внимание - это относится к XE7 Update1)

ChangesForFMX.WebBrowser.IOS.txt

Ссылка на комментарий
  • 0

uuxyyz,

прошу прощения - помогло. Тем не менее, я заменил получившиеся dcu в папке lib, после чего удалил файл из корня проекта и заново сделал билд проекту - изменения подхватились + я избавился от проблемы "глобально", а не в рамках своего проекта. Хотя... тут как посмотреть, конечно...

В общем, изменения в Studio\15.0\lib я оставил, но и файл в папку проекта вернул.

 

Спасибо, вопрос решен!

Изменено пользователем kami
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...