Представьте себе этот сценарий:
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 уже освободил список строк. Это правильно? Могу ли я сделать что-нибудь, чтобы сохранить «с» в живых?