Delphi 为什么编译器会说;“未声明的标识符”;我的表格';s场?

Delphi 为什么编译器会说;“未声明的标识符”;我的表格';s场?,delphi,Delphi,这段代码给了我一条错误消息:[error]Unit1.pas(52):未声明的标识符:“Edit1” 为什么会出现此错误,以及如何修复它?您的代码不是表单方法,因此无法访问Edit1 或者将其作为表单方法: type TForm1=class(TForm) ... private procedure SetTCPIPDNSAddresses(sIPs : String); ... end; implementation procedure TForm1.SetTC

这段代码给了我一条错误消息:[error]Unit1.pas(52):未声明的标识符:“Edit1”


为什么会出现此错误,以及如何修复它?

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

或者将其作为表单方法:

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

implementation

procedure TForm1.SetTCPIPDNSAddresses(sIPs : String);
 begin
   ...
 end;
或者将其更改为接受
Edit1.Text的内容作为另一个参数:

procedure SetTCPIPDNSAddresses(sIPs : String; RegName: String);
begin
  SaveStringToRegistry_LOCAL_MACHINE(
    'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + 
     RegName, 'NameServer', sIPs);
end;
把它叫做:

SetTCPIPDNSAddresses(sTheIPs, Edit1.Text);

如果您不能使用Ken White给您的解决方案,例如,如果不允许您更改
settcpipdnsaddress()
的签名,那么另一个选项是通过指向其父级
TForm
的全局指针访问
TEdit
(如果您的
TForm
实例实际上正在使用该指针,即),例如:


我把这个问题退回到你最初提出的问题(被回答的问题)。如果您有一个新问题,请将其作为一个新问题提问;在收到答案后不要完全更改它。请查看此网站不工作的原因。谢谢。为了回答此问题,我们需要知道Edit1声明的位置,以及问题中的代码所在的位置。您不能做什么?这解决了您在e上发布的问题确切地说。
SetTCPIPDNSAddresses(sTheIPs, Edit1.Text);
procedure SetTCPIPDNSAddresses(sIPs : String); 
begin 
  SaveStringToRegistry_LOCAL_MACHINE( 
    'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + Form1.Edit1.Text, 
    'NameServer', sIPs); 
end;