Qbasicnews.com

Full Version: Bug Reports
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
How about this declaration?

declare sub funky(byval type as integer ptr, byval data as single ptr)

The bold words are reserved words but some C headers used those as param names. Would that delare work?
Quote:So what makes \n more readable than ~n, while people want the pre-processor directives inside the comments '$? Forget the readability..

in FAT based OS (Win9x), ~ is part of the real 8.3 long file name. When we use directx 3D file converted using some tools, some long file name or long directory name will be substituted to 8.3 dos name. this would mess up some file or text based file processing.

using "\" doesn't make FB become C/C++ for someone might worried about that. Basic compiler like Rapid-Q use that eficiently. below is the table used in Rapid-Q:

Code:
Escape  Sequence Details
------------------------------------------
\a      Alarm bell
\b      Backspace
\f      Form feed
\n      New line
\r      Carriage return
\t      Horizontal Tab
\v      Vertical Tab
\\      Backslash
\"      Double quote
\###    ### is any number 0..255
\xHH    HH is a hexidecimal value 00..FF

This also helps if some C/C++ header that containing GUID string which is not require change at all. You'll found them in OLE/COM header.

if "\" will conflict with path separator in text string, it will be easily subsituted with "\\". But if "~" conflict with short file name "ABCDEF~1.EXT" in a text content, how do you deal with that?

"\" usage I think not bound byt C/C++ compiler. I've seen them in other language including Web scripting, if I'm not mistaken. It seem like widely used standard escape sequence.

using ON/OFF block is giving you better handling for the source code conversion. so within the block, conversion can be made replacing those escape sequence to hex or whatever character symbol you set within the string. similar like BEGIN ASM...END ASM block. Only particular area will effected by the usage.
Quote:How about this declaration?

declare sub funky(byval type as integer ptr, byval data as single ptr)

The bold words are reserved words but some C headers used those as param names. Would that delare work?

That declare should work just fine. FB/C doesn't utilize the parameter names, but it does utilize the size of the parameters to determine where passed values are placed in memory/on the stack. At least I think.

e.g., in C:
Code:
// Prototype (C equivalent of declare):
// Notice arg names are omitted.
int myfunction(int, float, char *, long);

int myfunction(int a, float b, char * thingy, long x) {
  // Code goes here
}

I think FB works the same way.
\n, \this, \that is sort of a cross-language standard. I mean, It's not just C, but most every language out there, including regular expression.

I wouldn't make up a character like "~" for a metacharacter just to be different.
Version .10 accepts reserved words on function prototypes, old versions didn't -- all versions accept reserved words like "len" as types fields, for example (QB won't).


So will the escape char be "\" or "~"? You guys decide.. i thought people would have some trouble with "\" 'cause the paths.. "~" doesn't work well with IDE's, MED couldn't handle it -- and yeah, i tried to reconfigure it.[/code]
Quote:So will the escape char be "\" or "~"? You guys decide.. i thought people would have some trouble with "\" 'cause the paths.. "~" doesn't work well with IDE's, MED couldn't handle it -- and yeah, i tried to reconfigure it.
I vote for "\".

If there were no OPTION ESCAPE, I would have voted for "~" instead.
It doesn't matter really, other then paths problem, but \\ would take care of any problems with paths. Typically I use / in paths anyway.
I vote "\" as well.

Perhaps you could make some sort of a literal string for doing paths. Like using apostrophes for quotes in perl or a LITERAL keyword (x$ = LITERAL "hi"). Or something like that.
'New little bug....
'Len seems broken now with type's with array's

Option Explicit

