Delphi Web Script: доступ к переменной после выполнения скрипта - PullRequest
2 голосов
/ 18 мая 2011

Представьте себе этот сценарий:

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;

Я получаю ошибку при доступе к "s" из MyProc. Я предполагаю, что сборщик мусора в DWS уже освободил список строк. Это правильно? Могу ли я сделать что-нибудь, чтобы сохранить «с» в живых?

1 Ответ

2 голосов
/ 19 мая 2011

Эта переменная не должна очищаться перед вызовом EndProgram.

Одна вещь, которая может объяснить вашу проблему, если ваш скрипт не компилировался без ошибок, во-первых (проверьте Program.Msgs, тогда он должен содержать ошибки).

...