看谁能解决“小儿科”问题??

ljw 2000-04-23 06:27:00
现在
从数据库中读出变量A的计算方法是:‘Inttostr(B)’
那么:如何实现A变量得到Inttostr(b)的值而不是‘Inttostr(b)’字符串呢??????请各位赐教。(有点类似FOXPRO中的"&"宏代换功能的)
...全文
321 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hibin 2000-06-13
  • 打赏
  • 举报
回复
有趣的问题,好象只有FoxPro程序员用此方法。
nationphone 2000-06-13
  • 打赏
  • 举报
回复
看来好象没人真正解决你的问题,你说的应该是如何解释执行"int B=100;A=IntToStr(B);"这个语句,一般只在解释型语言里有这种功能函数,如javascript的eval()。
因为解释器总随程序一块执行,所以可以实现这种功能,编译型的语言就不行了。我觉得你还是应该写一个表达式解释器之类的,写一个不是很难,用算符优先分析或递归下降分析都可以,编译原理上都有现成的算法可供参考。
另外,SQL是解释执行的,所以rollback提出的算是一种途径,不过它似乎未看明白你的问题,你应该参考一下SQL,看是否有类似的函数。
如果你愿意,还有一种办法,微软提供了免费的脚本支持控件,可以解释执行javascript和vbscript,这好象有点扯远了。
wdh 2000-06-10
  • 打赏
  • 举报
回复
我的方法和linkie有些类似。建立一个二维数组,一列存放算法字符串,一列存放函数指针,通过字符串匹配来确定要使用的函数指针,再用函数指针来对数据进行处理。次方法
的缺点是函数的参数必须是确定的,而且方法集合是有限的
fyje 2000-06-10
  • 打赏
  • 举报
回复
我也遇见过此类问题,没找到十分好用的解决方法.可能用了数组的方法处理的.
hony 2000-06-10
  • 打赏
  • 举报
回复
用fieldbyname['b'].asinteger,或者用fieldvalues['b'],我建议用后者,delphi会自动识别数据类型.
linkie 2000-05-26
  • 打赏
  • 举报
回复
我的看法和jll老兄是一样的。采用枚举的办法,来解释从数据库里读到的变量 A 的算法表达式,然后逐一进行解决。我想这一办法应该是最直接、最有效的。当然这个办法只适用于变量 A 的算法有限甚至是以知的,这是它的局限性。
rollback 2000-04-29
  • 打赏
  • 举报
回复
有一个“曲线”解决办法
var
A:string;
B:integer;
begin
B:=100;
//在'inttostr(B)'中找到B,用值替换
。。。。
A:='inttostr('+inttostr(B)+')';
sqlcmd('select "'+A+'" ');//sql语句就是一字符串
sqlopen;
....
sqldata(0);
.......

这个方法肯定可以,不过太笨

rollback 2000-04-29
  • 打赏
  • 举报
回复
有一个“曲线”解决办法
var
A:string;
B:integer;
begin
B:=100;
//在'inttostr(B)'中找到B,用值替换
。。。。
A:='inttostr('+inttostr(B)+')';
sqlcmd('select "'+A+'" ');
sqlopen;
....
sqldata(0);
.......

这个方法肯定可以,不过太笨

liujh_ty 2000-04-29
  • 打赏
  • 举报
回复
?
Lin 2000-04-29
  • 打赏
  • 举报
回复
我有一个建议:首先读出变量字符串,然后用GetProcAddress得到其地址...不过我还没有试过。
蝈蝈俊 2000-04-24
  • 打赏
  • 举报
回复
a := table1.fieldbyname('aa').asstring;
用 ss :=copy(a,10,lenght(a)-10)
dd := inttostr(ss);
哈哈哈哈哈哈,肯定可以了。
ljw 2000-04-24
  • 打赏
  • 举报
回复
数据库中的是文本类型的,读出来的是字符串,我要得到的也是字符类型的,
例如:
B=100;求变量A:的值?
我于是从数据库中读出变量A的计算方法是:“INTTOSTR(B)”那么如何求A??
当然我是举个例子来说明我的问题,没有专门针对这个函数,总之知道A的算法(算法是
读出的一段字符串),如何求A值???
(可不可以不做语法解释器)
thinking_man 2000-04-24
  • 打赏
  • 举报
回复
variant数值类型可以任意附值,不知有没有用?
你在数据库中的变量是什么类型?你需要得到什么类型?
你的问题太含糊了。
jll 2000-04-23
  • 打赏
  • 举报
回复
自己定义一个常量
const
Test="IntToStr(B)";
然后if读出的内容=Test,就……
不知道行不行
江王 2000-04-23
  • 打赏
  • 举报
回复
还是自己来写一个象公式解释器之类的东西吧。Delphi中没有宏代换的概念。
ljw 2000-04-23
  • 打赏
  • 举报
回复
大哥我从数据库中读出的只是变量A的算法:“Inttostr(B)”
这个“算法”是个字符串呀??
我如何根据这个算法得到“Inttostr(B)”的值??
类似FOXPRO中的“&”宏代换功能的。
蝈蝈俊 2000-04-23
  • 打赏
  • 举报
回复
int a
a := inttostr(b);
从数据库中读出变量A
a := table1.fieldbyname('aa').asinteger;
搞不懂您要干嘛???

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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