'
' ---------------------------------------------------------------------------------
' File...........: mWinsock2.bas
' Author.........: Will Barden
' Created........: 02/05/03
' Modified.......: 09/05/03
' Version........: 1.0
' Website........: http://www.WinsockVB.com
' Contact........: admin@winsockvb.com
'
' Port of necessary Winsock2 declares, consts, types etc.. Will handle straight
' blocking I/O, WSAAsyncSelect and WSAEventSelect under both TCP/IP and UDP/IP.
' Will also handle sending ICMP echos (a ping) to check if a host is alive. Has
' some helper functions at the bottom, prefixed with "vb".
' ------------------------------------------------------------------------------
'
' ------------------------------------------------------------------------------
' Constants.
' ------------------------------------------------------------------------------
'
' Winsock version constants
Const WINSOCK_V1_1 As INTEGER = &H101
Const WINSOCK_V2_2 As INTEGER = &H202
' Length of fields within the WSADATA structure.
Const WSADESCRIPTION_LEN As INTEGER = 256
Const WSASYS_STATUS_LEN As INTEGER = 128
' For socket handle errors, and bas returns from APIs.
Const ERROR_SUCCESS As INTEGER = 0
Const SOCKET_ERROR As INTEGER = -1
Const INVALID_SOCKET As INTEGER = SOCKET_ERROR
' Internet addresses.
Const INADDR_ANY As INTEGER = &H0
Const INADDR_LOOPBACK As INTEGER = &H7F000001
Const INADDR_BROADCAST As INTEGER = &HFFFFFFFF
Const INADDR_NONE As INTEGER = &HFFFFFFFF
' Maximum backlog when calling listen().
Const SOMAXCONN As INTEGER = 5
' Messages send with WSAAsyncSelect().
Const FD_READ As INTEGER = &H1
Const FD_WRITE As INTEGER = &H2
Const FD_OOB As INTEGER = &H4
Const FD_ACCEPT As INTEGER = &H8
Const FD_CONNECT As INTEGER = &H10
Const FD_CLOSE As INTEGER = &H20
' Used with shutdown().
Const SD_RECEIVE As INTEGER = &H0
Const SD_SEND As INTEGER = &H1
Const SD_BOTH As INTEGER = &H2

' Winsock error constants.
Const WSABASEERR As INTEGER = 10000
Const WSAEINTR As INTEGER = WSABASEERR + 4
Const WSAEBADF As INTEGER = WSABASEERR + 9
Const WSAEACCES As INTEGER = WSABASEERR + 13
Const WSAEFAULT As INTEGER = WSABASEERR + 14
Const WSAEINVAL As INTEGER = WSABASEERR + 22
Const WSAEMFILE As INTEGER = WSABASEERR + 24
Const WSAEWOULDBLOCK As INTEGER = WSABASEERR + 35
Const WSAEINPROGRESS As INTEGER = WSABASEERR + 36
Const WSAEALREADY As INTEGER = WSABASEERR + 37
Const WSAENOTSOCK As INTEGER = WSABASEERR + 38
Const WSAEDESTADDRREQ As INTEGER = WSABASEERR + 39
Const WSAEMSGSIZE As INTEGER = WSABASEERR + 40
Const WSAEPROTOTYPE As INTEGER = WSABASEERR + 41
Const WSAENOPROTOOPT As INTEGER = WSABASEERR + 42
Const WSAEPROTONOSUPPORT As INTEGER = WSABASEERR + 43
Const WSAESOCKTNOSUPPORT As INTEGER = WSABASEERR + 44
Const WSAEOPNOTSUPP As INTEGER = WSABASEERR + 45
Const WSAEPFNOSUPPORT As INTEGER = WSABASEERR + 46
Const WSAEAFNOSUPPORT As INTEGER = WSABASEERR + 47
Const WSAEADDRINUSE As INTEGER = WSABASEERR + 48
Const WSAEADDRNOTAVAIL As INTEGER = WSABASEERR + 49
Const WSAENETDOWN As INTEGER = WSABASEERR + 50
Const WSAENETUNREACH As INTEGER = WSABASEERR + 51
Const WSAENETRESET As INTEGER = WSABASEERR + 52
Const WSAECONNABORTED As INTEGER = WSABASEERR + 53
Const WSAECONNRESET As INTEGER = WSABASEERR + 54
Const WSAENOBUFS As INTEGER = WSABASEERR + 55
Const WSAEISCONN As INTEGER = WSABASEERR + 56
Const WSAENOTCONN As INTEGER = WSABASEERR + 57
Const WSAESHUTDOWN As INTEGER = WSABASEERR + 58
Const WSAETOOMANYREFS As INTEGER = WSABASEERR + 59
Const WSAETIMEDOUT As INTEGER = WSABASEERR + 60
Const WSAECONNREFUSED As INTEGER = WSABASEERR + 61
Const WSAELOOP As INTEGER = WSABASEERR + 62
Const WSAENAMETOOLONG As INTEGER = WSABASEERR + 63
Const WSAEHOSTDOWN As INTEGER = WSABASEERR + 64
Const WSAEHOSTUNREACH As INTEGER = WSABASEERR + 65
Const WSAENOTEMPTY As INTEGER = WSABASEERR + 66
Const WSAEPROCLIM As INTEGER = WSABASEERR + 67
Const WSAEUSERS As INTEGER = WSABASEERR + 68
Const WSAEDQUOT As INTEGER = WSABASEERR + 69
Const WSAESTALE As INTEGER = WSABASEERR + 70
Const WSAEREMOTE As INTEGER = WSABASEERR + 71
Const WSASYSNOTREADY As INTEGER = WSABASEERR + 91
Const WSAVERNOTSUPPORTED As INTEGER = WSABASEERR + 92
Const WSANOTINITIALISED As INTEGER = WSABASEERR + 93
Const WSAHOST_NOT_FOUND As INTEGER = WSABASEERR + 1001

