<!--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);
이러면 어떤부분이 잘못된 건가요? 잘되는 것과 비교를 해보았는데 틀린점을 찾을수가 없습니다.
제발 도와주세요~~