fsScript1.Clear
fsScript1.Clear; // надо очищать компонент, если он используется для запуска нескольких скриптов
Вот что написано в документации , а то что при этом удаляются обьекты , их надо постоянно переописывать ???
Вот что написано в документации , а то что при этом удаляются обьекты , их надо постоянно переописывать ???
Комментарии
fsScript.Parent := fsGlobalUnit;
fsScript.AddForm(Self);
Существует два неких события:
1 - Вызов на исполнение
2 - Вызов оболочки в которой производиться написание и компиляция скрипта
Поэтому добавление объектов происходит один раз.
При вызове на исполнение - код:
procedure aExecuteExecute(Sender: TObject);
var
FileStream: TFileStream;
begin
inherited;
fsScript.Clear;
FileStream:= TFileStream.Create('c:\1.pfe', fmOpenRead);
if not fsScript.SetILCode(FileStream) then
ShowMessage(fsScript.ErrorMsg);
FileStream.Free;
fsScript.Execute;
end;
При вызове метода Clear убиваются и все объекты описанные при создании,
очищать как то только то , что было загруженно можно ?
Вопрос , как много пямяти съедает TfsScipt один объект ?
А перед каждым выполнением скрипта удаляю все объекты начиная с конца до
objCount = fsScript.Items.Count. Это порой быстрее чем добавлять свои элементы заново.
initialization
FsCustomScript := TfsScript.Create(nil);
finalization
FsCustomScript.Free;
потом у себя держу свой объект со своими новыми параметрами и обьектами и вызываю так
procedure aExecuteExecute(Sender: TObject);
var
FileStream: TFileStream;
begin
inherited;
AppDisable;
try
FsCustomScript.Clear;
FileStream:= TFileStream.Create(ExtractFilePath(ParamStr(0)) +
'\ExDoc.pfe', fmOpenRead);
FsCustomScript.Parent := fsScript;
if not FsCustomScript.SetILCode(FileStream) then
ShowMessage(FsCustomScript.ErrorMsg);
FileStream.Free;
FsCustomScript.Execute;
finally
AppEnable;
end;
end; {End aExecuteExecute}