'/* WinSock2 specific error codes */
CONST WSAENOMORE as INTEGER = WSABASEERR + 102
CONST WSAECANCELLED AS INTEGER = WSABASEERR + 103
CONST WSAEINVALIDPROCTABLE AS INTEGER = WSABASEERR + 104
CONST WSAEINVALIDPROVIDER AS INTEGER = WSABASEERR + 105
CONST WSAEPROVIDERFAILEDINIT AS INTEGER = WSABASEERR + 106
CONST WSASYSCALLFAILURE AS INTEGER = WSABASEERR + 107
CONST WSASERVICE_NOT_FOUND AS INTEGER = WSABASEERR + 108
CONST WSATYPE_NOT_FOUND AS INTEGER = WSABASEERR + 109
CONST WSA_E_NO_MORE AS INTEGER = WSABASEERR + 110
CONST WSA_E_CANCELLED AS INTEGER = WSABASEERR + 111
CONST WSAEREFUSED AS INTEGER = WSABASEERR + 112

'/* WS QualityofService errors */
CONST WSA_QOS_RECEIVERS AS INTEGER = WSABASEERR + 1005
CONST WSA_QOS_SENDERS AS INTEGER = WSABASEERR + 1006
CONST WSA_QOS_NO_SENDERS AS INTEGER = WSABASEERR + 1007
CONST WSA_QOS_NO_RECEIVERS AS INTEGER = WSABASEERR + 1008
CONST WSA_QOS_REQUEST_CONFIRMED AS INTEGER = WSABASEERR + 1009
CONST WSA_QOS_ADMISSION_FAILURE AS INTEGER = WSABASEERR + 1010
CONST WSA_QOS_POLICY_FAILURE AS INTEGER = WSABASEERR + 1011
CONST WSA_QOS_BAD_STYLE AS INTEGER = WSABASEERR + 1012
CONST WSA_QOS_BAD_OBJECT AS INTEGER = WSABASEERR + 1013
CONST WSA_QOS_TRAFFIC_CTRL_ERROR AS INTEGER = WSABASEERR + 1014
CONST WSA_QOS_GENERIC_ERROR AS INTEGER = WSABASEERR + 1015
CONST WSA_QOS_ESERVICETYPE AS INTEGER = WSABASEERR + 1016
CONST WSA_QOS_EFLOWSPEC AS INTEGER = WSABASEERR + 1017
CONST WSA_QOS_EPROVSPECBUF AS INTEGER = WSABASEERR + 1018
CONST WSA_QOS_EFILTERSTYLE AS INTEGER = WSABASEERR + 1019
CONST WSA_QOS_EFILTERTYPE AS INTEGER = WSABASEERR + 1020
CONST WSA_QOS_EFILTERCOUNT AS INTEGER = WSABASEERR + 1021
CONST WSA_QOS_EOBJLENGTH AS INTEGER = WSABASEERR + 1022
CONST WSA_QOS_EFLOWCOUNT AS INTEGER = WSABASEERR + 1023
CONST WSA_QOS_EUNKOWNPSOBJ AS INTEGER = WSABASEERR + 1024
CONST WSA_QOS_EPOLICYOBJ AS INTEGER = WSABASEERR + 1025
CONST WSA_QOS_EFLOWDESC AS INTEGER = WSABASEERR + 1026
CONST WSA_QOS_EPSFLOWSPEC AS INTEGER = WSABASEERR + 1027
CONST WSA_QOS_EPSFILTERSPEC AS INTEGER = WSABASEERR + 1028
CONST WSA_QOS_ESDMODEOBJ AS INTEGER = WSABASEERR + 1029
CONST WSA_QOS_ESHAPERATEOBJ AS INTEGER = WSABASEERR + 1030
CONST WSA_QOS_RESERVED_PETYPE AS INTEGER = WSABASEERR + 1031
' Winsock 2 extensions.
Const WSA_IO_PENDING As INTEGER = 997
Const WSA_IO_INCOMPLETE As INTEGER = 996
Const WSA_INVALID_HANDLE As INTEGER = 6
Const WSA_INVALID_PARAMETER As INTEGER = 87
Const WSA_NOT_ENOUGH_MEMORY As INTEGER = 8
Const WSA_OPERATION_ABORTED As INTEGER = 995

