var c:integer;
reg:TRegiStry;
s:Array[0..255] of char;
begin
........
...................
c:=Reg.GetDataSize('IPAddress');
fillchar(s,255,#0);
Reg.ReadBinaryData('IPAddress',S,c);
//如果多个IP地址的话,那么此S的数组里就用#0分割了
end;
reg:TRegiStry;
s:Array[0..255] of char;
begin
........
...................
c:=Reg.GetDataSize('IPAddress');
fillchar(s,255,#0);
Reg.ReadBinaryData('IPAddress',S,c);
//如果多个IP地址的话,那么此S的数组里就用#0分割了
end;
或者你用socket里面的函数inet_addr() 它把一个字符串转换为IP地址格式
2。我已经读取了字符串'192.168.0.1'#0'192.168.10.1'#0#0
3。但是我不知道怎么把上面的字符串分别读取倒Memo上
如:
192.168.0.1
192.168.10.1
因为String是以#0结尾的,所以#0后面的就读不出来了!!
着急中。
function GetIfaceInfo(NameType:integer;StrID:String):String;
const
NetWorkReg ='SYSTEM\CurrentControlSet\Control\Network\';
DevInfoReg ='SYSTEM\CurrentControlSet\Enum\';
IPAddreReg ='SYSTEM\CurrentControlSet\Services\';
var
Reg:TRegistry;
S:String;
c:integer;
begin
RegPath:=IPAddreReg+StrID+'\Parameters\Tcpip\';
if Reg.OpenKey(RegPath,False) then
begin
c:=Reg.GetDataSize('IPAddress');
SetLength(S,C); Reg.ReadBinaryData('IPAddress',PChar(S)^,c);
ShowMessage(S);//此时如果查看S的值是串'192.168.0.1'#0'192.168.10.1'#0#0,但是ShowMessage后就变成了192.168.0.1了
不能把多个IP显示出来了!!
????????????????end;
var
strsz,i:integer;
str:array[0..255]of char;
tmp:string[20];
strlst:TStringList;
begin
strlst:=TStringList.Create;
strlst.Clear;
strsz:=length('192.168.0.1'#0'192.168.10.1'#0#0);
str:='192.168.0.1'#0'192.168.10.1'#0#0;
tmp:='';
for i:=0 to strsz-1 do
begin
if ((i<strsz) and (str[i]=#0)) then
begin
strlst.Add(tmp);
showmessage(tmp);
tmp:='';
if(str[i+1]<>#0) then
continue
else
break;
end;
tmp:=tmp+str[i];
end;
strlst.Destroy;
end;
如果你要用memo,写上 form1.Memo1.Lines:=strlst;就可以了
给分吧