unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.ExtCtrls, Borland.Vcl.StdCtrls, System.ComponentModel,
  System.Text, System.Net;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    Button3: TButton;
    Panel1: TPanel;
    procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.nfm}

function AdresIP(var nazwaKomputera :String;indeks :Integer =0) :String;
var InfoKomputer :IPHostEntry;
begin
//Sprawdzamy informacje o komputerze
InfoKomputer:=Dns.GetHostByName(nazwaKomputera);
nazwaKomputera:=InfoKomputer.HostName;
//Adres IP
if indeks+1>Length(InfoKomputer.AddressList)
  then Result:=nil
  else Result:=InfoKomputer.AddressList[indeks].ToString;
end;

function NazwaDNS(adresIP :String) :String;
var InfoKomputer :IPHostEntry;
begin
//Sprawdzamy informacje o komputerze
InfoKomputer:=Dns.GetHostByAddress(adresIP);
//Nazwa DNS
Result:=InfoKomputer.HostName;
end;

procedure TForm1.Button1Click(Sender: TObject);
var nazwaKomputera :String;
begin
if Length(Edit1.Text)=0 then Exit;
if (Edit1.Text[1]>='0') and (Edit1.Text[1]<='9') //adres IP czy nazwa DNS
  then Edit2.Text:=NazwaDNS(Edit1.Text)
  else
  begin
  nazwaKomputera:=Edit1.Text; //aby przekazac TCaption do AdresIP
  Edit2.Text:=AdresIP(nazwaKomputera);
  Edit1.Text:=nazwaKomputera;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  sb :StringBuilder;
  sb_rozmiar :Cardinal;
begin
sb:=StringBuilder.Create(MAX_COMPUTERNAME_LENGTH);
sb_rozmiar:=sb.Capacity;
GetComputerName(sb,sb_rozmiar);
Edit1.Text:=sb.ToString;
Button1Click(nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button2Click(nil);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=13 then Button1Click(nil);
end;

end.
