Function renvoie un string, mais ajoute un espace...

Résolu
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Salut à tous!

J'ai un problème avec une fonction qui me retourne un string (mais ne
le repasse pas). Pour un projet en Access 2003, je dois décoder le
contenu d'une mémoire. Ce contenu est dans une table dont les colonnes
s'appellent "Byte0", "Byte1", "Byte2", ..., "ByteE", "ByteF" J'ai un
Recordset "rsData" sur cette table.


J'ai fait une procédure qui clacule et renvoie le nom du Byte suivant
(exemple si c'est "Byte8", elle va retourner "Byte9"). Le hic, c'est
que la fonction ajoute un espace à la fin (j'obtiens "Byte9 ") et ça
marche pas pour la suite. Je vous mets un bout de mon code ci-dessous:

'Initialize Byte variable to point first byte in each new EEPROM page read
If bytRecord = 1 Then

   strLSB = "ByteF"
End If
'Get and convert Date/Time of flight LEG beginning

strLSB = GetNextByte(strLSB)

strMSB = GetNextByte(strLSB)

strTimeStart = GetTimeRecord(rsData(strLSB), rsData(strMSB)) 'i.e. "10:25:15"

strDateStart = GetDateRecord(rsData(strLSB), rsData(strMSB)) 'i.e. "07.08.2006"
'Get Flight Phase number

strLSB = GetNextByte(strMSB)

bytFlightPhase = rsData(strLSB) 'Range is 1-10


Je sais que je pourrais faire un trim() de ma variable, mais mon code
est long et j'appelle cette fonction à beaucoup d'endroits. Je me
demandais s'il y a pas une option quelque part pour que la procédure
n'ajoute pas d'espace? Surtout que dans la procédure, j'ai pas
d'espaces, c'est vraiment au moment où je reviens dans la procédure qui
appelle que l'espace apparaît!


Un si long post pour un si petit problème me direz-vous :-) Ben au moins c'est clair!

Merci d'avance pour vos réponses et bonne continuation!

Sifflet

10 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Et les variables strLSB et strMSB seraient pas déclarées de longueur fixe à 6 caractères par hasard

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Peu etre pourrais tu mettre le code de GetNextByte (si il n'est pas top secret).
As tu essayer de mettre le Trim juste avant le retour de la chaine de caractere dans GetNextByte du style

GetNextByte = Trim(VariableTampon)

@+, Julien
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Effectivement! Mais bon, ya vraiment rien d'exeptionnel :-)

En fait c'est Access XP que j'utilise, mais ça ne change rien à mon avis...

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'' This procedure get the next byte number to use in next step for translation

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Function GetNextByte(strActualByte As String) As String

   Dim strTest As String

   strTest = Mid(strActualByte, 5, 1) ' Get only byte number (0-F)

  

   If (IsNumeric(strTest) And strTest <> "9") Then   'if Byte 0-8..

      GetNextByte = "Byte" & (CInt(strTest) + 1)   'add 1 to byte number

   Else

      Select CaseTrim(strActualByte) 'J'ai ajouté Trim ici, mais ça sert un peu à rien...

         Case "Byte9"

            GetNextByte = "ByteA"

         Case "ByteA"

            GetNextByte = "ByteB"

         Case "ByteB"

            GetNextByte = "ByteC"

         Case "ByteC"

            GetNextByte = "ByteD"

         Case "ByteD"

            GetNextByte = "ByteE"
         Case "ByteE"

            GetNextByte = "ByteF"
         Case "ByteF"

            GetNextByte = "Byte0"
         Case Else

            GetNextByte = "Error"
      End Select

   End If

End Function
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

En fait, j'avais pas mis la procédre, parce qu'elle fonctionne super bien! et n'ajoute pas d'espace!


C'est seulement quand je reçoit la valeur dans la procédure appelante !
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re
>826618 sifflet_ : Effectivement vu comme çà!
> =333139 casy: Bien vu.

@+, Julien
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Pu***n!

Bien vu Casy! Effectivement, c'est le cas, j'ai enlevé la longueur fixe
et ça marche! J'ai voulu vite mettre les longueurs fixe hier soir avant
de partir et voilà, j'ai perdu 1H ce matin à comprendre pourquoi ça
marchait plus...


Merci de votre aide expérimentée et d'une grande rapidité!

Bonne journée!
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Je t'offrirais bien le café, mais je pense que t'es un peu loin :-)
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Tout dépend dans quel coin tu es, mais je dois etre un epu loin oui effectivement.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Je bosse à Fribourg, en Suisse
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
C'est loin tout ça

Moi je suis dans le sud-ouest de la france, 1h de la mer, 1h de la montagne, le paradis sur terre.

Sevyc64  (alias Casy)<hr align="center" size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #