rt.
解决方案 »
- 怎样在单击treeview的加号时,得到该加号对应的node的text
- Delphi for PHP试用下载!!
- 刚毕业的本科生,做Delphi程序员,待遇是怎么样的?
- 如何用ADO得方式进行异构数据库(ORACLE 和 SQL)之间的查询?
- 文件拷贝问题,急!!!
- 关于窗体创建问题,请指教!!!
- (dl)上海的托普说他们有cmm x ,所以能做任何软件.
- 我写了五年的delphi程序了,现在公司搞固定短消息,成天看协议,我又不是学通信,都是什么No7,Inap,头昏眼花,那位大虾给出出注意?
- asp的文本文件,还是2进制流?
- 一个关于DBGRID的问题(具有一点的难度)!
- 是ADO+Access有问题,还是ADO本身有问题?这是老问题了!
- 请问:如何Delphi里面如何掉用.lib文件??????
//uses Windows, SysUtils, NB30, 以下为类型定义及函数代码 const sNetBiosError = "NetBIOS错误%d"; type TMACAddress = packed array[0..5] of Byte; ENetBiosError = class( Exception ); TAStat = record Adapt : TAdapterStatus;NameBuff : array[0..30] of TNameBuffer; end;function GetMacAddress( AdapterNum : Integer ) : TMACAddress; var Ncb : TNCB; uRetCode : Char; J : Integer; Adapter : TAStat; begin FillChar( NCB, SizeOf(NCB), 0 ); with NCB do begin ncb_command := Char(NCBRESET); ncb_lana_num := Char( AdapterNum ); end;
uRetCode := Netbios( @Ncb ); if uRetCode <> #0 then raise Exception.CreateFmt( sNetBIOSError, [Ord(uRetCode)] ); FillChar( NCB, SizeOf(NCB), 0 ); with NCB do begin ncb_command := Char(NCBASTAT); ncb_lana_num := Char( AdapterNum ); StrCopy( ncb_callname, "* " ); ncb_buffer := @Adapter; ncb_length := sizeof(Adapter); end; uRetCode := Netbios( @Ncb ); if uRetCode <> #0 then raise Exception.CreateFmt( sNetBIOSError, [Ord(uRetCode)] ); for J := 0 to 5 do Result[J] := Ord( Adapter.Adapt.Adapter_address[J] ); end; procedure TForm1.Button1Click(Sender: TObject);
var
loc,loc1:integer;
addr:string;begin
Addr:=Trim(edit1.Text);
loc:=pos('#',addr);
loc1:=loc-1; while (ord(addr[loc1])>48) and (ord(addr[loc1])<57) do
loc1:=loc1-1; label1.Caption :=copy(addr,1,loc1);
label2.Caption :=copy(addr,loc1+1,(loc-1-loc1));
end;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, nb30;
........
implementation{$R *.dfm}function TForm1.NBGetAdapterAddress(a :Integer) : string;
var
NC :TNCB;
ADAPTE :TADAPTERSTATUS;
LANAENU :TLANAENUM;
intId :Integer;
cR :Char;
strTem :string;
begin
Result := '';
try
ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBENUM);
cR := NetBios(@NC); //Reissue enum command
NC.ncb_buffer := @LANAENU;
NC.ncb_length := SizeOf(LANAENU);
cR := NetBios(@NC);
If Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBRESET);
NC.ncb_lana_num := LANAENU.lana[a];
cR := NetBios(@NC);
if Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBASTAT);
NC.ncb_lana_num := LANAENU.lana[a];
StrPCopy(NC.ncb_callname, '*');
NC.ncb_buffer := @ADAPTE;
NC.ncb_length := SizeOf(ADAPTE);
cR := NetBios(@NC);
strTem := '';
for intId := 0 To 5 do
strTem := strTem+ InttoHex(Integer(ADAPTE.adapter_address[intId]), 2);
Result := strTem;
finally
end;end;procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := NBGetAdapterAddress(0);
Beep;
end;
end.
dfimplementation{$R *.dfm}function TForm1.NBGetAdapterAddress(a :Integer) : string;
var
NC :TNCB;
ADAPTE :TADAPTERSTATUS;
LANAENU :TLANAENUM;
intId :Integer;
cR :Char;
strTem :string;
begin
Result := '';
try
ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBENUM);
cR := NetBios(@NC); //Reissue enum command
NC.ncb_buffer := @LANAENU;
NC.ncb_length := SizeOf(LANAENU);
cR := NetBios(@NC);
If Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBRESET);
NC.ncb_lana_num := LANAENU.lana[a];
cR := NetBios(@NC);
if Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBASTAT);
NC.ncb_lana_num := LANAENU.lana[a];
StrPCopy(NC.ncb_callname, '*');
NC.ncb_buffer := @ADAPTE;
NC.ncb_length := SizeOf(ADAPTE);
cR := NetBios(@NC);
strTem := '';
for intId := 0 To 5 do
strTem := strTem+ InttoHex(Integer(ADAPTE.adapter_address[intId]), 2);
Result := strTem;
finally
end;end;procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := NBGetAdapterAddress(0);
Beep;
end;
It is compiled!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, nb30;
........
implementation{$R *.dfm}function TForm1.NBGetAdapterAddress(a :Integer) : string;
var
NC :TNCB;
ADAPTE :TADAPTERSTATUS;
LANAENU :TLANAENUM;
intId :Integer;
cR :Char;
strTem :string;
begin
Result := '';
try
ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBENUM);
cR := NetBios(@NC); //Reissue enum command
NC.ncb_buffer := @LANAENU;
NC.ncb_length := SizeOf(LANAENU);
cR := NetBios(@NC);
If Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBRESET);
NC.ncb_lana_num := LANAENU.lana[a];
cR := NetBios(@NC);
if Ord(cR) <> 0 then
exit; ZeroMemory(@NC, SizeOf(NC));
NC.ncb_command := Chr(NCBASTAT);
NC.ncb_lana_num := LANAENU.lana[a];
StrPCopy(NC.ncb_callname, '*');
NC.ncb_buffer := @ADAPTE;
NC.ncb_length := SizeOf(ADAPTE);
cR := NetBios(@NC);
strTem := '';
for intId := 0 To 5 do
strTem := strTem+ InttoHex(Integer(ADAPTE.adapter_address[intId]), 2);
Result := strTem;
finally
end;end;procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := NBGetAdapterAddress(0);
Beep;
end;
end.It is compiled!
用這個,上面那個打多了東西。絕對可行!