Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.05.13;
Скачать: CL | DM;

Вниз

Компонент TScriptControl. как его готовить?   Найти похожие ветки 

 
Pcrepair ©   (2012-01-10 13:51) [0]

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

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 обработал скрипты в коде страницы и вставил на их место результат работы
Всем ответившим - СПАСИБО


 
sniknik ©   (2012-01-10 15:27) [1]

не в курсе компонента вообще, но MSJavaScript не одно и тоже с JavaScript... вроде бы, а объект явно от MS.
хорошо объясняет
> "Предполагается наличие объекта" или "Предполагается ...что то еще"


 
Dimka Maslov ©   (2012-01-10 16:32) [2]


> если взять с закачаной страницы какой нибуть жаба-скрипт
> между тегов


Жаба-скрипт обычно связан со структурой страницы целиком, а не только тем, что между тегом. Вот ему объекта и не хватает.


 
Pcrepair ©   (2012-01-10 17:06) [3]


> Вот ему объекта и не хватает

и что делать?
скрипты разные бывают, но как правило содержат ссылки на файл.js в котором всякого наворочено.
неясно - Компонент TScriptContro нужен для этих дел, или он для чего другого?l


 
Anatoly Podgoretsky ©   (2012-01-10 17:52) [4]

http://podgoretsky.com/ftp/Docs/WSH/


 
Pcrepair ©   (2012-01-10 18:25) [5]

а Windows Script Host то тут причем?
или просто заголовок темы не читали?


 
Dimka Maslov ©   (2012-01-10 18:37) [6]


>  Pcrepair ©   (10.01.12 17:06) [3]


Не только. Там ещё могут быть ссылки на объекты самой страницы. Например на document.body.anchors или куда то ещё. Для чего нужен TScriptControl я не знаю, но подозреваю, что для выполнения кода, который появляется в процессе использования программы. И вырезка <script> из html-страницы будет работать только в простейших случаях.


 
sniknik ©   (2012-01-10 20:18) [7]

var
 Major, Minor: string;
begin
 ScriptControl1.Language     := "JScript";
 Major:= ScriptControl1.Eval("ScriptEngineMajorVersion()");
 Minor:= ScriptControl1.Eval("ScriptEngineMinorVersion()");
 Memo2.Text:= Major +"."+ Minor;
end;

а вот код из html страничек без их обьектной модели... врядли.


 
sniknik ©   (2012-01-10 20:23) [8]

или
begin
 ScriptControl1.Language:= "JScript";
 ScriptControl1.AddCode("var X = ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion()");
 Memo2.Text:= ScriptControl1.Eval("X");
end;


 
Pcrepair ©   (2012-01-10 21:36) [9]

ну в общем кое что прояснилось
c:\windows\system32\msscript.ocx.
этот кусок создает активХ объект ScriptControl из стандартной поставки WSH
и запускает в нем скрипт на исполнение.
похоже TScriptControl не для браузера, получается что браузеры что то свое, встроенное имеют для интерпретации скриптов в ХТМЛ-странице


 
Медвежонок Пятачок ©   (2012-01-11 11:22) [10]

да пофик что они имеют.
главное что твой делфийский процесс не имеет всех тех объектов, которые доступны оригинальному скрипту на странице.

И будут они недоступны тебе даже если ты заюзаешь тот же самый интерпретатор, что использует сам браузер.


 
sniknik ©   (2012-01-11 12:54) [11]

> получается что браузеры что то свое
надо же, "открыл америку"... да они на весь инет уже заколебали "мерятся", у кого пинг короче, да яваскрипт быстрее... было бы прикольно после этих "меряний" если бы они все использовали один, тем более мелкосовтский объект (особенно мульти-платформенные...).

> И будут они недоступны
зато их можно сделать самому "унутре", и будет это первый шаг на пути к созданию "своего", кривого, браузера. :)

вообще в чем цель? если нужен скриптовый язык то их много, а прямо тут, в этом "компоненте"/обьекте, можно использовать "бейсик скрипт", он не завязан на DOM браузера.


 
Pcrepair ©   (2012-01-11 15:57) [12]


> вообще в чем цель?

В общем нужно следующее
- idHTTP закачал страницу
- интерпретатор JAVA (или как то еще) обработал скрипты в коде страницы и вставил на их место результат работы


 
Сергей М. ©   (2012-01-11 16:17) [13]


> - idHTTP закачал страницу


Это блажь такая - закачать именно средствами idHTTP ?
WebBrowser"om (который потом и скрипты без вопросов исполнит) некошерно ?


 
Pcrepair ©   (2012-01-11 18:19) [14]

