PB10下如何获取本机IP地址?

时间:2023-01-21 13:40:53
用如下的方法获到的主机名和地址是乱码!
=====================
/ipaddr
    function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData )  library "wsock32.dll"
    function int WSACleanup() library "wsock32.dll"
    function int WSAGetLastError ( ) library "wsock32.dll"
    function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
    function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll" 
    FUNCTION uLong gethostbyname(string sHost) Library "wsock32.dll"


FUNCTION uLong RtlMoveMemory(ref os_hostent hpvDest,long hpvSource,long cbCopy) Library "kernel32.dll"
FUNCTION uLong RtlMoveMemory(ref Long hpvDest,long hpvSource,long cbCopy) Library "kernel32.dll"
FUNCTION uLong RtlMoveMemory(ref uLong hpvDest,long hpvSource,long cbCopy) Library "kernel32.dll"
FUNCTION uLong RtlMoveMemory(ref char hpvDest,long hpvSource,long cbCopy) Library "kernel32.dll"


type s_wsadata from structure
unsignedinteger version
unsignedinteger highversion
character discription[257]
character systemstatus[129]
unsignedinteger maxsockets
unsignedinteger maxupddg
string vendorinfo
end type

type os_hostent from structure
long hname
long haliases
integer haddrtype
integer hlen
long haddrlist
end type


public function integer of_getiploc (ref string as_name, ref string as_ip);s_wsadata wsd;
string hn;
os_hostent ht;
ulong ul_h,uaddr;
long s,ui,i;
char ch;
string ls_msg;
string ls_ip;
string ls_name;

ls_ip  = '';
ls_msg = '';
ls_name= '';

WSAStartup(257,ref wsd);

hn=space(255);

if gethostname(ref hn,255)<>0 then
ls_msg='获取失败(hostname)';
as_name = ls_msg
return -1;
end if
hn=trim(hn)
as_name = hn;
ul_h=gethostbyname(hn)

if ul_h=0 then
ls_msg='获取失败(ul_h)';
as_name = ls_msg
return -1;
end if

RtlMoveMemory(ref ht,ul_h,16)

if ht.hname=0 then
ls_msg='获取失败(ht.hname)';
as_name = ls_msg
return -1;
end if

RtlMoveMemory(ref ch,ht.hname,1)
i=0;

do while asc(ch)<>0
ls_name=ls_name+ch;
i++;
RtlMoveMemory(ref ch,ht.hname+i,1)
loop


if ht.haddrlist=0 then
ls_msg='获取失败(ht.haddrlist)';
as_name = ls_msg
return -1;
end if

RtlMoveMemory(ref ui,ht.haddrlist,4)
i=0

do while ui<>0
RtlMoveMemory(ref uaddr,ui,ht.hlen)
// ls_ip.additem(inet_ntoa(uaddr))
ls_ip = ls_ip + inet_ntoa(uaddr) + ','
i++
RtlMoveMemory(ref ui,ht.haddrlist+i*4,4)
loop

WSACleanup()

if right(ls_ip,1) = ',' then
ls_ip = mid(ls_ip,1,len(ls_ip) - 1)
end if

as_ip = ls_ip

return 0
end function

31 个解决方案

#1


不会吧,10这么怪?

#2


用别的直接写一个dll,然后过来调用。

#3


我在pb90下獲得主機名的代碼(能正常運行)搬到pb10時也是亂碼不知道是為什麼

#4


编码格式不对吧!!
定久外部函数时把string换成ustring试试!!

#5


我也得到的是乱码,该怎么办呢?

#6


ustring是变量类型吗?
具体该怎么改?

#7


问一下用pb做什么样的程序会用到取本机的IP地址可否举例子,我还没有用过呢?!

#8


作这些底层的东西,最好用c#或delphi做,然后在pb调用。

#9


有解决了的吗?

#10


奇怪,我在XP系统下也是得到乱码,ip得到的是0.0.0.0

#11


该回复被版主删除

#12


哎,郁闷,谁有个好的解决方案说说啥

#13


本人解决的代码如下

global type hostent from structure
long h_name
long h_aliases
integer h_addrtype
integer h_length
long h_addr_list
end type

ulong hostent_addr
blob hostname
hostent lstr_hostent
long ls_address[4]

