このスクリプトを想像してみてください。
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」を存続させるために何かできることはありますか?