некошерно!!!
потомучто результат работы твеббраузера, особенно обработка жаба-скриптов, можно вывести только через клипборд (сделать КОНТРОЛ + А (+ С)). а чтоб вывести через клипборд, приложение должно быть активно (иначе не получит клипборд)) а чтоб приложение всегда было актвино, нужно или ставить виртМашину или вообще выделять отдельный кампутер для приложения - очень некошерно

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


 
Pcrepair ©   (2012-01-11 18:36) [15]

вот если бы использовать компонент TWebBrowse как то в темную, только для выполнения скриптов. такое возможно?


 
Dimka Maslov ©   (2012-01-11 18:45) [16]


> можно вывести только через клипборд


Вы перестаньте мне сказать, как говорят в Одессе.


 
Pcrepair ©   (2012-01-11 18:49) [17]

а как еще? нашел только это

WebBrowser1.Navigate(URL, Flags, TargetFrameName, PostData, Headers);
repeat
   Application.ProcessMessages;
 until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
 if WebBrowser1.Document <> nil then
 (Webbrowser1.Document as IHTMLDocument2).ParentWindow.Focus;
 WebBrowser1.ExecWB(OLECMDID_SELECTALL,OLECMDEXECOPT_DONTPROMPTUSER);
 Application.ProcessMessages;
 if (Webbrowser1.Document as IHTMLDocument2).queryCommandEnabled("Copy") then
 Application.ProcessMessages;
 WebBrowser1.ExecWB(OLECMDID_COPY,OLECMDEXECOPT_DONTPROMPTUSER);


 
Dimka Maslov ©   (2012-01-11 19:09) [18]


> Pcrepair ©   (11.01.12 18:49) [17]

Вот только недавно тут была ветка на эту тему, где всё подробно разъяснялось, чем берётся текст из браузера. Кто там автор?


 
Pcrepair ©   (2012-01-11 19:20) [19]

причем тут текст из браузера?
нужен не только текст, но и все остальное - полные ссылки, табличная структура страницы

и где там подробно разъяснялось? кроме флуда, практически ничего небыло


 
sniknik ©   (2012-01-11 19:47) [20]

> причем тут текст из браузера?
> нужен не только текст, но и все остальное - полные ссылки, табличная структура страницы
и текст и ссылки и вообще все, что имеет сам WebBrowser, DOM структуру  изучай. и его интерфейсы для доступа.

> и где там подробно разъяснялось? кроме флуда, практически ничего небыло
если там была твоя ветка, то чего ты хотел с такими тупыми и безапелляционными заявлениями (из которых [14] практически полностью состоит)???


 
Dimka Maslov ©   (2012-01-11 20:00) [21]

Там было сказано в конце, что полное описание интерфейса IHtmlDocument2 находится на конкретной странице MSDN. Изучив эту документацию, можно получить всю информацию по всей объектной модели документа, тексту, ссылкам, таблицам, фреймам, скриптам и проч. Не изучив ни одного подобного описания не возможно писать программы. Например, когда мне по работе, довольно далёкой от программирования, понадобилось описание векторных графических форматов eps и svg, я же не лез на форумы, а взял соответствующие документы с сайтов adobe и rfc, прочитал их и написал нужную мне программулину. Никто за Вас изучать техническую документацию не будет и писать по ней программу тоже. Ибо время очень дорогой и органиченный ресурс (час моего рабочего времени, к примеру, стоит около $100). Займитесь своей программой сами. Здесь могут только посоветовать, но не сделать за Вас работу.


 
Pcrepair ©   (2012-01-11 20:26) [22]

а что там тебе (14) конкретно не так?
все что там написано - результат испытаний вполне рабочего варианта.
но недостаточно удобного в использовании


 
Pcrepair ©   (2012-01-11 20:33) [23]

ну тут были вопросы к практикам, а не к теоретикам
все что мне нужно - понять, стоит ли "копать"
а MSDN, так как и прочие рукамиводящие документы, можно изучать долго и упорно, причем без всякой практической пользы
вот щас наверно кто начнет песнь о обязательной необходимости изучения высшей математики для программиста
впрочем, кое что стало очевидно - TScriptControl не пригоден
одной ямой меньше!!


 
знайка   (2012-01-11 20:40) [24]

Еще смотря какие скрипты, не все результаты их работы вы в структуре увидите, темболее если тупо текстом.


 
sniknik ©   (2012-01-11 20:48) [25]

> а что там тебе (14) конкретно не так?

> можно вывести только через клипборд
> приложение должно быть активно
> нужно или ставить виртМашину или вообще выделять отдельный кампутер для приложения
> дает очень загаженый хтмл-код,
> полные ссылки не восстанавливает,
> вообще вирусы его грызут
> много косячком помельче

все полная чушь, от простой неправды до бреда.


 
Dimka Maslov ©   (2012-01-11 20:49) [26]

