Подскажите, пожалуйста, как решить следующую проблему! Опрашиваю коммутатор по SNMP с помощью функций из INDY, но значения возвращаются корректно только, если они меньше 2147483647 (максимальное значение integer). Понимаю, что нужно изменить где-то в самой библиотеке тип на cardinal, а вот где, так и не смог найти
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Ok:Boolean;
t,Counter:Integer;
Value:String;
IdSNMP1: TIdSNMP;
begin
IdSNMP1 := TIdSNMP.Create(nil);
Counter := 0;
IdSNMP1.Community := Edit2.Text;
IdSNMP1.Host := Edit1.Text; {ie 'localhost'}
IdSNMP1.Query.Host := Edit1.Text;
IdSNMP1.Query.Community := Edit2.Text; {ie 'public'}
IdSNMP1.Query.Clear;
IdSNMP1.Query.PDUType := PDUGetRequest;
IdSNMP1.Query.MIBAdd(Edit3.Text,''); {ie '1.3.6.1.2.1.1.1.0' }
IdSNMP1.Active := true;
while Counter < 3 do begin
Ok := IdSNMP1.SendQuery;
if Ok then begin
Memo1.Lines.Add('ValueCount='+INTTOSTR(IdSNMP1.Reply.ValueCount));
for t := 0 to IdSNMP1.Reply.ValueCount-1 do begin
Memo1.Lines.Add('Value['+IntToStr(t)+']='
+IdSNMP1.Reply.Value[t] );
end;
break;
end else begin
Memo1.Lines.Add('Retrying.');
Inc(Counter);
end;
end;
if not Ok then begin
Memo1.Lines.Add('UDP responses lost or there is no SNMP server responding at that address.');
end;
end;