Чтобы вызвать подпрограмму, вам нужно использовать метод Run вместо Eval. См. этот документ для получения дополнительной информации.
Вы правы, говоря, что "конструкторы - это разные методы", но в этом случае вы на самом деле просто возвращаете вновь созданное значение, не так ли? И поэтому я ожидаю, что все еще смогу использовать Eval ().
У меня работает следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
ScriptControl: Variant;
Value: Variant;
begin
ScriptControl := CreateOleObject('ScriptControl');
ScriptControl.SitehWnd := Handle;
ScriptControl.Language := 'JScript';
Value := ScriptControl.Eval('new Date();');
ShowMessage(VarToStr(Value));
end;
Когда я нажимаю кнопку, мое ShowMessage появляется с «Ср 16 сентября 23:37:14 TC + 0200 2009».
И поэтому для возврата значения из конструктора вы можете использовать Eval ().