Высшая математика обязательна для изучения всеми, кто претендует на звание образованного человека. А MSDN, так как и прочие рукамиводящие документы, нужно изучать долго и упорно, ибо только в них заключается практическая польза, для которой документы и пишутся. Теории как таковой тут нет и быть не может. Если Вы считаете чтение мануалов не барским занятием - Вам нечего делать в программировании вообще и на этом сайте в частности. Или наоборот.


 
Pcrepair ©   (2012-01-11 21:44) [27]

Удалено модератором


 
Сергей М. ©   (2012-01-11 21:53) [28]


> это форум, ветка для начинающих


Именно.
Но в  [14] ты понес откровенную ахинею.
Как говаривал проф.Преображенский - "космического масштаба и космической же глупости" (с)


 
Pcrepair ©   (2012-01-11 21:56) [29]

Удалено модератором


 
Dimka Maslov ©   (2012-01-11 23:06) [30]


>  выведи то что отображено на визуальной части компонента
> ВебБраузер с сохранением ссылок, табличных и прочих тегов
> в файл или переменную


Сказано же, моё рабочее время стоит $100/час. Не думаю, что у Сергея меньше. Идёшь к его работодателю, заключаешь договор на оказание информационных услуг и через несколько дней получишь свой код. Нет денег? Тогда прислушайся к тем советам, которые тебе дали. Они полезны. И это не флуд. А делать за тебя да ещё и безвозмездно, т.е. даром, никто не будет. Это, как говорится, бизнес и ничего лишнего. Впрочем, я повторяюсь, но уже никакой надежды на то, что буду услышан нет. Всего хорошего и спасибо за рыбу.


 
sniknik ©   (2012-01-11 23:09) [31]

развод "на слабо"... самая дебильная линия поведения здесь. так, для справки.


 
Pcrepair ©   (2012-01-11 23:52) [32]

Удалено модератором
Примечание: Наезжать и оскорблять будешь в другом месте


 
sniknik ©   (2012-01-12 00:23) [33]

> тех кто только флудить может?
и еще "кино снимать" - вот тебе "пример", управление - кнопки на панели программы, управляют маркером в браузере (гугльмап), и сохраняют координату из него в базу (прога правда старая, очень, саму базу не нашел/генерить не хочу, поэтому ошибка... но визуально координата тоже отображается в едит справа вверху)
http://webfile.ru/5765297

p.s. можешь не верить, но объекты гугльмапа посложнее, чем "ссылки"/... будут.


 
Pcrepair ©   (2012-01-12 08:55) [34]

Удалено модератором


 
Сергей М. ©   (2012-01-12 09:18) [35]


> Pcrepair ©   (11.01.12 18:19) [14]


Скажи, любезный, накой хрен тебе сдался это клипборд ?
Предположим, твоя изначальная затея снюхать скриптконтрол с idhttp реализуема и ты запустил скрипт.
Каким боком это касается тех самых результатов работы твеббраузера, которые можно "вывести только через клипборд" ?


 
sniknik ©   (2012-01-12 09:54) [36]

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

> просто не надо теории излагать, мне нужен практический совет от тех кто в теме
не для таких как ты. практические тут тоже дают... адекватным.

> Скажи, любезный, накой хрен тебе сдался это клипборд ?
я бы поставил вопрос иначе - на кой хрен ему сдалось это программирование?


 
Dimka Maslov ©   (2012-01-12 10:22) [37]


> Pcrepair ©   (11.01.12 23:52) [32]


Не надо путать стоимость рабочего времени и зарплату работников. Ты ещё и в экономике не шаришь, а не только в математике и программировании. Практический совет тебе дали неоднократно. Но раз в тебе мы видим редкостный случай незнания, глупости, нахальности, упоротости, неуважения и нежелания что-либо понять. Почему же мы должны тратить своё время на то, что за тебя написать программу? Программирование - это не тырение чужого кода, а разработка своего. Не можешь программировать - не программируй.



Страницы: 1 вся ветка

Текущий архив: 2012.05.13;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.006 c
15-1325924494
Karabaz
2012-01-07 12:21
2012.05.13
TreeView многостолбцовый ищу


15-1325282449
Германн
2011-12-31 02:00
2012.05.13
Чем приклеить металл к мрамору?


15-1325881802
Юрий
2012-01-07 00:30
2012.05.13
С днем рождения ! 7 января 2012 суббота


2-1326376310
Cobalt
2012-01-12 17:51
2012.05.13
Delphi 2010 - размер exe при компиляции с bpl


2-1325080645
Alex_C
2011-12-28 17:57
2012.05.13
ClientDataSet as memtable - тормозит при добавлении записей