TRY
string a
a=Space(256)
int i
i = gethostname(ref a,256)
hostname= Blob(trim(a), EncodingANSI!)
hostent_addr = gethostbyname(ref hostname)

if hostent_addr = 0 then
return "10.79.0.196"
end if

CopyMemory(ref lstr_hostent, hostent_addr, 16 )

long pipaddress, ipAddress, tmp
tmp = lstr_hostent.h_addr_list
//Get the server's IP address out of the structure.
CopyMemory( pIPAddress, tmp, 4 )
CopyMemory( ls_address[1], pIPAddress, 1)
CopyMemory( ls_address[2], pIPAddress+1, 1)
CopyMemory( ls_address[3], pIPAddress+2, 1)
CopyMemory( ls_address[4], pIPAddress+3, 1)
//CopyMemory( ipAddress, pIPAddress, 4)
string sipaddress
sipaddress = String(ls_address[1])+"."+String(ls_address[2])+"."+String(ls_address[3])+"."+String(ls_address[4])
//Messagebox("", sipaddress)
catch (Exception e)
sipaddress = "10.79.0.196"
FINALLY
return sipaddress
END   TRY

#14


有些声明多余,代码有点乱,但是能够解决问题,剩下请测试,然后有问题联系我QQ254929064

#15


好像pb10字符的存储字节大小和pb6.5有区别
例如汉字在pb6.5中有二个字节
但是好像pb10中不一样
可以考虑这个问题

得到本地Ip的dll文件很多。有封装的函数可以直接调用
如果需要,请联系俺!
QQ:75583254

#16


/*************************************************************************

函数:string gf_ip()

功能:获取本地的IP,若本地有多个IP,侧用“,”分隔

返回数据格式:192.168.000.134,192.168.000.136,...

日期:2007.1.12

**************************************************************************/
string ls_IpAddress[]
int li_IP_cnt
string ls_ipmac
str_wsadata l_WSAData
string ls_HostName
ULong ll_addr,ll_IP,ll_ipaddr,ll_stringip 
int li_version = 257
int li_i,li_j
blob{128} lb_HostName
ulong ll_addr_list
str_hostent lstr_hostent

ls_ipmac = ""
if wsastartup ( li_version, l_WSAData ) = 0 then
//初始化Windows Sockets 成功
IF gethostname ( lb_HostName, 128 ) < 0 THEN
//获取主机名失败
ELSE
li_j = lena(lb_hostname)
ls_hostname = ""
for li_i = 1 to li_j
ls_hostname = ls_hostname + string(BlobMid(lb_hostname,li_i, 1),EncodingANSI!)
next
ls_HostName = trim(ls_HostName)//主机名
ll_addr = gethostbyname(lb_HostName)//获取指向IP地址的指针地址
RtlMoveMemory ( lstr_hostent, ll_addr, 16 )//提取指向IP地址的指针结构
ll_addr_list = lstr_hostent.h_Addrlist // 取得指向IP地址的指针, ll_addr_list指向一个指向IP地址的指针数组 

li_IP_cnt = 0//计数IP个数
Do While True 
RtlMoveMemory ( ll_IPAddr , ll_addr_list, 4  ) // 取得指向IP地址的指针值
If ll_IPAddr = 0 Then Exit 
li_IP_cnt = li_IP_cnt + 1
//分段获取IP值
RtlMoveMemory (ll_StringIP, ll_IPAddr, 1 )
ls_IpAddress[li_IP_cnt] = right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 1, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 2, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 3, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3)

ll_addr_list = ll_addr_list + 4 // 指针加4,继续读取下一个IP地址 
Loop
END IF
WSACleanup()
end if
or li_i = 1 to li_IP_cnt
ls_ipmac = ls_ipmac + ls_IpAddress[li_i] + ","
next
if(len(ls_ipmac) > 1)then ls_ipmac = left(ls_ipmac,len(ls_ipmac) - 1)
return ls_ipmac

#17


API声明我就不贴了。我花了一星期才搞出来的。

#18


获取本机IP 
 
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll" 

使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress 

IF wsastartup ( li_version, l_WSAData ) = 0 THEN

IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF 
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress 
 

#19


在函数声明后面加上 alias for '函数名;ansi'

#20


楼上正解

#21


dawugui(潇洒老乌龟) ( ) 信誉:100    Blog 

function int WSAStartup( uint UIVersionRequested, ref s_WSAData l_WSAData ) library "wsock32.dll"

