Ответ 1
Для справки: hgourvest разместил Delphi Chromium Embedded в Google Code.
Редактировать 2013-01-15:
Другой проект того же автора, на этот раз обернувший CEF3: DCEF3
Я хотел бы встроить интерпретатор V8 JavaScript, который поставляется с Google Chrome в моем приложении Delphi. Я знаю, что хром встроенный проект с открытым исходным кодом от Google, но я хотел бы знать, знал ли кто-нибудь о любом Pascal/Обертки Delphi?
Существует пример проекта, включенного в zip файл на связанном мной сайте, который написан на С++. Если ничего другого, я буду медленно и мучительно работать, чтобы преобразовать его.
UPDATE:
Я просто хочу встроить интерпретатор JavaScript V8, а не браузер Chromium.
Для справки: hgourvest разместил Delphi Chromium Embedded в Google Code.
Редактировать 2013-01-15:
Другой проект того же автора, на этот раз обернувший CEF3: DCEF3
Наиболее идеальным решением было бы создание обертки, предпочтительно, которая потребляет исходный источник без изменений, и скомпилировать эту оболочку в OBJ файл (используя С++), который затем связан с Delphi, где другая "обертка" предоставляет механизм через более стандартный синтаксис паскаля объекта. Тогда этот подход позволил бы вносить изменения в движок без необходимости полного преобразования каждый раз при добавлении новой функциональности или дополнительной производительности. Единственным недостатком этого подхода является то, что при навигации по слоям будет потеряна какая-то производительность... но я ожидаю, что она будет минимальной.
Если на самом деле Chrome является браузером, который вы хотите внедрить в свое приложение, вы должны проверить Google Chrome Frame, он раскрывает COM, в первую очередь для интеграции в Internet Explorer, но теоретически мы также должны иметь доступ к ним.
(Я не уверен, потому что я хотел бы пойти на это сам, но это на длинный список очень аккуратных вещей, чтобы попытаться, когда я их обойду.) Обновление. Я быстро перешел к нему, получил ошибку "Без интерфейса" и разместил его здесь.
Если вы используете Prism, прочитайте следующее: http://blogs.remobjects.com/blogs/ck/2010/02/23/p1175. RemObjects создал бесплатный и открытый механизм source, который поддерживает ECMA Script (JavaScript) и PascalScript. Это все код pascal, но это зависит от DotNet (конечно, RemObjects написал его в Prism).
Там V8-оболочка для Python. Может быть интересно посмотреть, как они его сняли.
Здесь есть V8 Swig Script, но заставить Swig работать с Delphi может быть проблемой самостоятельно: http://v8.googlecode.com/issues/attachment?aid=7578402775385555895&name=jav8.i
Вы можете использовать движок JavaScript из FireFox из приложения Delphi с Delphi/Kylix ↔ Bridge SpiderMonkey
Я также использовал мост SpiderMonkey без каких-либо проблем. Работает достаточно быстро, без огромного объема и еще не имеет проблем с Unicode!
Начнем с 1 июня 2016 года. v8delphiwrapper, наград разработчику @zolagiggszhou. И я хотел бы показать вам пример кода:
string
:Memo2.Text := FEngine.eval(Memo1.Text);
1 - Предполагая, что у вас есть класс Delphi:
TJsAccessableClass = class
public
function add(a,b: Double): Double;
function httpEncode(const s: string): string;
end;
2 - Вы регистрируете его с помощью двигателя v8 js:
FObjectTemplate2 := FEngine.RegisterRttiClass(TJsAccessableClass);
FJsAccessableObject := FObjectTemplate2.CreateInstance(TJsAccessableClass.Create);
Fv8GlobalObject.SetObject('delphiObj', FJsAccessableObject);
3 - Теперь вы можете вызвать свой метод Delphi из js:
var s = delphiObj.httpEncode('/~!f234');
Очень круто! Еще один пример: проект образца v8delphiwrapper