Мне нужно изменить переменную параметра параметра (string) в моем коде сценария Pascal и получить ее в функции Delphi после завершения скрипта.Pascal Script, как вернуть параметр var из сценария в мой код Delphi?
Мой код сценария:
function OnBroadcastMessage(iCID, iUIN: integer; var sUsersList: string; dtActualTo: double; bMustRead, bReadNotify: boolean; sMsg: string): boolean;
begin
sUsersList := '3';
result := true;
end;
begin
end.
Мой Delphi XE3 код (только крошечный пример, без каких-либо проверок):
var
Compiler: TPSPascalCompiler;
Exec: TPSExec;
ProcNo: cardinal;
ParamList: TIfList;
Data: AnsiString;
begin
Compiler := TPSPascalCompiler.Create;
Compiler.Compile(Script)
Compiler.GetOutput(Data);
Compiler.Free;
Exec.LoadData(Data);
ProcNo := Exec.GetProc('OnBroadcastMessage');
ParamList := TIfList.Create;
ParamList.Add(@iCID);
ParamList.Add(@iUIN);
ParamList.Add(@sUsersList);
ParamList.Add(@dtActualTo);
ParamList.Add(@bMustRead);
ParamList.Add(@bReadNotify);
ParamList.Add(@sMsg);
result := Exec.RunProc(ParamList, ProcNo);
FreePIFVariantList(ParamList);
end;
Это решение было неправильным, я получил сообщение об ошибке в строке " result: = Exec.RunProc (ParamList, ProcNo); ".
«Проект mcserv.exe повышен класс исключений $ C0000005 с сообщением« нарушение доступа в 0x00a56823: чтение адреса 0x0000000d ».».
Как я ошибаюсь?
* получил ошибку * совершенно бесполезно, если вы не говорите нам, что ошибка, которую вы получите. Что такое ** точное сообщение об ошибке, которое вы получаете? –
Извините. Кен. Текст ошибки: «Project mcserv.exe поднял класс исключений $ C0000005 с нарушением доступа к сообщению при 0x00a56823: чтение адреса 0x0000000d.». – HobitZlobny
Я никогда не использовал скрипт Pascal, но я вижу, что Exec не был инициализирован. Попробуйте Exec: = tPSExec.Create; –