本文整理自网络,侵删。
unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
type TForm1 = class(TForm) Memo1: TMemo; StringGrid1: TStringGrid; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}uses Winsock;
type IPv4 = record Octet: array [1..4] of Byte ; end;
const LISTESIRA = 0; LISTEIP = 1; LISTEMAC = 2; LISTEPROTOKOL = 3; LISTEPORT = 4;
OKTET1 = 1; OKTET2 = 2; OKTET3 = 3; OKTET4 = 4;
var
BaslangicIP : IPv4; BitisIP : IPv4;
function Ip2Int(i1,i2,i3,i4:byte):integer;begin result := (i1 shl 24) + (i2 shl 16) + (i3 shl 8) + (i4);end;
function Int2Ip(ip:integer):string;var dizi:array[1..4] of byte absolute ip;begin
if ((Dizi[4] = 0) or (Dizi[4] = 255) or (Dizi[3] = 0) or (Dizi[3] = 255) or (Dizi[2] = 0) or (Dizi[2] = 255) or (Dizi[1] = 0) or (Dizi[1] = 255)) then begin result := '' ; end else begin result := dizi[4].ToString + '.' + dizi[3].ToString + '.' + dizi[2].ToString + '.' + dizi[1].ToString;
end;end;
procedure ListeEkle(var Liste:TStringGrid;pip,pmac,pprotokol,pport:string);var eklenensatir : integer;begin Liste.RowCount := Liste.RowCount + 1; eklenensatir := Liste.RowCount-1;
Liste.Cells[LISTESIRA,eklenensatir] := inttostr(eklenensatir); Liste.Cells[LISTEIP,eklenensatir] := trim(pip); Liste.Cells[LISTEMAC,eklenensatir] := trim(pmac); Liste.Cells[LISTEPROTOKOL,eklenensatir] := trim(pprotokol); Liste.Cells[LISTEPORT,eklenensatir] := trim(pport); Liste.Row := eklenensatir;
end;
procedure IPListOlustur(var Baslama,bitis:IPv4;var Liste:TStringGrid);varIPilk : integer;IPSon : integer;sira : integer;IPADDR : String; begin
IPilk := Ip2Int(Baslama.Octet[Oktet1],Baslama.Octet[Oktet2], Baslama.Octet[Oktet3],Baslama.Octet[Oktet4]);
IPSon := Ip2Int(Bitis.Octet[Oktet1],Bitis.Octet[Oktet2], Bitis.Octet[Oktet3],Bitis.Octet[Oktet4]);
for sira := IPilk to IPSon do begin IPADDR := Int2Ip(sira); if (IPADDR <> '') then ListeEkle(Liste,IPADDR,'','',''); Application.ProcessMessages; end;
end;
procedure TForm1.FormCreate(Sender: TObject);varIPList:string;begin//caption:=IntToStr(Ip2Int(127,0,0,1));IPListOlustur(BaslangicIP,BitisIP,StringGrid1);end;
end.
相关阅读 >>
Delphi 如何将access的ole对象字段存储的bmp图象显示出来
Delphi webbrowser设置自己定义user-agent
Delphi中sendmessage给一个edit控件发送wm_settext消息
更多相关阅读请进入《Delphi》频道 >>