scortek
Messages postés61Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 1 août 2007
-
29 mars 2007 à 12:43
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 2010
-
29 mars 2007 à 15:46
Je récupère des données aléatoires dans une variable buffer.
Je la déclare en Dim Buffer As String * 1024, mais quand je ne reçois rien, dans ce code suivant qui me permet de rechercher un mot dans une autre chaine, ça me fait une erreur du type run-time error 5 :
Public Function word(ByVal answer As String, ByVal a As String, ByVal b As String) As String
P = InStr(answer, a)
v = Mid(answer, P + Len(a))
P = InStr(v, b)
word = Trim(Mid(v, 1, P - 1)) 'ici l'erreur
End Function
answer est vide : "1024 petits carrés"
Comment dire qu'une variable est vide ?
Aussi, dans la déclaration au départ : *1024, si je ne l'a met pas, ça plante.
Après je suis obligé de tronquer ce qui est lu.
Ya pas un moment de déclarer la longueur du buffer de ce qui est effectivement reçu (sachant que la réponse reçue se termine toujours par un vbCrLf), et pas d'imposer au départ 1024 ou autre chose ?
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 29 mars 2007 à 14:09
Violent Ken
Salut,
-"1024 petits carrés" ==> en déclarant en String*1024, tu forces la string à faire obligatoirement 1024 de longueur. Par défaut, ce sont des bytes &H0 (représentés par des carrés car inaffichables) qui constituent la string.
- pour virer les "petits carrés inutiles" de ta string,
Dim
sBuf As String * 1024
Dim s2 As String
s2 = Left$(sBuf, InStr(sBuf, vbNullChar) - 1),
scortek
Messages postés61Date d'inscriptionmardi 4 mai 2004StatutMembreDernière intervention 1 août 2007 29 mars 2007 à 14:41
s2 = Left$(sBuf, InStr(sBuf, vbNullChar) - 1 ) enlève les "petits carrés", mais laisse du vide (ou des espaces ?), donc il y reste toujours 1024 caractères...
p = InStr(v, b)
If p Then word = Trim(Mid(v, 1, p - 1)) 'ici l'erreur
en rajoutant if et then, ça ne change rien, je ne comprend pas où tu veux en venir ?