Q&A

  • 서버 호출이 안되는데... 무슨 문제인지 모르겠어요.
<!--CodeS-->
procedure TfrmTraceRouter.BitBtn1Click(Sender: TObject);
var
  nRet : Integer;
  rst  : TResult;
  arr : TArray;
  ii : Integer;
  sLocalIp : String;
  FCaller: TCaller;
  FFunc : TFunction;
  nResult : Integer;
  arrCount,nCount : Integer;
  sString,sData : String;
  RecICMPTraceRT_TBL: TICMPTRACERT_TBL;
  sRecICMPTraceRT_TBL : String;
  Dest : Pchar;

begin


  if not MessageYNForm('시작하시겠습니까?','알림') then
  begin
    Exit;
  end;

  FFunc := TFunction.Create;
  FCaller := TCaller.Create;

  FCaller.HostName := HOST_IP;
  FCaller.HostPort := HOST_PORT;
  FCaller.EndPoint := '/RPC2';

  FFunc.Clear;
  FFunc.ObjectMethod := 'Consoled.startTraceRoute';
  FFunc.AddParam(Edit1.Text);

try
    rst := FCaller.Execute(FFunc);        <<이부분에서 오류남
    if rst.IsError then
     except
  end;
end;
<!--CodeE-->
위의 오류난 부분에 디버그를 걸고 스텝오버를 시켰는데 rst에 오류메세지가
"format string requests 2 items from array, but array has only 1 items" 이런게 뜨는데요
Edit1.Text가 szTargetIp 이고요. 구조체가 이겁니다.
<!--CodeS-->
type
  TICMPTRACERT_TBL = record    
    iPid : Integer;
    lHwnd : longint;
    iResultIdx : integer;                
    szStartIp : array[0..15] of char;
    szStartName : array[0..20] of char;
    szTargetIp : array[0..15] of char;
    szTargetName : array[0..20] of char;
    fRespTimeAvg : real;
    iStatus : integer;
end;
<!--CodeE-->

이건 서버상의 처리부분입니다.
/**           szTargetIp : trace 대상 IP
**        nRet           : 0[성공] -2[데이터 없음] -1[실패]
*/
void startTraceRoute([in]char szTargetIp[16], [out]int nRet);

이러면 어떤부분이 잘못된 건가요? 잘되는 것과 비교를 해보았는데 틀린점을 찾을수가 없습니다.
제발 도와주세요~~
0  COMMENTS