Const WSA_WAIT_FAILED As INTEGER = -1
Const WSA_WAIT_EVENT_0 As INTEGER = 0
Const WSA_WAIT_IO_COMPLETION As INTEGER = &HC0
Const WSA_WAIT_TIMEOUT As INTEGER = &H102
Const WSA_INFINITE As INTEGER = -1

' Max size of event handle array when calling WSAWaitForMultipleEvents().
Const WSA_MAXIMUM_WAIT_EVENTS As INTEGER = 64
'
' Size of WSANETWORKEVENTS.iErrorCode[] array.
Const FD_MAX_EVENTS As INTEGER = 10
'
' Used to refer to particular elements of the WSANETWORKEVENTS.iErrorCodes[].
Const FD_READ_BIT As INTEGER = 0
Const FD_WRITE_BIT As INTEGER = 1
Const FD_OOB_BIT As INTEGER = 2
Const FD_ACCEPT_BIT As INTEGER = 3
Const FD_CONNECT_BIT As INTEGER = 4
Const FD_CLOSE_BIT As INTEGER = 5
Const FD_QOS_BIT As INTEGER = 6
Const FD_GROUP_QOS_BIT As INTEGER = 7
Const FD_ROUTING_INTERFACE_CHANGE_BIT As INTEGER = 8
Const FD_ADDRESS_LIST_CHANGE_BIT As INTEGER = 9
'
' ------------------------------------------------------------------------------
' Enumerations.
' ------------------------------------------------------------------------------
'
' Used with socket().
Enum Protocols
IPPROTO_IP = 0
IPPROTO_ICMP = 1
IPPROTO_GGP = 2
IPPROTO_TCP = 6
IPPROTO_PUP = 12
IPPROTO_UDP = 17
IPPROTO_IDP = 22
IPPROTO_ND = 77
IPPROTO_RAW = 255
IPPROTO_MAX = 256
end Enum
'
' Used with socket().
Enum SocketTypes
SOCK_STREAM = 1
SOCK_DGRAM = 2
SOCK_RAW = 3
SOCK_RDM = 4
SOCK_SEQPACKET = 5
end Enum
'
' Used with socket().
Enum AddressFamilies
AF_UNSPEC = 0
AF_UNIX = 1
AF_INET = 2
AF_IMPLINK = 3
AF_PUP = 4
AF_CHAOS = 5
AF_NS = 6
AF_IPX = 6
AF_ISO = 7
AF_OSI = 7
AF_ECMA = 8
AF_DATAKIT = 9
AF_CCITT = 10
AF_SNA = 11
AF_DECNET = 12
AF_DLI = 13
AF_LAT = 14
AF_HYLINK = 15
AF_APPLETALK = 16
AF_NETBIOS = 17
AF_MAX = 18
end Enum
'
' ------------------------------------------------------------------------------
' Types.
' ------------------------------------------------------------------------------
'
' To initialize Winsock.
Type WSADATA Field = 1
wVersion As SHORT
wHighVersion As SHORT
szDescription(WSADESCRIPTION_LEN + 1) As Byte
szSystemstatus(WSASYS_STATUS_LEN + 1) As Byte
iMaxSockets As SHORT
iMaxUpdDg As SHORT
lpVendorInfo As INTEGER
End Type
'
' Basic IPv4 addressing structures.
Type in_addr field = 1
s_addr As INTEGER
End Type
'
Type sockaddr_in field = 1
sin_family As SHORT
sin_port As SHORT
sin_addr As in_addr
sin_zero(0 to 7) As Byte
End Type
'
' Used with name resolution functions.
Type hostent Field = 1
h_name As INTEGER
h_aliases As INTEGER
h_addrtype As SHORT
h_length As SHORT
h_addr_list As INTEGER
End Type
'
'
' Used with WSAEnumNetworkEvents().
Type WSANETWORKEVENTS Field = 1
lNetworkEvents As INTEGER
iErrorCode(FD_MAX_EVENTS) As SHORT
End Type
'
' Used when sending ICMP echos (pings).
Type IP_OPTION_INFORMATION Field = 1
TTL As Byte
Tos As Byte
Flags As Byte
OptionsSize As INTEGER
OptionsData As String * 128
End Type
'
'
Type IP_ECHO_REPLY Field = 1
Address(0 To 3) As Byte
Status As INTEGER
RoundTripTime As INTEGER
DataSize As SHORT
Reserved As SHORT
data As INTEGER
Options As IP_OPTION_INFORMATION
End Type
'
' ------------------------------------------------------------------------------
' APIs.
' ------------------------------------------------------------------------------
'
' DLL handling functions.
Declare Function WSAStartup Lib "ws2_32" (ByVal wVersionRequested As SHORT, ByRef lpWSAData As WSADATA) As INTEGER
Declare Function WSACleanup Lib "ws2_32" () As INTEGER
Declare Function WSAGetLastError Lib "ws2_32" () As INTEGER
Declare Function WSASetLastError Lib "ws2_32" (ByVal err_fb As INTEGER) As INTEGER
'
' Resolution functions.
Declare Function getpeername Lib "ws2_32" (ByVal s As INTEGER, ByRef name As sockaddr_in, ByRef namelen As INTEGER) As INTEGER
Declare Function getsockname Lib "ws2_32" (ByVal s As INTEGER, ByRef name As sockaddr_in, ByRef namelen As INTEGER) As INTEGER
Declare Function gethostbyname Lib "ws2_32" (ByVal host_name As String) As INTEGER
Declare Function gethostbyaddr Lib "ws2_32" (haddr As INTEGER, ByVal hnlen As INTEGER, ByVal addrtype As INTEGER) As INTEGER

