我需要修改我的Pascal腳本代碼中的函數參數變量(字符串),並在腳本完成工作後將其獲取到Delphi函數中。帕斯卡爾腳本,如何將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;
該解決方案是錯誤的,我得到了在線路錯誤「結果:= Exec.RunProc(ParamList,ProcNo);「。
「Project mcserv.exe引發異常類$ C0000005,消息'0x00a56823訪問衝突:讀取地址0x0000000d'。」。
我該怎麼做?
*出錯*完全沒用,除非你告訴我們你得到了什麼錯誤。什麼是你正在得到的**精確**錯誤信息? –
對不起。肯。錯誤文本:「項目mcserv.exe引發異常類$ C0000005與消息'訪問衝突在0x00a56823:讀取地址0x0000000d'」。 – HobitZlobny
我從來沒有使用Pascal腳本,但我可以看到Exec尚未初始化。嘗試執行:= tPSExec.Create; –