怎样动态加入代码!? ( 积分: 100 )

  • 主题发起人 主题发起人 k4-1
  • 开始时间 开始时间
K

k4-1

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样动态从文本文件加入代码到指定的事件中!?
 
怎样动态从文本文件加入代码到指定的事件中!?
 
像类似于SQL 语句、表达式等作为字符串传进去可以,其它的就不好办了!
 
脚本
fastscript即可
 
這個實現起來就有些麻煩哦。關注中。
 
如果文本文件是以變量的方式傳給就可以。
{=================================================================
功 能: 獲取INI文件數據
參 數: header:數據頭 FileName:文件名 FileHeader:體頭
返回值: 字符
=================================================================}
Function GetIniFile(header, FileName, FileHeader: String): String;
var
ServerName: String;
ServerIni:TinIfile;
Begin
Result:='';
If Not FileExists(ExtractFilePath(ParamStr(0)) +'/UserIni/'+ FileName) Then Exit;
ServerIni := TInIfile.Create(ExtractFilePath(ParamStr(0)) +'/UserIni/'+ FileName);
ServerName := ServerIni.ReadString(FileHeader, header, '');

ServerIni.Free;
Result := ServerName;
end;
如果要將文本文件以不同的事物處理方法加入就不行,因為運行時與設計時不同的。
 
用这个:
http://www.2ccc.com/article.asp?articleid=2866
RemObjects Pascal Script 3 是一款免费的用Delphi编写的脚本引擎,允许你在程序运行时使用Object Pascal语言,是一套能够编译到exe文件的单元,使用脚本引擎的好处:能够让你的程序让用户的自定义而不需要重新编译,你能够发布升级程序只需要发布脚本文件即可。

支持变量,常量;标准语言结构包括:Begin/End、If/Then/Else、For/To/Downto/Do、Case x Of、Repeat/Until、While、uses、Exit、Continue、Break;函数支持;标准类型:Byte, Shortint, Char, Word, SmallInt, Cardinal, Longint, Integer, String, Real, Double, Single, Extended, Boolean, Array, Record, Enumerations, Variant, IUnknown, IDispatch (dynamic invoke)。
 
说白了是要你的程序能完成编译执行的功能...
 
楼上说的对!
我们运行的程序是经过编译这个过程的,要直接执行其它代码是不可能的,除非在你的程序里加入编译引擎,把这些代码编译了再调用。
如果不是特别需要,还是使用插件的好。
 
还是使用插件的好
 
看看传奇server里的script,我感觉还是能实现的,这就要你自己的一套解释规则对自定义的script进行解释,script可以随时更改。
 
终极的解决办法就是内嵌一个pascal编译器,如果每次启动发现有脚本待编译,就重新编译。
折衷的解决办法就是发布时同时带一个pascal编译器,把所有的事件都放到dll中实现,主程序负责重编译dll.
最笨的解决办法当然就是脚本了。
 
后退
顶部