Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > распознавалка JavaScript


Автор: ___Felix___ 13.10.2007, 10:08
Здрасть, таварисчи программисты. У меня такая проблема.
Есть JavaScript'овый код, который, что-то выводит на страницу, например:

Код

document.write('<b>');
if(x == 1)
{
    document.write('Hello!');
}
else
{
    document.write('Goodbye!');
}


Есть ли какие-нить примбамбасы (компоненты, алгоритмы и тд) на Делфях (хотя необязательно) чтобы я получил "<b>Hello!</b>" или "<b>Goodbye!</b>". Вообщем чтобы провернуть скрипт и получить то, что выведется на страницу. Написал бы сам поиск строк "document.write", но если задуматься - придется писать полный интерпритатор. smile 

Автор: Mr.Floppy 13.10.2007, 12:15
Код
uses SHDocVw_TLB, MSHTML_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
  HTMLString: string;
begin
  HTMLString := '<script>' +
         'document.write(''<b>'');' +
         'x = 1;' +
         'if(x == 1)' +
         '{' +
         '    document.write(''Hello!'');' +
         '}' +
         'else' +
         '{' +
          '    document.write(''Goodbye!'');' +
         '}' +
         '</script>';
  WebBrowser1.Navigate('about:' + HTMLString);
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  Memo1.Text := OleVariant(pDisp).Document.Body.OuterHTML; //с тегами
  Memo1.Text := OleVariant(pDisp).Document.Body.InnerText; //просто текст
end;


Может быть можно и без TWebBrowser обойтись, но все равно через OLE.

Автор: ___Felix___ 13.10.2007, 14:10
Огромное спасиб!
Не знал, очень помогло! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)