为什么编译器会为表单的字段说"未声明的标识符"?

use*_*940 0 delphi

此代码给出了一条错误消息:[错误] Unit1.pas(52):未声明的标识符:'Edit1'.

procedure SetTCPIPDNSAddresses(sIPs : String);
begin
  SaveStringToRegistry_LOCAL_MACHINE(
    'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + Edit1.text,
    'NameServer', sIPs);
end;
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误,如何解决?

Ken*_*ite 7

您的代码不是表单的方法,因此无法访问Edit1.

要么使它成为一种形式方法:

type
  TForm1=class(TForm)
  ...
  private
    procedure SetTCPIPDNSAddresses(sIPs : String);
  ...
  end;

implementation

procedure TForm1.SetTCPIPDNSAddresses(sIPs : String);
 begin
   ...
 end;
Run Code Online (Sandbox Code Playgroud)

或者将其更改为接受Edit1.Text另一个参数的内容:

procedure SetTCPIPDNSAddresses(sIPs : String; RegName: String);
begin
  SaveStringToRegistry_LOCAL_MACHINE(
    'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + 
     RegName, 'NameServer', sIPs);
end;
Run Code Online (Sandbox Code Playgroud)

称之为:

SetTCPIPDNSAddresses(sTheIPs, Edit1.Text);
Run Code Online (Sandbox Code Playgroud)

  • 你能不能做什么?这解决了您发布**的问题. (2认同)