'
' Conversion functions.
Declare Function inet_addr Lib "ws2_32" (ByVal cp As String) As INTEGER
Declare Function inet_ntoa Lib "ws2_32" (ByVal laddr As INTEGER) As INTEGER
Declare Function htonl Lib "ws2_32" (ByVal hostlong As INTEGER) As INTEGER
Declare Function ntohl Lib "ws2_32" (ByVal netlong As INTEGER) As INTEGER
Declare Function htons Lib "ws2_32" (ByVal hostshort As INTEGER) As SHORT
Declare Function ntohs Lib "ws2_32" (ByVal netshort As SHORT) As SHORT
'
' Socket functions.
Declare Function socket Lib "ws2_32" (ByVal af As AddressFamilies, ByVal stype As SocketTypes, ByVal protocol As Protocols) As INTEGER
'
Declare Function bind Lib "ws2_32" (ByVal s As INTEGER, ByRef name As sockaddr_in, ByVal namelen As INTEGER) As INTEGER
Declare Function listen Lib "ws2_32" (ByVal s As INTEGER, ByVal backlog As INTEGER) As INTEGER
Declare Function accept Lib "ws2_32" (ByVal s As INTEGER, ByRef addr As sockaddr_in, ByRef addrlen As INTEGER) As INTEGER
Declare Function connect Lib "ws2_32" (ByVal s As INTEGER, ByRef name As sockaddr_in, ByVal namelen As INTEGER) As INTEGER

