TEmbededWB, OnGetExternal, ridl (tlb), как вернуть 2 параметра (как заюзать out параметры)

MMM_Corp
Дата: 03.05.2011 14:36:06
Мне нужно сделать интерактивную программу, содержащую веб-страницы, проект почти закончил но возникли непредвиденные трудности и напоролся на такую неприятность, что мне нужно из программы возвращать 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 день долблюсь над проблемой ((

спасибо!
MMM_Corp
Дата: 03.05.2011 14:40:08
блин жаль что уже написано нельзя поправить, там в веб-коде так должно бить:
function Get_Test3(){
j='0';
k='1';
w='3';
window.external.ttt(k, w, j);
alert(w);
}
MMM_Corp
Дата: 03.05.2011 16:25:09
никто не шарит? 0_о...

я в шоке...
MMM_Corp
Дата: 04.05.2011 02:05:00
ау......
MMM_Corp
Дата: 04.05.2011 15:42:38
вопрос закрыт, разобрался сам, решение: перевод JS на VBSript, как ни странно))), а чтобы выяснить это потратил пару дней методом тыка...