新手问个问题,在声名这个函数时报错:(global extermal functions)
error  c0001:illegal data type:s_wsadata
好像是错误的数据类型

#22


用 PB 10.0以上 注意 len mid left right 等函数在处理双字节上的引用

#23


有你们真好,我刚刚碰到这个问题,
搞了一天了,都没有搞出是什么问题,现在看到你们的回复,太经典了。

有你们真好。

#24


各位:

   我在函数声明后面加上 alias for '函数名;ansi'后。

  得到的hostname 是正确的了,并不是乱码?但是IP地址还是0.0.0.0 ,
本人用的是XP的系统。PB10的版本,望解答

#25


to: dawugui(潇洒老乌龟) 的方法取到的IP是0.0.0.0 ,

但是hostname 取到的不是乱码了/

#26


还没解决

#27


用winsocket控件,很简单.插入一个winsocket ole对象ole_winsock.
ole_winsock.object.LocalIP就是本机IP

#28


我发现很多人都不是真正用的PB10,然后跟贴说解决了,其实并没有解决

我用的pb10,因为上次做个程序的时候电脑重装后用了pb10,没办法,就一直用这个了,然后也是用的网上最常用的一个方法来进行获取IP地址,自己加了一些代码进行调试,结果调试的过程中就偶然弄好了,虽然不知道是什么原因,忘高人进来解释,但是我自己用的pb10确实是解决了,能够正常获取IP地址,程序终端在winxp和2000、2003server上测试都能够正常使用,我修改了那个取IP地址的代码的循环部分如下:


        GetHost(ls_HostName, lb_HostAddress)
  
pass1= string(blobmid(lb_HostAddress,1,1),Encodingansi!)
gs_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1),Encodingansi!))) + "."
pass2= string(blobmid(lb_HostAddress,2,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1),Encodingansi!))) + "."
pass3= string(blobmid(lb_HostAddress,3,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1),Encodingansi!))) + "."
pass4= string(blobmid(lb_HostAddress,4,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1),Encodingansi!)))


其中pass1-pass4是当时逐个调试时采用的中间变量,看起来这个没用,但是不加上去获取的值就不对,有兴趣的兄弟可以按这个改改试试

#29


PB10声明外部函数要注意
PB10声明外部函数与PB9有区别.原来在PB9下面使用正常的函数在PB10下面使用不正常了.比如sndPlaySoundA函数,在PB9下声明为
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL" 
而在PB10下面应当声明为
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL" ALIAS FOR  "sndPlaySoundA;ansi"
因为PB10开始支持UNICODE编码,所以原来在PB10以下版本声明的外部函数不支持UNICODE编码,所以就用起来就不正常了.
参数中带字串类型或返回带字串类型的后面需要加上 ALIAS FOR "扩展函数名;ansi",否则处理字串时可能会出现错误

#30


楼上说的只是通常的问题,不IP这个有点特殊,直接将代码从9移植成10的时候系统本来就会加上ALIAS FOR  "XXXXXXXXX;ansi",并不需要人为去注意的

除非是新写代码时可能需要注意一下

#31


试试我这个方法,没问题,别见笑
http://0356edu.com/Edu_Enter/Edu_Computer_Enter/R20060923/R20060923-01.asp?PageID=R2006092301

#1


不会吧,10这么怪?

#2


用别的直接写一个dll,然后过来调用。

#3


我在pb90下獲得主機名的代碼(能正常運行)搬到pb10時也是亂碼不知道是為什麼

#4


编码格式不对吧!!
定久外部函数时把string换成ustring试试!!

#5


我也得到的是乱码,该怎么办呢?

#6


ustring是变量类型吗?
具体该怎么改?

#7


问一下用pb做什么样的程序会用到取本机的IP地址可否举例子,我还没有用过呢?!

#8


作这些底层的东西,最好用c#或delphi做,然后在pb调用。

#9


有解决了的吗?

#10


奇怪,我在XP系统下也是得到乱码,ip得到的是0.0.0.0

#11


该回复被版主删除

#12


哎,郁闷,谁有个好的解决方案说说啥

#13


本人解决的代码如下

global type hostent from structure
long h_name
long h_aliases
integer h_addrtype
integer h_length
long h_addr_list
end type

ulong hostent_addr
blob hostname
hostent lstr_hostent
long ls_address[4]

