在DWScript中设置入口点

时间:2013-02-27 23:35:49

标签: delphi dwscript

有没有办法在DWScript中设置入口点?

例如,如果我开始执行脚本,我希望它执行一个过程Main,而不是常规入口点中的代码(begin ... end。)。

我知道可以从Delphi执行函数,但我不确定这是完全相同的。

2 个答案:

答案 0 :(得分:2)

除了编写你的procedure Main();,然后让你的常规脚本入口点除了调用Main之外什么也没有,这可能不是你想的,不,没有办法做到这一点在DWS。

对于语法上的所有创新,DWS仍然是Pascal,它仍然像Pascal一样工作。要求某种命名的Main例程将与Pascal风格完全不同。

编辑:回答评论中发表的澄清:

如果您希望脚本生成新的脚本线程,则必须在外部Delphi代码中处理它。在撰写本文时,DWS系统没有内置多线程的任何概念。如果你想这样做,你会做这样的事情:

创建一个名为SpawnThread(EntryPoint: string)的外部例程。它的eval方法(在Native-Delphi-land中)会产生一个新的线程来加载当前脚本,然后找到具有指定名称的例程并执行它。

这是关于在没有语言级别支持的情况下让它工作的唯一方法。如果您想要一种从DWS中生成线程的方法,请尝试将其作为功能请求添加到the issue tracker

答案 1 :(得分:2)

直接调用函数在

中显示

https://code.google.com/p/dwscript/wiki/FirstSteps#Functions

如果你想在不同的线程中执行一个函数,你需要一些Delphi端代码来创建一个新的线程,一个新的执行,然后调用你的函数。然后主要和线程执行将相互沙箱化(因此无法共享共享全局变量等)。

如果你需要在线程之间共享数据,你可以通过公开函数或外部变量来做到这一点,这些函数或外部变量会调用Delphi代码并使用适当的同步和锁定(什么是“正确的”取决于你的代码)我想这样做,就像在多线程中一样......)。

请注意,可以在脚本执行之间传递对象,接口和动态数组(假设它们是同一程序的执行),但就像使用常规代码一样,您必须使用锁,关键部分或互斥锁。明确。

相关问题