【问题标题】:Delphi Web Script: Accessing a Variable after the Script is ExecutedDelphi Web Script:在脚本执行后访问变量
【发布时间】:2011-05-18 14:52:55
【问题描述】:

想象一下这个脚本:

var s = TStrings.Create;
s.Add('Line 1');
s.Add('Line 2');

procedure MyProc;
begin
  if s.count = 2 then
  // ...
end;

当脚本运行时,它会创建变量“s”。现在我想在脚本完成后调用“MyProc”:

...
Exec := Program.CreateNewExecution;
Exec.BeginProgram;
Exec.RunProgram(0);
if Exec.ProgramState in [psRunning, psRunningStopped] then
begin
  Func := Exec.Info.Func['MyProc']; 
  Func.Call([]);
  Exec.EndProgram; 
end;

我从 MyProc 访问“s”时出错。我假设 DWS 的垃圾收集器已经释放了字符串列表。这是正确的吗?我可以做些什么来让“s”活着吗?

【问题讨论】:

    标签: delphi dwscript


    【解决方案1】:

    在调用 EndProgram 之前不应清理该变量。

    可以解释您的问题的一件事是,如果您的脚本一开始就没有错误地编译(检查 Program.Msgs,它应该包含错误)。

    【讨论】:

    • FWIW 您的示例代码已逐字添加到单元测试中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多