此代码给出了一条错误消息: [错误] Unit1.pas(52):未声明的标识符:'Edit1'。
procedure SetTCPIPDNSAddresses(sIPs : String);
begin
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + Edit1.text,
'NameServer', sIPs);
end;
为什么我会收到此错误,如何解决?
答案 0 :(得分:7)
您的代码不是表单的方法,因此无法访问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);
答案 1 :(得分:0)
如果您无法使用Ken White为您提供的解决方案,例如,如果您不允许更改SetTCPIPDNSAddresses()
的签名,则另一个选项是通过全局指针访问TEdit
它的父TForm
(如果你的TForm
实例实际上正在使用该指针,那就是),例如:
procedure SetTCPIPDNSAddresses(sIPs : String);
begin
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\' + Form1.Edit1.Text,
'NameServer', sIPs);
end;