#delphi #pascalscript
#delphi #pascalscript
Вопрос:
Я включил движок PascalScript в свое программное обеспечение. Теперь мой пользователь хочет написать целый набор скриптов для этого движка и хотел бы знать, возможно ли включить другие скрипты с помощью команды include
or uses
.
Что он хочет сделать, так это написать один скрипт, который содержит все виды констант / переменных, и другой, который выполняет логику. В конце он хочет включить константы в свой логический скрипт.
Я надеюсь, что это было достаточно ясно для понимания.
Комментарии:
1. JVCL JvInterpreter позволяет вам использовать другие модули и может считывать их из файлов, попробуйте вместо этого, если это лучше соответствует вашим потребностям.
2. Спасибо за вашу подсказку, Уоррен. Я нашел решение для скрипта pascal, см. Ниже
Ответ №1:
Я выяснил, вот как с этим поступить: свойству UsePreprocessor компилятора PascalScript необходимо присвоить значение true. Если это так, теперь вы можете использовать следующую команду препроцессора:
{$I filename.txt }
Также вам необходимо реализовать событие OnNeedFile компилятора чем-то вроде следующего примера, который я нашел в сети:
function TForm1.ceNeedFile(Sender: TObject; const OrginFileName: String;
var FileName, Output: String): Boolean;
var
path: string;
f: TFileStream;
begin
Path := ExtractFilePath(ParamStr(0)) FileName;
try
F := TFileStream.Create(Path, fmOpenRead or fmShareDenyWrite);
except
Result := false;
exit;
end;
try
SetLength(Output, f.Size);
f.Read(Output[1], Length(Output));
finally
f.Free;
end;
Result := True;
end;
Ответ №2:
(Пожалуйста, исправьте заголовок вашего вопроса)
Я не совсем уверен, но afaik Pascalscript не имеет понятия «файл». Вы могли бы просто объединить обе части перед передачей их интерпретатору, или заставить небольшой препроцессор искать инструкции {$ I } include и искать код для вставки.
Ответ №3:
Если вы установите для условного определения значение PS_USESSUPPORT
и в OnFindUnknownFile
случае вам придется загружать содержимое pas-файла в выходную строку.
Затем вы можете использовать «Использует XYZ;».