Показать сообщение отдельно
  #1  
Старый 16.12.2010, 17:07
S_V_T S_V_T вне форума
Прохожий
 
Регистрация: 15.12.2010
Сообщения: 2
Репутация: 10
По умолчанию Проблемы при использовании функций для работы с SNMP из INDY

Подскажите, пожалуйста, как решить следующую проблему! Опрашиваю коммутатор по 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;
Ответить с цитированием