如何在delphi实现javascript中eval函数的功能?

sunroger 2002-11-12 09:45:41
在javascript中eval函数可以分析字符串,并将其作为javascript语句进行执行,
如执行eval("button1.value='abc'")就相当于执行button1.value='abc'
那么,请问在delphi中有没有类似的函数,可以分析该字符串,并将其作为delphi的语句进行执行?
如果有知道的朋友,请跟贴,或者mail给我roger@edge-china.com,或者请到http://www.YouthFly.com论坛中的delphi论坛里帮助回答,十分感谢!!!
...全文
310 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2002-11-18
  • 打赏
  • 举报
回复
//再仔细看一会儿,才明白~~

//from
http://zswang.51.net/function/zsfunc0g.htm

(*//
标题:处理窗体代码
说明:既dfm格式;本函数来源于Delphi帮助
设计:Zswang
日期:2002-01-25
支持:wjhu111@21cn.com
//*)

///////Begin Source
function ComponentToString(Component: TComponent): string;
var
BinStream: TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result := StrStream.DataString;
finally
StrStream.Free;
end;
finally
BinStream.Free
end;
end; { ComponentToString }

function StringToComponent(Value: string; Instance: TComponent): TComponent;
//如果元件是嵌套形式则必须注册子元件类
//参考RegisterClasses();UnRegisterClasses()
var
StrStream: TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(Instance);
finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end; { StringToComponent }
///////End Source

///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := ComponentToString(Edit1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
StringToComponent(Memo1.Text, Edit1);
end;
///////End Demo

王集鹄 2002-11-18
  • 打赏
  • 举报
回复
uses ComObj; //不要忘记她~~
王集鹄 2002-11-18
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
vScriptControl: OLEVariant;
begin
try
vScriptControl := CreateOleObject('MSScriptControl.ScriptControl');
vScriptControl.Language := 'VBScript';
ShowMessage(vScriptControl.Eval(Edit1.Text));
except
ShowMessage('不关伴水的事!');
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit.Text := '1+1'; //简单又好记~~
end;
ahuige 2002-11-18
  • 打赏
  • 举报
回复
我倒是写了个分析数学公式字符串的东西。
但是赋值的字符串我不会写
CloneCenter 2002-11-12
  • 打赏
  • 举报
回复
Delphi 好象没有现成的这样的函数,因为 javascript 和 Delphi 的运行机制完全不同,javascript 是一种解释性的脚本语言,所有的运行都是解释翻译运行着的,而 Delphi 是编译型的语言,所有的任务是编译时已经决定的,所以想叫她完成这样的功能,可能不是很容易。

需要自己写代码。
sunroger 2002-11-12
  • 打赏
  • 举报
回复
是啊,那么请问这个代码如何写?能给点建议吗?十分感谢!

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