Q&A

  • Indy ICMPClient 유닛의 함수중에서.
인디의 아래 함수에서
integer Overflow라는 에러가 걸립니다
MsRoundTripTime 때문에 그러는것 같은데.
혹시 이 소스를 고치신분이 있느지요?
RTTime의 자료타입이 더 커서 그런데.
MsRoundTripTime을 Cardinal로 수정해도 상관없는지?
버그 패치가 있는지요?


procedure TIdIcmpClient.Ping(ABuffer: String = ''; SequenceID: word = 0);    {Do not Localize}
var
  RTTime: Cardinal;
begin
  if SequenceID <> 0 then
    wSeqNo := SequenceID;
  PrepareEchoRequest(ABuffer);
  RTTime := getTickCount;
  SendEchoRequest;
  GetEchoReply;
  RTTime := GetTickDiff(RTTime,GetTickCount);
  Binding.CloseSocket;
  FReplyStatus.MsRoundTripTime := RTTime;
  DoReply(FReplyStatus); <- 여기서 Breaking되네요.
  Inc(wSeqNo); // SG 25/1/02: Only incread sequence number when finished.
end;
0  COMMENTS