0

このコードにより、エラー メッセージ[Error] Unit1.pas(52): Undeclared identifier: 'Edit1' が表示されます。

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

このエラーが発生する理由と修正方法を教えてください。

4

2 に答える 2

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);
于 2012-06-15T01:10:22.827 に答える
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; 
于 2012-06-15T19:50:10.500 に答える