谁用过RemObjects Pascal Script控件来做通过脚本自定义公式解析的功能呀!(200)

  • 主题发起人 主题发起人 verystronger
  • 开始时间 开始时间
V

verystronger

Unregistered / Unconfirmed
GUEST, unregistred user!
这个控件只提供了导入VCL包里有限的资源,如何完成在脚本里对数据库的操作呀有做过相关功能的高手请赐教,不胜感激!
 
TPaxScript比这个好用,网上还有带源码的。举例: PaxScripter1.ResetScripter; PaxScripter1.RegisterObject('form1', self); //=======注册控件 PaxScripter1.AddModule('1', 'paxPascal'); PaxScripter1.AddCode('1','...'); //===添加代码 PaxScripter1.Run(); //======执行脚本脚本里操作form1.adoquery1就可以了。---此例需要uses IMP_DB,IMP_ADODB。(由borland的DB,ADODB转换,用PaxScript的import工具)
 
下载不到呀,好像还是收费的,Texense能给一份吗?
 
www.delphifans.com上下个Paxscrip2.8的版本,3.0有问题
 
网上搜一下肯定有。tkggai:请问3.0有什么问题?
 
恩谢谢两位了,该控件果然功能强大,正是我需要的。
 
用PaxScript的import工具转换ADODB.Pas后引用IMP_ADODB运行程序提示“Project DbParam.exe raised exception class TPAXScriptFailure with message ') expected.'. Process stopped. Use Step or Run to continue.”错误把IMP_ADODB注释掉就不报错了,问题出在IMP_ADODB文件上呀怎么回事?以下是源码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ADODB, PaxScripter, PaxPascal; type TForm1 = class(TForm) procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private AdoConn: TADOConnection; AdoQry : TADOQuery; DBName, TableName: string; Scripter: TPaxScripter; Language: TPaxPascal; public { Public declarations } end;var Form1: TForm1;implementationuses IMP_SysUtils, IMP_Classes, IMP_StdCtrls, IMP_Controls, IMP_Forms, IMP_Graphics, IMP_Db, IMP_ADODB;procedure TForm1.Button1Click(Sender: TObject);begin TableName := 'aaa'; DBName := 'bbb'; Scripter := TPaxScripter.Create(nil); Language := TPaxPascal.Create(nil); try Scripter.RegisterLanguage(Language); Scripter.RegisterObject('Form1', Form1); Scripter.RegisterObject('AdoConn', AdoConn); Scripter.RegisterObject('AdoQry', AdoQry); Scripter.RegisterVariable('TableName', 'String', @TableName); Scripter.RegisterVariable('DBName', 'String', @DBName); Scripter.AddModule('1', Language.LanguageName); Scripter.AddCode('1', 'uses SysUtils, Classes, StdCtrls, Controls, Forms, Graphics, DB, ADODB;'); Scripter.AddCode('1','Form1.Memo1.Lines.Add(DBName+TableName);'); Scripter.Compile; Scripter.Run; if Scripter.IsError then raise Exception.create(Scripter.ErrorDescription); finally FreeAndNil(Language); FreeAndNil(Scripter); end;end;procedure TForm1.FormCreate(Sender: TObject);begin AdoConn := TADOConnection.Create(Self); AdoQry := TADOQuery.Create(Self);end;procedure TForm1.FormDestroy(Sender: TObject);begin AdoConn.Free; AdoQry.Free;end;end.
 
我跟踪了用PaxScript的import工具转换VCL里的ADODB.Pas后的IMP_ADODB文件发现问题出在初始化时注册ADO的Requery方法的语句有问题: RegisterMethod(TCustomADODataSet, 'procedure Requery(Options: TExecuteOptions = []);', @TCustomADODataSet.Requery); 那一对“[]”没编译过去.
 
没遇到过这问题,不过我转换的window也编译不了,脚本里用不了messagebox。
 
这个控件对支持数据库访问还是有局限的数据库对象不能在脚本中使用自己的方法。
 
数据库对象不能在脚本中使用自己的方法?form1.adoquery1.open;form1.adoquery1.first;如果是指这个没问题哦
 
谢谢Texense!恩,是呀! form1.adoquery1.open;还可以用form1.adoquery1.Active := True;替换。form1.adoquery1.first;form1.adoquery1.Eof等都不行。这个控件是把ADO的属性和方法全部注册了,一些从基类继承来的方法没有注册所以用不了。另外怎么结束帖子送分呀我给分了结果帖子还在。
 
忘了问了,Texense能留下你的联系方式吗?该控件还有许多问题: Scripter.AddCode('1','Function GetValue(ASQL: string): Integer; '+ 'Var AdoQry1 : TADOQuery; '+ 'Begin '+ 'Result := 1; '+ 'AdoQry1 := TADOQuery.Create(nil); '+ 'AdoQry1.Connection := AdoConn; '+ 'AdoQry1.Close; '+ 'AdoQry1.SQL.Text := ASQL; '+ 'AdoQry1.Open; '+ 'AdoQry1.First; '+ 'Result := AdoQry1.Fields[0].AsInteger; '+ 'AdoQry1.Free; '+ 'End;'); Scripter.AddCode('1','Function GetSumValue(ASQL): Integer; '+ 'Begin '+ 'Result := GetValue(ASQL) + GetValue(ASQL); '+ 'End;');//当遇到公式表达式重复调用程序就会报错。把'Result := AdoQry1.Fields[0].AsInteger; '+ 该句屏蔽,就不报错了。
 
我对PaxScript只是初步了解,还没有应用,不一定能帮你更多。另外form1.adoquery1.first;form1.adoquery1.Eof我的电脑没问题,引用的单元也一样,不知道问题所在,你换一台电脑试一下如何?脚本中的函数还没有用过。woogle168@sina.com互相学习!
 
后退
顶部