Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компонент TScriptControl. как его готовить? Компонент TScriptControl 
:(
    Опции темы
Pcrepair
Дата 10.1.2012, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Добрый день
есть код
Код


uses
  MSScriptControl_TLB; //и все остальные модули
///////////////////////
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    ScriptControl1.Language := 'JavaScript'; //интерпретатор JAVA скриптов?
    Memo2.Text := (IntToStr(ScriptControl1.Eval(Memo1.Text))); //выводим в МЕМО2 результат выполнения скрипта из МЕМО1
  finally

  end;
end;

Результаты:
1. компиляция без ошибок (РАД2010)
2. если вставить в МЕМО1 1+5, в МЕМО2 выводит 6, так, к примеру, типа арифметика работает
3. если взять с закачаной страницы какой нибуть жаба-скрипт между тегов (<script language="Javascript">f_bottom('<br>', '', '')</script>) и вставить его в МЕМО1 то выскакивает сообщение: "Предполагается наличие объекта" или "Предполагается ...что то еще" и другие сообщения об ошибке

Вопрос для знатоков:
1. вообще TScriptControl + idHTTP можно как то приспособить для обработки скриптов в закачаной странице, типа как это делает браузер, или оно для чего то иного предназначено?
2. кто нибуть знает как в браузерах типа Гекко или Хромиум, или в других компонентах (Твеббраузер, Embedded Web Browser, THtmlViewer, WebKit) происходит обработка скриптов, в том смысле - нельзя ли их как то приспособить (использовать часть их кода) для обработки скриптов, без отображения результатов обработки в визуальном компоненте.
В общем нужно следующее
- idHTTP закачал страницу
- интерпретатор JAVA обработал скрипты в коде страницы и вставил на их место результат работы
Всем ответившим - СПАСИБО
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Snowy
Дата 10.1.2012, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



JavaScript на странице подразумевает наличие контекста документа в котором он выполняется.
В отрыве от документа, скрипт обычно выполнить невозможно.
Соответственно браузеры разбирают текст страницы и генерируют страницу, создавая все описанные в ней объекты.
Соответственно, чтобы корректно интерпретировать скрипт со страницы, требуется браузерный движок.
А данный контрол возможно приспособить только для конкретной страницы, предварительно сэмулировав необходимый набор объектов.
Но для этого нужно разбираться в JavaScript, чтобы его обмануть.
PM MAIL   Вверх
Pcrepair
Дата 10.1.2012, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Цитата

Соответственно, чтобы корректно интерпретировать скрипт со страницы, требуется браузерный движок.

википудия говорит:
Браузерный движок (англ. layout engine) — представляет собой программу, преобразующую содержимое веб-страниц (файлы HTML, XML, цифровые изображения и т. д.) и информацию о форматировании (в форматах CSS, XSL и т. д.) в интерактивное изображение форматированного содержимого на экране.

если по простому - просто обозреватель или браузер

получается, нужно приискать современный браузер (хромиум или гекко), но целиком в виде кода, чтоб потом кастрировать, оставив нужное. наврядли можно написать браузер, корректно обрабатывающий современные ХТМЛ-страницы с нуля? с другой стороны, на делфи исходников нет (для хромиума нужно ДЛЛ в каталог с прогой копировать + компонент), выходит на Делфи такое реально не сделать? впрочем на С++ полных исходников то же что не видно.

или кто то знает где качнуть?
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Snowy
Дата 10.1.2012, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А чем не устраивает стандартный TWebBrowser?
PM MAIL   Вверх
Pcrepair
Дата 10.1.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



если коротко - то всем
если детально
1. визуальный компонент в принципе не нужен
2. результат обработки кода закачанной страницы, отображенный, выделенный и скопированный в буфер обмена (а иначе никак) содержит много мусора, не восстанавливает ссылки полностью
3. очень некорретно определение времени окончания закачки
4. загрузка ненужного (картинки, флеш, что то там еще) - лишний трафик и время
5. использование КЛИПБОРД (Это принципиально) - из за чего программа должна быть все врема активна, иначе не получит доступа к буферу ОС - надо все пихать в вирт машину
у остальных движков почти те же проблемы, оне же визульные для хомо

 а мне нужна программа которая будет тихо, незаметно выполнять возложенные на нее задачи
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Snowy
Дата 10.1.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



1. Можно его спрятать - будет невидимый.
2. мусор можно почистить
3. проблема непонятна
4. это можно отключить
5. использовать клипборд как минимум дурной тон. Не вижу в этом никакой необходимости.

ну а в целом всё зависит от того, что требуется - универсальная машина, или только реализация конкретных действий с конкретным набором страниц.
PM MAIL   Вверх
Pcrepair
Дата 10.1.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Цитата(Snowy @  10.1.2012,  15:29 Найти цитируемый пост)
 использовать клипборд как минимум дурной тон. Не вижу в этом никакой необходимости.

 это не дурной тон, а единственный способ получить результат обработки скриптов. все остальные способы типа иннерхтмл просто выдают закачный, но не обработанный код страницы
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
Snowy
Дата 10.1.2012, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Всю информацию нужно брать из DOM структуры документа.
Именно её меняет JavaScript.
А иннерхтмл конечно будет давать закачанный код. Тут никто и не спорит.
А вот юзать буфер обмена некрасиво хотя бы потому, что он предназначен для использования юзером.
И ему может показаться неприятным, что он скопировал туда нужную ему информацию, а вставил какую-то хрень, которую туда самовольно засунула в него твоя программа.
PM MAIL   Вверх
Pcrepair
Дата 10.1.2012, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 16.1.2011

Репутация: нет
Всего: нет



Цитата(Snowy @  10.1.2012,  16:27 Найти цитируемый пост)
Всю информацию нужно брать из DOM структуры документа.

теория конечно интересная
нет все понятно, но шо конкретно(С)
--------------------
Сборник рабочего кода Процедур и Функций DelPhi     http://validcoderepo.narod.ru/
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.