首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

这段程序报错,哪位高手能帮小弟我看上,多谢

2012-11-07 
这段程序报错,谁能帮我看下,谢谢function XinKaiPuDll_GetPIDInfo(A_pInfo: PXinKaiPuDllPIDInfoArrvar A

这段程序报错,谁能帮我看下,谢谢
function XinKaiPuDll_GetPIDInfo(A_pInfo: PXinKaiPuDllPIDInfoArr;
  var A_sRstMsg: String): Boolean;
var
  iRst1,i,iCount: Integer;
  pInfo: PXinKaiPuDllPIDInfo;
begin
  Result := False;
  iRst1 := -1;
  New(pInfo);
  FillChar(pInfo^,SizeOf(pInfo^),#0);
  iRst1 := XinKaiPuDll_CapGetAllSFdetail(pInfo);
  if iRst1 > 0 then
  begin
  iCount := iRst1;
  SetLength(A_pInfo^,iCount);
  for i := 0 to iRst1 - 1 do
  begin
  A_pInfo^[i].PID := pInfo^.PID;
  StrCopy(A_pInfo^[i].PName,PChar(Trim(pInfo^.PName)));
  Inc(pInfo);
  end;
  Result := True;
  end
  else
  begin
  A_sRstMsg := XinKaiPuDll_ErrorMsg(iRst1);
  end;
  Dispose(pInfo); //执行到这里,释放指针时报‘invalid pointer operation’end;





[解决办法]
....
iRst1 := XinKaiPuDll_CapGetAllSFdetail(pInfo);
....
检查iRst1的值,若<1 ,到函数XinKaiPuDll_CapGetAllSFdetail中去跟。
[解决办法]
由于你inc(pinfo);导致pinfo移位,所以报错
[解决办法]
指针的值都变了,你还dispose啊。。


[解决办法]
将pinfo赋值给另一个指针,然后用那个指针操作。永远记住:new()的指针不能直接操作!

热点排行