1

Konu: Class Definition Not Found

Merhabalar.

oWinSock = CreateObject("MSWinsock.Winsock")
myip=oWinSock.LocalIP

kodu ile makinenin ip'sini okutuyorum. Vfp yüklü makinede problem çıkarmıyor. Ama Vfp yüklü olmayan sistemlerde "Class definition MSWINSOCK.WINSOCK is not. found " hatasını alıyorum.
Bu problemi nasıl halledebilirim.

Teşekkür ederim.

2

Re: Class Definition Not Found

Olayin VFP ile ilgisi yok. O makinede mswinsock.winsock register edilmemis. Istersen ayni kodu Excelde dene VFP olmayan makinede.

3 Son düzenleyen, foxman (10.05.2007 11:27:01)

Re: Class Definition Not Found

"MSWinsock.Winsock", mswinsck.ocx a ait bir class çalışması için mswinsck.ocx i bilgisayara yüklemek gerekiyor her makinada yok onu yüklemeden çalışmıyor. Onun yerine aşağdakini kullanabilirsin.

Visual Fox Pro
Declare Integer WSACleanup In ws2_32

Declare String inet_ntoa In ws2_32 Integer in_addr
Declare Integer gethostbyname In ws2_32 String Host
Declare Integer WSAStartup In ws2_32 Integer wVerRq, String lpWSAData
Declare RtlMoveMemory In kernel32 As CopyMemory String @Dest, Integer Src, Integer nLength
 
If WSAStartup(0x202, Repli(Chr(0),512)) = 0
 
    ?GetIP("network teki bir bilgisayar ismi")
 
    ** veya
 
    ?GetIP("localhost")
 
    ** veya
 
    ?GetIP(Alltrim(Strextract(Id(),"","#")))
 
    =WSACleanup()
Endif
 
**************************************************************************
Function GetIP(cServer)
    #Define HOSTENT_SIZE 16
    Local nStruct, nSize, cBuffer, nAddr, cIP
    nStruct = gethostbyname(cServer)
    If nStruct = 0
        Return '0.0.0.0'
    Endif
 
    cBuffer = Repli(Chr(0), HOSTENT_SIZE)
    cIP = Repli(Chr(0), 4)
 
    = CopyMemory(@cBuffer, nStruct, HOSTENT_SIZE)
    = CopyMemory(@cIP, buf2dword(Subs(cBuffer,13,4)),4)
    = CopyMemory(@cIP, buf2dword(cIP),4)
    Return inet_ntoa(buf2dword(cIP))
Endfunc
**************************************************************************
Function buf2dword(lcBuffer)
    Return Asc(Substr(lcBuffer, 1,1)) + ;
        Bitlshift(Asc(Subs(lcBuffer, 2,1)),8) +;
        Bitlshift(Asc(Subs(lcBuffer, 3,1)),16) +;
        Bitlshift(Asc(Subs(lcBuffer, 4,1)),24)
Endfunc
**************************************************************************