TRY
string a
a=Space(256)
int i
i = gethostname(ref a,256)
hostname= Blob(trim(a), EncodingANSI!)
hostent_addr = gethostbyname(ref hostname)

if hostent_addr = 0 then
return "10.79.0.196"
end if

CopyMemory(ref lstr_hostent, hostent_addr, 16 )

long pipaddress, ipAddress, tmp
tmp = lstr_hostent.h_addr_list
//Get the server's IP address out of the structure.
CopyMemory( pIPAddress, tmp, 4 )
CopyMemory( ls_address[1], pIPAddress, 1)
CopyMemory( ls_address[2], pIPAddress+1, 1)
CopyMemory( ls_address[3], pIPAddress+2, 1)
CopyMemory( ls_address[4], pIPAddress+3, 1)
//CopyMemory( ipAddress, pIPAddress, 4)
string sipaddress
sipaddress = String(ls_address[1])+"."+String(ls_address[2])+"."+String(ls_address[3])+"."+String(ls_address[4])
//Messagebox("", sipaddress)
catch (Exception e)
sipaddress = "10.79.0.196"
FINALLY
return sipaddress
END   TRY

#14


有些声明多余,代码有点乱,但是能够解决问题,剩下请测试,然后有问题联系我QQ254929064

#15


好像pb10字符的存储字节大小和pb6.5有区别
例如汉字在pb6.5中有二个字节
但是好像pb10中不一样
可以考虑这个问题

得到本地Ip的dll文件很多。有封装的函数可以直接调用
如果需要,请联系俺!
QQ:75583254

#16


/*************************************************************************

函数:string gf_ip()

功能:获取本地的IP,若本地有多个IP,侧用“,”分隔

返回数据格式:192.168.000.134,192.168.000.136,...

日期:2007.1.12

**************************************************************************/
string ls_IpAddress[]
int li_IP_cnt
string ls_ipmac
str_wsadata l_WSAData
string ls_HostName
ULong ll_addr,ll_IP,ll_ipaddr,ll_stringip 
int li_version = 257
int li_i,li_j
blob{128} lb_HostName
ulong ll_addr_list
str_hostent lstr_hostent

ls_ipmac = ""
if wsastartup ( li_version, l_WSAData ) = 0 then
//初始化Windows Sockets 成功
IF gethostname ( lb_HostName, 128 ) < 0 THEN
//获取主机名失败
ELSE
li_j = lena(lb_hostname)
ls_hostname = ""
for li_i = 1 to li_j
ls_hostname = ls_hostname + string(BlobMid(lb_hostname,li_i, 1),EncodingANSI!)
next
ls_HostName = trim(ls_HostName)//主机名
ll_addr = gethostbyname(lb_HostName)//获取指向IP地址的指针地址
RtlMoveMemory ( lstr_hostent, ll_addr, 16 )//提取指向IP地址的指针结构
ll_addr_list = lstr_hostent.h_Addrlist // 取得指向IP地址的指针, ll_addr_list指向一个指向IP地址的指针数组 

li_IP_cnt = 0//计数IP个数
Do While True 
RtlMoveMemory ( ll_IPAddr , ll_addr_list, 4  ) // 取得指向IP地址的指针值
If ll_IPAddr = 0 Then Exit 
li_IP_cnt = li_IP_cnt + 1
//分段获取IP值
RtlMoveMemory (ll_StringIP, ll_IPAddr, 1 )
ls_IpAddress[li_IP_cnt] = right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 1, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 2, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3) + "."
RtlMoveMemory (ll_StringIP, ll_IPAddr + 3, 1 )
ls_IpAddress[li_IP_cnt] = ls_IpAddress[li_IP_cnt] + right("000" + string(ll_StringIP),3)

ll_addr_list = ll_addr_list + 4 // 指针加4,继续读取下一个IP地址 
Loop
END IF
WSACleanup()
end if
or li_i = 1 to li_IP_cnt
ls_ipmac = ls_ipmac + ls_IpAddress[li_i] + ","
next
if(len(ls_ipmac) > 1)then ls_ipmac = left(ls_ipmac,len(ls_ipmac) - 1)
return ls_ipmac

#17


API声明我就不贴了。我花了一星期才搞出来的。

#18


获取本机IP 
 
