pd function

Le
Jingle
bonjour,

j'ai un probleme avec une fonction

la voici

Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output = Chr("&H& & azert)
.output = Chr(Hex(qsdfg))
End With
timeout = timer+3
nbcar=0
Do
Doevents
nbcar=MSComm1.InBufferCount
Loop Until nbcar >=0
reponse = MSComm1.Input
loop until reponse = "d"
End function

voila
des que je me serts de cette fonction VB veut une galt.
envoit (variable1, variable2) 'mes variable sont bien de
type String.


Je pense que mon problme vient du p-tre du faite que je
nouvre pas et ne ferme pas mon port com dans la fonction.

Par je l'ouvre bien avant d'appeler cette fonction et je
le referme bien.

Merci de votre aide
Vos réponses
Trier par : date / pertinence
Jean-Marc
Le #13295881
"Jingle" news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output = Chr("&H& & azert)
.output = Chr(Hex(qsdfg))
End With
timeout = timer+3
nbcar=0
Do
Doevents
nbcar=MSComm1.InBufferCount
Loop Until nbcar >=0
reponse = MSComm1.Input
loop until reponse = "d"
End function



voila
des que je me serts de cette fonction VB veut une égalté.
envoit (variable1, variable2) 'mes variable sont bien de
type String.



Hello,

1) que veux tu dire par VB veut une égalité ?
2) Que doit retourner ta fonction "envoit" ?

JM
Jingle
Le #13295871
>-----Message d'origine-----
"Jingle"

message de
news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output = Chr("&H& & azert)
.output = Chr(Hex(qsdfg))
End With
timeout = timer+3
nbcar=0
Do
Doevents
nbcar=MSComm1.InBufferCount
Loop Until nbcar >=0
reponse = MSComm1.Input
loop until reponse = "d"
End function



voila
des que je me serts de cette fonction VB veut une égalté.
envoit (variable1, variable2) 'mes variable sont bien de
type String.



Hello,

1) que veux tu dire par VB veut une égalité ?



lorsque je me sert de ma fonction
envoit (variable1, variable2) il ne l'accepte que si je
mets
envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
donc a cause de cela a la fin j'ai des erreurs

2) Que doit retourner ta fonction "envoit" ?


ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code
puisque je doit envoyer une centaine de caracteres par le
port serie de cette meme manière

je veux juste que vb m'envoye les deux variables de ma
fonction sur mon port com. je n'est besoin d'aucune valeur
en retour

merci de ton aide

JM


.



François Picalausa
Le #13295861
Bonjour/soir,

ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code



Dans ce cas, utilise un Sub:
Sub envoit(var1 as string, var2 as string)

End Sub

Pour l'appel:
Call Sub("a","b")
ou
Sub "a","b"

A noter que l'appel d'un sub sans Call n'admet jamais de parenthèse. De la
même manière, quand tu demande à VB
MaFonction("a","b")
il pense qu'il doit retrouver une valeur mais il ne sait pas à quelle fin =>
erreur.
Il est aussi possible d'appeller une fonction sans parenthèse ou avec un
Call, mais en VB, une focntion qui ne renvoie rien est un Sub.
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"Jingle" news:024701c3cf1f$d70f3620$
-----Message d'origine-----
"Jingle" news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
<snip>



1) que veux tu dire par VB veut une égalité ?



lorsque je me sert de ma fonction
envoit (variable1, variable2) il ne l'accepte que si je
mets
envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
donc a cause de cela a la fin j'ai des erreurs

2) Que doit retourner ta fonction "envoit" ?


ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code
puisque je doit envoyer une centaine de caracteres par le
port serie de cette meme manière



Patrice Henrio
Le #12881911
J'ai été confronté à ce type de problème lié à ma formation en pascal et
quelques autres langages (LISP en particulier).
Je n'ai compris qu'après plusieurs mois de VB que les parenthèses ne sont
pas obligatoires.
Cependant pour moi une fonction qui ne renvoie rien ne se conçoit que dans
un langage n'acceptant que des fonctions : le sfameux "effets de bord" des
fonctions LISP.
Pour mieux expliquer ce qui se passe ne VB l'exemple idéal est MsgBox

MsgBox "OK", vbOKOnly
affichera une boîte de dialogue et attendra que l'utilisateur frappe sur
entrée ou clique sur le bouton "OK"

Par contre

MsgBox("OK",vbOKOnly) renverra une erreur car cette écriture considère bien
qu'au retour de MsgBox uen résultat soit stocké quelque part.
La bonne écriture est
Dim REP as string
REP=MsgBox("OK",vbOKOnly)


"François Picalausa" news:%
Bonjour/soir,

> ma fonction envoit ne doit rien retourner elle me sert
> juste a racourcir mon code

Dans ce cas, utilise un Sub:
Sub envoit(var1 as string, var2 as string)

End Sub

Pour l'appel:
Call Sub("a","b")
ou
Sub "a","b"

A noter que l'appel d'un sub sans Call n'admet jamais de parenthèse. De la
même manière, quand tu demande à VB
MaFonction("a","b")
il pense qu'il doit retrouver une valeur mais il ne sait pas à quelle fin


=>
erreur.
Il est aussi possible d'appeller une fonction sans parenthèse ou avec un
Call, mais en VB, une focntion qui ne renvoie rien est un Sub.
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"Jingle" news:024701c3cf1f$d70f3620$
>> -----Message d'origine-----
>> "Jingle" >> news:019401c3cf0e$3c8e8210$
>>> bonjour,
>>> j'ai un probleme avec une fonction
>>> la voici
>>> <snip>
>>
>> 1) que veux tu dire par VB veut une égalité ?
>
> lorsque je me sert de ma fonction
> envoit (variable1, variable2) il ne l'accepte que si je
> mets
> envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
> donc a cause de cela a la fin j'ai des erreurs
>
>> 2) Que doit retourner ta fonction "envoit" ?
> ma fonction envoit ne doit rien retourner elle me sert
> juste a racourcir mon code
> puisque je doit envoyer une centaine de caracteres par le
> port serie de cette meme manière
>




François Picalausa
Le #12881891
Bonjour/soir,

"Patrice Henrio" message de news:%
La bonne écriture est
Dim REP as string
REP=MsgBox("OK",vbOKOnly)



Mis à part que REP devrait être As vbMsgBoxResult au lieu de As String ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Patrice Henrio
Le #13295371
Tout à fait d'accord, même si cela marche quand même surtout si on n'a pas
besoin de Rep. Par contre en cas de besoin, avec Rep en string, le retour
sera un nombre transformé en chaîne de caractères.
"François Picalausa" news:%
Bonjour/soir,

"Patrice Henrio" message de news:%
> La bonne écriture est
> Dim REP as string
> REP=MsgBox("OK",vbOKOnly)

Mis à part que REP devrait être As vbMsgBoxResult au lieu de As String ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com




Publicité
Poster une réponse
Anonyme