'
Declare Function send Lib "ws2_32" (ByVal s As INTEGER, ByRef buf As Byte, ByVal datalen As INTEGER, ByVal Flags As INTEGER) As INTEGER
Declare Function sendto Lib "ws2_32" (ByVal s As INTEGER, ByRef buf As Byte, ByVal datalen As INTEGER, ByVal Flags As INTEGER, ByRef toaddr As sockaddr_in, ByVal tolen As INTEGER) As INTEGER
Declare Function recv Lib "ws2_32" (ByVal s As INTEGER, ByRef buf As Byte, ByVal datalen As INTEGER, ByVal Flags As INTEGER) As INTEGER
Declare Function recvfrom Lib "ws2_32" (ByVal s As INTEGER, ByRef buf As Byte, ByVal datalen As INTEGER, ByVal Flags As INTEGER, ByRef fromaddr As sockaddr_in, ByRef fromlen As INTEGER) As INTEGER
'
Declare Function shutdown Lib "ws2_32" (ByVal s As INTEGER, ByVal how As INTEGER) As INTEGER
Declare Function closesocket Lib "ws2_32" (ByVal s As INTEGER) As INTEGER
'
' I/O model functions.
Declare Function WSAAsyncSelect Lib "ws2_32" (ByVal s As INTEGER, ByVal hwnd As INTEGER, ByVal wMsg As SHORT, ByVal lEvent As INTEGER) As INTEGER
'
Declare Function WSACreateEvent Lib "ws2_32" () As INTEGER
Declare Function WSAEventSelect Lib "ws2_32" (ByVal s As INTEGER, ByVal hEventObject As INTEGER, ByVal lNetworkEvents As INTEGER) As INTEGER
Declare Function WSAResetEvent Lib "ws2_32" (ByVal hEvent As INTEGER) As INTEGER
Declare Function WSASetEvent Lib "ws2_32" (ByVal hEvent As INTEGER) As INTEGER
Declare Function WSACloseEvent Lib "ws2_32" (ByVal hEvent As INTEGER) As INTEGER
Declare Function WSAWaitForMultipleEvents Lib "ws2_32" (ByVal cEvents As INTEGER, ByRef lphEvents As INTEGER, ByVal fWaitAll As SHORT, ByVal dwTimeout As INTEGER, ByVal fAlertable As SHORT) As INTEGER
Declare Function WSAEnumNetworkEvents Lib "ws2_32" (ByVal s As INTEGER, ByVal hEvent As INTEGER, ByRef lpNetworkEvents As WSANETWORKEVENTS) As INTEGER
'
' ICMP functions.
'Declare Function IcmpCreateFile Lib "icmp.dll" () As INTEGER
'Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As INTEGER) As SHORT
'Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As INTEGER, ByVal DestAddress As INTEGER, ByVal RequestData As String, ByVal RequestSize As SHORT, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As INTEGER, ByVal TimeOut As INTEGER) As SHORT
'
' NEW STUFF THAT I ADDED (ShadowWolf)
Declare Function ioctlsocket Lib "ws2_32" (Byval s as integer , Byval cmd as integer, Byref cmpP) as INTEGER
Declare Function getsockopt Lib "ws2_32" (Byval s as INTEGER , Byval Level as integer ,Byval optname as INTEGER,ByRef Optval as string,Byref optlen as integer) as integer
Declare Function setsockopt Lib "ws2_32" (Byval s as integer, Byval level as integer ,Byval optname as integer,ByRef Optval as string,Byval optlen as integer ) as INTEGER


' Other general Win32 APIs.
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As INTEGER)


Dim hSocket As integer
Dim udtAddr As sockaddr_in
Dim udtData As WSADATA
Dim lngRet As integer

lngRet = WSAStartup(WINSOCK_V2_2, udtData)

hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
If (hSocket <> INVALID_SOCKET) Then

udtAddr.sin_family = AF_INET
udtAddr.sin_addr.s_addr = inet_addr("64.233.167.99")
udtAddr.sin_port = htons(80)

print connect(hSocket, udtAddr, Len(udtAddr))
print len(udtaddr)

print "socket() failed with error: " + str$(WSAGetLastError())
End If
sleep
lngRet = WSACleanup()

' anyways len reporting back 9 when it should be 16byte's
' works fine if i go and pass the corrected amount of byte's
' Oh ya Nexinarus worked out the problem i spent 2 hours
' wondering why it worked on .9 and not .10 Smile
Yeah, it was reported on some posts below:

http://forum.qbasicnews.com/viewtopic.php?p=89263#89263
http://forum.qbasicnews.com/viewtopic.php?p=89275#89275

Quote:FB returning different values is actually a bug, i added a proc to calculate the real-len of UDT (w/o padding) to speed up SWAP and user type assignament s(so the padding is not swapped/copied), and LEN() was calling the same code.. fixed.


Sorry... optimizations kill..
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30