声明win32 API函数:
function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"
function int WSACleanup() library "wsock32.dll"
function int WSAGetLastError ( ) library "wsock32.dll"
function int gethostname ( ref string name, int namelen ) library "wsock32.dll"
function string GetHost(string lpszhost, ref blob lpszaddress ) library "pbws32.dll" 

使用方法:
s_wsadata l_WSAData
string ls_HostName = space(128)
string ls_IpAddress
int li_version = 257
blob{4} lb_hostaddress 

IF wsastartup ( li_version, l_WSAData ) = 0 THEN

IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN
messagebox("GetHostName",WSAGetLastError())
ELSE
GetHost(ls_HostName, lb_HostAddress)
ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "."
ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000")
END IF
WSACleanup()
ELSE
messagebox("GetHostName",WSAGetLastError())
END IF 
sle_1.text=ls_hostname
sle_2.text=ls_ipaddress 
 

#19


在函数声明后面加上 alias for '函数名;ansi'

#20


楼上正解

#21


dawugui(潇洒老乌龟) ( ) 信誉:100    Blog 

function int WSAStartup( uint UIVersionRequested, ref s_WSAData l_WSAData ) library "wsock32.dll"

新手问个问题,在声名这个函数时报错:(global extermal functions)
error  c0001:illegal data type:s_wsadata
好像是错误的数据类型

#22


用 PB 10.0以上 注意 len mid left right 等函数在处理双字节上的引用

#23


有你们真好,我刚刚碰到这个问题,
搞了一天了,都没有搞出是什么问题,现在看到你们的回复,太经典了。

有你们真好。

#24


各位:

   我在函数声明后面加上 alias for '函数名;ansi'后。

  得到的hostname 是正确的了,并不是乱码?但是IP地址还是0.0.0.0 ,
本人用的是XP的系统。PB10的版本,望解答

#25


to: dawugui(潇洒老乌龟) 的方法取到的IP是0.0.0.0 ,

但是hostname 取到的不是乱码了/

#26


还没解决

#27


用winsocket控件,很简单.插入一个winsocket ole对象ole_winsock.
ole_winsock.object.LocalIP就是本机IP

#28


我发现很多人都不是真正用的PB10,然后跟贴说解决了,其实并没有解决

我用的pb10,因为上次做个程序的时候电脑重装后用了pb10,没办法,就一直用这个了,然后也是用的网上最常用的一个方法来进行获取IP地址,自己加了一些代码进行调试,结果调试的过程中就偶然弄好了,虽然不知道是什么原因,忘高人进来解释,但是我自己用的pb10确实是解决了,能够正常获取IP地址,程序终端在winxp和2000、2003server上测试都能够正常使用,我修改了那个取IP地址的代码的循环部分如下:


        GetHost(ls_HostName, lb_HostAddress)
  
pass1= string(blobmid(lb_HostAddress,1,1),Encodingansi!)
gs_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1),Encodingansi!))) + "."
pass2= string(blobmid(lb_HostAddress,2,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1),Encodingansi!))) + "."
pass3= string(blobmid(lb_HostAddress,3,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1),Encodingansi!))) + "."
pass4= string(blobmid(lb_HostAddress,4,1),Encodingansi!)
gs_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1),Encodingansi!)))


其中pass1-pass4是当时逐个调试时采用的中间变量,看起来这个没用,但是不加上去获取的值就不对,有兴趣的兄弟可以按这个改改试试

#29


PB10声明外部函数要注意
PB10声明外部函数与PB9有区别.原来在PB9下面使用正常的函数在PB10下面使用不正常了.比如sndPlaySoundA函数,在PB9下声明为
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL" 
而在PB10下面应当声明为
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL" ALIAS FOR  "sndPlaySoundA;ansi"
因为PB10开始支持UNICODE编码,所以原来在PB10以下版本声明的外部函数不支持UNICODE编码,所以就用起来就不正常了.
参数中带字串类型或返回带字串类型的后面需要加上 ALIAS FOR "扩展函数名;ansi",否则处理字串时可能会出现错误

#30


楼上说的只是通常的问题,不IP这个有点特殊,直接将代码从9移植成10的时候系统本来就会加上ALIAS FOR  "XXXXXXXXX;ansi",并不需要人为去注意的

除非是新写代码时可能需要注意一下

#31


试试我这个方法,没问题,别见笑
http://0356edu.com/Edu_Enter/Edu_Computer_Enter/R20060923/R20060923-01.asp?PageID=R2006092301