unit1.pas

来自「Delphi7应用编程150例 附书源码」· PAS 代码 · 共 67 行

PAS
67
字号
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WinSock;

type
  TfrmMain = class(TForm)
    btnStart: TButton;
    edtIP: TEdit;
    edtName: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    function GetHostName:String;
    procedure btnStartClick(Sender: TObject);
    function NameToIP(Name:string):String;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

function TfrmMain.GetHostName:String;
var
  ComputerName: array[0..MAX_COMPUTERNAME_LENGTH+1] of char;
  Size: Cardinal;
begin
  result:='';
  Size := MAX_COMPUTERNAME_LENGTH+1;
  GetComputerName(ComputerName, Size);
  Result:=StrPas(ComputerName);
end;

procedure TfrmMain.btnStartClick(Sender: TObject);
begin
    edtName.Text:=GetHostName;
    edtIP.Text:=NameToIP(edtName.Text);
end;

function TfrmMain.NameToIP(Name:string):String;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  result:='';
  WSAStartup(2, WSAData);
  HostEnt := GetHostByName(PChar(Name));
  if HostEnt <> nil then
  begin
    with HostEnt^ do
     result:= Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]),
                                    Byte(h_addr^[2]), Byte(h_addr^[3])]);
  end;
  WSACleanup;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?