내 파스칼 스크립트 코드에서 함수 매개 변수 variable (string)을 수정하고 스크립트가 작업을 마친 후에 델파이 함수에서 가져와야합니다. 파스칼 스크립트, 어떻게 내 델파이 코드로 스크립트에서 var 매개 변수를 반환할까요?
내 스크립트 코드 :function OnBroadcastMessage(iCID, iUIN: integer; var sUsersList: string; dtActualTo: double; bMustRead, bReadNotify: boolean; sMsg: string): boolean;
begin
sUsersList := '3';
result := true;
end;
begin
end.
내 델파이 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;
이 솔루션은 잘못했다, 내가 줄에서 오류 "를 가지고있어 결과 : = Exec.RunProc (ParamList, ProcNo); ".
"mcserv.exe 프로젝트에서 예외 클래스 $ C0000005가 발생하여 '액세스 위반이 0x00a56823 : 0x0000000d 읽기'."라는 메시지가 나타납니다. "
내가 뭘 잘못 했니?
* 오류가 발생하면 어떤 오류가 발생하는지 알려주지 않으면 오류가 있습니다. ** 정확한 ** 오류 메시지는 무엇입니까 ?? –
죄송합니다. 시야. 오류 텍스트 : "프로젝트 mcserv.exe가 예외 클래스 $ C0000005를 발생 시켰습니다. '0x00a56823의 액세스 위반 : 0x0000000d 주소 읽기' '라는 메시지가 나타납니다." – HobitZlobny
저는 파스칼 스크립트를 한번도 사용하지 못했지만, Exec이 초기화되지 않았 음을 알 수 있습니다. Exec을 시도하십시오 : = tPSExec.Create; –