Archive.
popstatic
Messages : 83 Inscription : lun. 20/sept./2004 18:21
Localisation : derriere toi fais gaffe!
Message
par popstatic » lun. 06/févr./2006 3:56
Bonsoir à tous, petit dysfonctionnement que j'ai put constater, à vous de me dire si c'est une erreur de ma part ou un bug:
La compilation de ce code:
Code : Tout sélectionner
OpenConsole()
#INTERNET_CONNECTION_CONFIGURED =$40
#INTERNET_CONNECTION_LAN = $02
#INTERNET_CONNECTION_MODEM =$1
#INTERNET_CONNECTION_MODEM_BUSY =$8
#INTERNET_CONNECTION_OFFLINE =$20
#INTERNET_CONNECTION_PROXY =$4
#INTERNET_RAS_INSTALLED =$10
Procedure.l CheckInternetConnection()
Retour.l
InternetGetConnectedState_(@Retour, 0)
Select Retour
Case #INTERNET_CONNECTION_CONFIGURED
PrintN("#INTERNET_CONNECTION_CONFIGURED")
Case #INTERNET_CONNECTION_LAN
PrintN("#INTERNET_CONNECTION_LAN")
Case #INTERNET_CONNECTION_MODEM
PrintN("#INTERNET_CONNECTION_MODEM")
Case #INTERNET_CONNECTION_MODEM_BUSY
PrintN("#INTERNET_CONNECTION_MODEM_BUSY")
Case #INTERNET_CONNECTION_OFFLINE
PrintN("#INTERNET_CONNECTION_OFFLINE")
Case #INTERNET_CONNECTION_PROXY
PrintN("#INTERNET_CONNECTION_PROXY ")
Case #INTERNET_RAS_INSTALLED
PrintN("#INTERNET_RAS_INSTALLED ")
EndSelect
PrintN("Valeur de retour: "+Str(Retour))
EndProcedure
PrintN("Determination de La configuration reseau...")
CreateThread(@CheckInternetConnection(),1)
Input()
Avec l'option Threadsafe produit un executable qui va buguer (invalid memory access).
Il ne bugue pas s'il n'est pas compilé avec cette option!
je m'interroge donc....
Asus bien? asus tres bien!
LeCyb
Messages : 273 Inscription : dim. 26/déc./2004 20:49
Message
par LeCyb » lun. 06/févr./2006 21:24
Dans la doc (3.94) tu verras que CreateThread prends deux paramètres, le premier c'est l'adresse de la procédure et le second c'est l'argument de la procédure:
Code : Tout sélectionner
OpenConsole()
#INTERNET_CONNECTION_CONFIGURED =$40
#INTERNET_CONNECTION_LAN = $02
#INTERNET_CONNECTION_MODEM =$1
#INTERNET_CONNECTION_MODEM_BUSY =$8
#INTERNET_CONNECTION_OFFLINE =$20
#INTERNET_CONNECTION_PROXY =$4
#INTERNET_RAS_INSTALLED =$10
Procedure.l CheckInternetConnection(valeur.l) ; <--- ICI
Retour.l
InternetGetConnectedState_(@Retour, 0)
Select Retour
Case #INTERNET_CONNECTION_CONFIGURED
PrintN("#INTERNET_CONNECTION_CONFIGURED")
Case #INTERNET_CONNECTION_LAN
PrintN("#INTERNET_CONNECTION_LAN")
Case #INTERNET_CONNECTION_MODEM
PrintN("#INTERNET_CONNECTION_MODEM")
Case #INTERNET_CONNECTION_MODEM_BUSY
PrintN("#INTERNET_CONNECTION_MODEM_BUSY")
Case #INTERNET_CONNECTION_OFFLINE
PrintN("#INTERNET_CONNECTION_OFFLINE")
Case #INTERNET_CONNECTION_PROXY
PrintN("#INTERNET_CONNECTION_PROXY ")
Case #INTERNET_RAS_INSTALLED
PrintN("#INTERNET_RAS_INSTALLED ")
EndSelect
PrintN("Valeur de retour: "+Str(Retour))
EndProcedure
PrintN("Determination de La configuration reseau...")
CreateThread(@CheckInternetConnection(),1)
Input()
Il faut donc déclarer ta procédure avec l'argument.
Maintenant p-ê que le compilateur devrait vérifier le nombre d'arguments pour avoir un message d'erreur plus parlant.
Vive le thread-safe !