Форум: "Начинающим";
Текущий архив: 2012.05.13;
Скачать: [xml.tar.bz2];
ВнизКомпонент 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;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.005 c