Мне нужно сделать интерактивную программу, содержащую веб-страницы, проект почти закончил но возникли непредвиденные трудности и напоролся на такую неприятность, что мне нужно из программы возвращать 2 параметра, но все по порядку:
Есть такая демка:
http://www.bsalsa.com/ewb_on_get_ext.html (там внизу ссылка на демку)
все работает прекрасно, можно сразу скомпилить на делфях старше 2009 версии, также можно старый tlb конвертнуть в новый ridl, с помощью tlibimp.exe (лежит в папке bin делфей), в общем все прекрасно пашет, только вот пытаюсь сделать так:
<SCRIPT type="text/javascript">
<!--
function ttt(){
w=k+'tetet';
}
function Get_Test2(){
j='0';
k='1';
w='3';
w=external.get_test2(j, k);
// window.external.ttt(k, w, j);
alert(w);
}
-->
</script>
проблема в том что алерт упрямо пишет мне "3",
привожу код диспетча:
function TTBrowserToDelphi.ttt(var k, w, l: OleVariant): OleVariant;
begin
k:='gg';
l:=k+'_test';
w:=l+'_setup';
Result:=S_OK;
end;
тоесть алерт должен бы ответить "3_setup"
привожу код ridl (это новый формат tlb):
// ************************************************************************ //
// WARNING
// -------
// This file is generated by the Type Library importer or Type Libary Editor.
// Barring syntax errors, the Editor will parse modifications made to the file.
// However, when applying changes via the Editor this file will be regenerated
// and comments or formatting changes will be lost.
// ************************************************************************ //
// File generated on 03.05.2011 13:28:14 (- $Rev: 12980 $, 939240975).
[
uuid(2CE64F20-D4B0-11D3-9CA6-444553540000),
version(1.0),
helpstring("example Library")
]
library example
{
importlib("stdole2.tlb");
interface ITBrowserToDelphi;
coclass TBrowserToDelphi;
[
uuid(2CE64F21-D4B0-11D3-9CA6-444553540000),
version(1.0),
helpstring("Dispatch interface for TBrowserToDelphi Object"),
dual,
oleautomation
]
interface ITBrowserToDelphi: IDispatch
{
[propget, id(0x00000001)]
HRESULT _stdcall GetNumber([out, retval] VARIANT* Value);
[propget, id(0x00000002)]
HRESULT _stdcall GetName([out, retval] VARIANT* Value);
[propput, id(0x00000003)]
HRESULT _stdcall SetString([in] VARIANT Param1);
[propput, id(0x00000004)]
HRESULT _stdcall NewProgressValue([in] VARIANT Param1);
[id(0x00000005)]
HRESULT _stdcall ShowSpecialDialogBox([out, retval] VARIANT* Value);
[id(0x000000C9)]
HRESULT _stdcall get_test([in, out] VARIANT* l, [in, out] VARIANT* o);
[id(0x000000CA)]
HRESULT _stdcall test([out, retval] VARIANT* value);
[propget, id(0x000000CB)]
HRESULT _stdcall test2([out, retval] VARIANT* Value);
[id(0x000000CC)]
HRESULT _stdcall ttt([in, out] VARIANT* k, [in, out] VARIANT* w, [in, out] VARIANT* l, [out, retval] VARIANT* Param4); // <- как я тут только не плясал...
};
[
uuid(2CE64F23-D4B0-11D3-9CA6-444553540000),
version(1.0),
helpstring("TBrowserToDelphi Object")
]
coclass TBrowserToDelphi
{
[default] interface ITBrowserToDelphi;
};
};
в общем никак не получается сделать параметры out-тами, запускаю, все выполняется без проблем, но вот переменная w в вебе упрямо не изменяется, помогите пожалуйста, 3 день долблюсь над проблемой ((
спасибо!