간단한 SNMP 응용 프로그램을 작성하여 comtech 모뎀 CDM-570L (예 : 시스템 암호 해독, 전원 수준 및 기호 속도)에서 정보를 가져옵니다.액세스 위반 오류 SNMP
unit Unit1;
interface
uses
System.UITypes, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, IdUDPBase, IdUDPClient, idSNMP;
type
TForm1 = class(TForm)
Nhap: TGroupBox;
Label1: TLabel;
Label2: TLabel;
ButtonEnter: TButton;
Xuat: TGroupBox;
PowerLevel: TLabel;
PowerLevelValue: TEdit;
SymbolRate: TLabel;
SymbolRateValue: TEdit;
ButtonSave: TButton;
dBm: TLabel;
sps: TLabel;
DeviceName: TLabel;
HostIP: TEdit;
ComString: TEdit;
procedure BtnEnterClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SNMP: TidSNMP;
implementation
{$R *.dfm}
procedure TForm1.BtnEnterClick(Sender: TObject);
var dn, OID: string; //dn = device name, I mean system descryption
begin
if Trim(HostIP.Text) = '' then begin
MessageDlg('Chưa nhập IP của thiết bị!', mtError, [mbOK], 0);
Exit;
end;
if Trim(ComString.Text) = '' then begin
MessageDlg('Chưa nhập SNMP read community string', mtError, [mbOK], 0);
Exit;
end;
PowerLevelValue.Clear;
SymbolRateValue.Clear;
SNMP.Host:= HostIP.Text;
SNMP.Community:= ComString.Text;
SNMP.ReceiveTimeout:=1000;
if SNMP.QuickSend('1.3.6.1.2.1.1.1.0',SNMP.Community,SNMP.Host,dn)
then DeviceName.Caption:=dn;
end;
end.
오류가 발생했습니다
첫 번째 예외를 $ 005D39C9에서. 예외 클래스 $ C0000005 '0x005d39c9에서 액세스 위반 : 0x00000000 읽기'메시지가 있습니다. 프로세스 만들기 Project1.exe (8156)
~~ 내 첫 번째 게시물은 여기에, 감사 ~~ 읽기
편집을 위해 : 죄송합니다 "경우"나는
을 편집 잊지 않았다SNMP.QuickSend('1.3.6.1.2.1.1.1.0',SNMP.Community,SNMP.Host,dn);
DeviceName.Caption:=dn;
나중에 참조 할 수 있도록 디버거를 사용하여 예외를 트리거하는 행을 찾아내어 해당 세부 정보를 질문에 포함하십시오. –