Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Manipulation Trim et les Chaînes ???

2 réponses
Avatar
le_troll
Bonjour,

Problème pour calculer la longueur du contenu du chaîne fixe, soit:
chaine as string * 100 'string longueur fixe = 100 octets
cheineX as string ' string longueur indéterminée
--------------------------
Ensuite, si je fais:
chaine = "123"
len(chaîne), j'aurais 100 de longueur car ma chaîne est "as string * 100"
Donc je ne pourrais pas avoir la longueur du contenu, sauf si elle est
pleine
--------------------------
Donc, je voudrais savoir quelle est l'opération correcte des deux qui
suivent pour connaître la longueur de la chaîne:

-1- chaineX = Trim(chaine) ' ==== 400 OU 3 ???
OU
-2- chaineX = chaine ' ======== 400
chaineX=Trilm(chaineX) ' === 3

En fait vous l'aurez compris, le problème est de savoir si le Trim (sur une
chaîne de longueur fixe que l'on transfert dans une chaîne à longueur
variable, pour en connaître la taille) va laisser d'abord faire le transfert
puis retasser (je peux le faire tout seul, mais c'est le mécanisme de
fonctionnement qui m'intéresse, si vous avez des infos générales pour tout
ce qui s'applique à ce principe?), dans ce cas nous aurons la longueur du
contenu, OU, si le Trim va tenter d'abord de retasser la chaîne de longueur
fixe, et ne le pouvant pas, le Len va renvoyer le contenant ???
--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------

2 réponses

Avatar
ng
Salut,

soit: chaine as string * 100 'string longueur fixe = 100 octets


Attention, cela déclare une chaine de 100 caractères et non de 100 octets !
En VB, les chaine sont en Unicode donc 2 octets par caractères ! On a donc
LenB(MaChaine)=2*Len(MaChaine).

-1- chaineX = Trim(chaine) ' ==== 400 OU 3 ???
OU
-2- chaineX = chaine ' ======== 400
chaineX=Trilm(chaineX) ' === 3


Juste une remarque, je te déconseille l'utilisation de la fonction Trim(),
préfère utiliser Trim$() qui travaille directement en string. Cela vaut pour
la plupart des fonctions de traitement de chaine.

Comme ta chaine est fixe, il faut déjà la trimer puis faire un len :

Dim strMaChaine As String * 100
strMaChaine = "salut !"
MsgBox Len(Trim$(strMaChaine))

Si tu veux passer par une variable intermédiaire non fixe, ce sera la même
chose :

Dim strMaChaine As String * 100, strChaine As String
strMaChaine = "salut !"
strChaine = Trim$(strMaChaine)
MsgBox Len(strChaine)

En fait vous l'aurez compris, le problème est de savoir si le Trim
(sur une chaîne de longueur fixe que l'on transfert dans une chaîne à
longueur variable, pour en connaître la taille) va laisser d'abord
faire le transfert puis retasser (je peux le faire tout seul, mais
c'est le mécanisme de fonctionnement qui m'intéresse, si vous avez
des infos générales pour tout ce qui s'applique à ce principe?), dans
ce cas nous aurons la longueur du contenu, OU, si le Trim va tenter
d'abord de retasser la chaîne de longueur fixe, et ne le pouvant pas,
le Len va renvoyer le contenant ???



Dans le code :

Dim strMaChaine As String * 100
strMaChaine = "salut !"
MsgBox Len(Trim$(strMaChaine))

La chaine strMaChaine va être trimée en mémoire, dans un autre espace, pour
être renvoyée à la fonction Len(). Pour tenter de trimer la chaine sur elle
même, on ferait ceci :
strMaChaine = Trim$(strMaChaine)
Mais ca en changerait rien.

Dans le code :

Dim strMaChaine As String * 100, strChaine As String
strMaChaine = "salut !"
strChaine = Trim$(strMaChaine)
MsgBox Len(strChaine)

La chaine strMaChaine va être trimée par la fonction puis stockée dans
strChaine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
Avatar
le_troll
Merci camarade :o)

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"ng" a écrit dans le message de news:

Salut,

> soit: chaine as string * 100 'string longueur fixe = 100 octets
Attention, cela déclare une chaine de 100 caractères et non de 100 octets


!
En VB, les chaine sont en Unicode donc 2 octets par caractères ! On a donc
LenB(MaChaine)=2*Len(MaChaine).

> -1- chaineX = Trim(chaine) ' ==== 400 OU 3 ???
> OU
> -2- chaineX = chaine ' ======== 400
> chaineX=Trilm(chaineX) ' === 3
Juste une remarque, je te déconseille l'utilisation de la fonction Trim(),
préfère utiliser Trim$() qui travaille directement en string. Cela vaut


pour
la plupart des fonctions de traitement de chaine.

Comme ta chaine est fixe, il faut déjà la trimer puis faire un len :

Dim strMaChaine As String * 100
strMaChaine = "salut !"
MsgBox Len(Trim$(strMaChaine))

Si tu veux passer par une variable intermédiaire non fixe, ce sera la même
chose :

Dim strMaChaine As String * 100, strChaine As String
strMaChaine = "salut !"
strChaine = Trim$(strMaChaine)
MsgBox Len(strChaine)

> En fait vous l'aurez compris, le problème est de savoir si le Trim
> (sur une chaîne de longueur fixe que l'on transfert dans une chaîne à
> longueur variable, pour en connaître la taille) va laisser d'abord
> faire le transfert puis retasser (je peux le faire tout seul, mais
> c'est le mécanisme de fonctionnement qui m'intéresse, si vous avez
> des infos générales pour tout ce qui s'applique à ce principe?), dans
> ce cas nous aurons la longueur du contenu, OU, si le Trim va tenter
> d'abord de retasser la chaîne de longueur fixe, et ne le pouvant pas,
> le Len va renvoyer le contenant ???

Dans le code :

Dim strMaChaine As String * 100
strMaChaine = "salut !"
MsgBox Len(Trim$(strMaChaine))

La chaine strMaChaine va être trimée en mémoire, dans un autre espace,


pour
être renvoyée à la fonction Len(). Pour tenter de trimer la chaine sur


elle
même, on ferait ceci :
strMaChaine = Trim$(strMaChaine)
Mais ca en changerait rien.

Dans le code :

Dim strMaChaine As String * 100, strChaine As String
strMaChaine = "salut !"
strChaine = Trim$(strMaChaine)
MsgBox Len(strChaine)

La chaine strMaChaine va être trimée par la fonction puis stockée dans
strChaine.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/