Este codigo fuente en 16 bits funciona perfectamente, en 32 bits cuando ejecuta el MemCopy (RtlMoveMemory de Kernel32.dll) da un casque bestial y me dice:
Programa.exe a generado errores y sera cerrado por Windows
Debe reiniciar el programa
Se creara un registro de error
¿ Que puede ser ?
FWH 7.5 y su correspondiente xHarbour.
Programa.exe a generado errores y sera cerrado por Windows
Debe reiniciar el programa
Se creara un registro de error
¿ Que puede ser ?
function Main()
public OneOpt:=space(4)
public OneOptL:=1
STRUCT WSAData
MEMBER wVersion AS WORD
MEMBER wHighVer AS WORD
MEMBER szDescrip AS STRING LEN WSADESCRIPTION_LEN
MEMBER szSystem AS STRING LEN WSASYS_STATUS_LEN
MEMBER iMaxSock AS WORD
MEMBER iMaxUdpDg AS WORD
MEMBER lpVendor AS LONG
ENDSTRUCT
cTemp:=WSAData:cBuffer
rc:=WSAStartup(0x101,@cTemp)
WSAData:cBuffer:=cTemp
if rc != 0
MsgAlert("Error en WSASTARTUP"+chr(13)+;
"NO SE PUEDE CONTINUAR"+chr(13)+;
"Error numero "+alltrim(str(rc)))
return nil
endif
SocketNum:=socket(AF_INET,SOCK_DGRAM,IPPROTO_IP)
if SocketNum<0
MsgAlert("Error en SOCKET")
SocketNum:=-1
return nil
endif
MemCopy(OneOpt,OneOptL,Len(OneOpt)) // Casque bestial
rc:=setsockopt(SocketNum,SOL_SOCKET,SO_REUSEADDR,OneOpt,Len(OneOpt))
if rc<>0
MsgAlert("Fallo en SERSOCKOPT-1")
SocketNum:=-1
return nil
endif
etc...
return nil
DLL32 FUNCTION MemCopy(dest AS LPSTR, src AS LPSTR, cb AS LONG ) AS VOID PASCAL FROM "RtlMoveMemory" LIB "Kernel32.dll"FWH 7.5 y su correspondiente xHarbour.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013