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

concaténer 2 chaines

9 réponses
Avatar
scraper
bonjour à tous !


un petit souci, en manipulant des chaînes ...

comment, en vb6, concaténer 2 chaînes, en évitant les doublons ??

autre souci ...

je lis une valeur dans un fichier ... mais si cette valeur est trop longue
(> 255), la fin en est tronquée .
or ,je n'ai pas de moyen, avant de la lire, de savoir quelle va être sa
longueur ?

y a t il un moyen de redimensionner cela "dynamiquement" ?

merci d'avance

--

scraper

9 réponses

Avatar
Zoury
Salut Scraper! :O)

comment, en vb6, concaténer 2 chaînes, en évitant les doublons ??



euh.. t'as un exemple? Qu'entends-tu par doublons?

je lis une valeur dans un fichier ... mais si cette valeur est trop


longue
(> 255), la fin en est tronquée .
or ,je n'ai pas de moyen, avant de la lire, de savoir quelle va être sa
longueur ?



Comment lis-tu le contenu du fichier? montre nous ton code...



--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
scraper
Dans son post news:%,

Zoury a absolument tenu à nous dire :

Salut Scraper! :O)

comment, en vb6, concaténer 2 chaînes, en évitant les doublons ??



euh.. t'as un exemple? Qu'entends-tu par doublons?



ben disons ....

chaîne A="Toto;Titi"
chaîne B="Toto;Tata"

je voudrais, en les concaténant, reécupérer, bien sûr, "Toto;Titi;Tata "


je lis une valeur dans un fichier ... mais si cette valeur est trop
longue (> 255), la fin en est tronquée .
or ,je n'ai pas de moyen, avant de la lire, de savoir quelle va être
sa longueur ?



Comment lis-tu le contenu du fichier? montre nous ton code...



euh ça va être dur, c'est en chantier ...

je m'attelle aux problèmes à la suite les uns des autres ;-)

je lis dans un fichier ini qui est créé par le projet , avec la fonction
GetPrivateProfileString

en fait, ça fonctionne plutôt bien, sauf que la taille du buffer (c'est bien
ça ?? .... j'ai pas vraiment une grande expérience en VB :-) la taille
est fixée par défaut à 255 ; or, je me suis rendu compte que, si la valeur
que je dois récupérer est > 255, la fin de la chaîne est tronquée ...

donc, je souhaiterais que , automatiquement, si possible, cette taille soit
adaptée aux besoins, en quelque sorte ...

voila ;-)

NB : j'ai utilisé l'exemple de la FAQ ...


--


scraper
Avatar
François Picalausa
Bonjour/soir,

"scraper" a écrit dans le message de
news:%
Dans son post news:%,

Zoury a absolument tenu à nous dire :

Salut Scraper! :O)

comment, en vb6, concaténer 2 chaînes, en évitant les doublons ??



euh.. t'as un exemple? Qu'entends-tu par doublons?



ben disons ....

chaîne A="Toto;Titi"
chaîne B="Toto;Tata"

je voudrais, en les concaténant, reécupérer, bien sûr,
"Toto;Titi;Tata "



Tu peux utiliser Split pour retrouver des tableaux de chaines et ensuite
rechercher dans le second tableau si la valeur est ou non présente.
Ensuite, tu peux redimensionner ton tableau en sa taille +1 et ajouter la
nouvelle valeur
Join à la fin pour retrouver une chaine.

je lis une valeur dans un fichier ... mais si cette valeur est trop
longue (> 255), la fin en est tronquée .
or ,je n'ai pas de moyen, avant de la lire, de savoir quelle va être
sa longueur ?



Comment lis-tu le contenu du fichier? montre nous ton code...




en fait, ça fonctionne plutôt bien, sauf que la taille du buffer
(c'est bien ça ?? .... j'ai pas vraiment une grande expérience en VB
:-) la taille est fixée par défaut à 255 ; or, je me suis rendu
compte que, si la valeur que je dois récupérer est > 255, la fin de
la chaîne est tronquée ...



Essaye l'exemple a cette adresse :
http://groups.google.fr/groups?selm=eZnpvNIgDHA.3616%40TK2MSFTNGP11.phx.gbl

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Bismark Prods
J'ajouterais qu'il ne serait pas inutile d'effectuer un traitement sur la
casse si cette dernière n'a pas d'importance.


"François Picalausa" a écrit dans le message de
news:%
Bonjour/soir,

"scraper" a écrit dans le message de
news:%
> Dans son post news:%,
>
> Zoury a absolument tenu à nous dire :
>
>> Salut Scraper! :O)
>>
>>> comment, en vb6, concaténer 2 chaînes, en évitant les doublons ??
>>
>> euh.. t'as un exemple? Qu'entends-tu par doublons?
>
> ben disons ....
>
> chaîne A="Toto;Titi"
> chaîne B="Toto;Tata"
>
> je voudrais, en les concaténant, reécupérer, bien sûr,
> "Toto;Titi;Tata "

Tu peux utiliser Split pour retrouver des tableaux de chaines et ensuite
rechercher dans le second tableau si la valeur est ou non présente.
Ensuite, tu peux redimensionner ton tableau en sa taille +1 et ajouter la
nouvelle valeur
Join à la fin pour retrouver une chaine.

>>> je lis une valeur dans un fichier ... mais si cette valeur est trop
>>> longue (> 255), la fin en est tronquée .
>>> or ,je n'ai pas de moyen, avant de la lire, de savoir quelle va être
>>> sa longueur ?
>>
>> Comment lis-tu le contenu du fichier? montre nous ton code...
>
>
> en fait, ça fonctionne plutôt bien, sauf que la taille du buffer
> (c'est bien ça ?? .... j'ai pas vraiment une grande expérience en VB
> :-) la taille est fixée par défaut à 255 ; or, je me suis rendu
> compte que, si la valeur que je dois récupérer est > 255, la fin de
> la chaîne est tronquée ...

Essaye l'exemple a cette adresse :



http://groups.google.fr/groups?selm=eZnpvNIgDHA.3616%40TK2MSFTNGP11.phx.gbl

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




Avatar
scraper
Dans son post news:%,

François Picalausa a ajouté :

Bonjour/soir,


Tu peux utiliser Split pour retrouver des tableaux de chaines et
ensuite rechercher dans le second tableau si la valeur est ou non
présente. Ensuite, tu peux redimensionner ton tableau en sa taille +1
et ajouter la nouvelle valeur
Join à la fin pour retrouver une chaine.



arffff !

c'est pour ça que ça voulait pas fonctionner !

je splittais la première chaîne, et j'essayais de retrouver sa présence dans
la 2° avec Instr ... il faut donc que je splitte les 2 ??


Essaye l'exemple a cette adresse :



http://groups.google.fr/groups?selm=eZnpvNIgDHA.3616%40TK2MSFTNGP11.phx.gbl

je vais aller voir

merci ...

--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
scraper
Dans son post news:%,

François Picalausa a précisé :


Tu peux utiliser Split pour retrouver des tableaux de chaines et
ensuite rechercher dans le second tableau si la valeur est ou non
présente. Ensuite, tu peux redimensionner ton tableau en sa taille +1
et ajouter la nouvelle valeur
Join à la fin pour retrouver une chaine.



salut !

j'ai fait (presque ! lol ) comme tu m'as indiqué, et ça fonctionne ....

sauf que je trouve ça assez lourd ...

maintenant que j'y pense, j'ai une possibilité d'intégrer ma chaine
concaténée à un ComboBox ...

y a t il des possibilités de filtres intégrées au Combo, ce qui serait plus
simple , et d'une écriture plus légère ??

par exemple, j'ai ma chaîne C=A & B

C contient donc des doublons ...

si je la splitte, et que j'ajoute chaque élément au combobox
(Combo1.AddItem(v(i)) , par exemple ...), est ce qu'à ce moment là, je peux
pas vérifier si l'item existe déjà, et si oui, ne pas le rajouter ??

merci ... :-)

--

scraper
Avatar
François Picalausa
Bonjour/soir,

"scraper" a écrit dans le message de
news:
Dans son post news:%,

François Picalausa a précisé :


Tu peux utiliser Split pour retrouver des tableaux de chaines et
ensuite rechercher dans le second tableau si la valeur est ou non
présente. Ensuite, tu peux redimensionner ton tableau en sa taille +1
et ajouter la nouvelle valeur
Join à la fin pour retrouver une chaine.



maintenant que j'y pense, j'ai une possibilité d'intégrer ma chaine
concaténée à un ComboBox ...

y a t il des possibilités de filtres intégrées au Combo, ce qui
serait plus simple , et d'une écriture plus légère ??

si je la splitte, et que j'ajoute chaque élément au combobox
(Combo1.AddItem(v(i)) , par exemple ...), est ce qu'à ce moment là,
je peux pas vérifier si l'item existe déjà, et si oui, ne pas le
rajouter ??



Ce qu'il t'es possible de faire, c'est de conserver des positions
importantes pour ne pas devoir reparcourir toute la liste.
Si tu conserve la position du début des i et du début des q (pour de
l'alphabétique), tu peux commencer la recherche de doublons dans ta liste à
partir d'une position.

Sinon, tu peux aussi à partir d'une liste recherche dans le texte récupérer
si la chaine n'existe pas via un instr.
Si tu as par exemple comme séparateur ; et dans ta liste l'élément "Toto",
pour rechercher le doublon, tu ferais:

Machaine = "a;b;c;Toto"
Machaine = ";" & Machaine & ";"

Existe = cBool(Instr(1, Machaine, ";Toto;"))

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
scraper
Dans son post news:,

François Picalausa a ajouté :

Bonjour/soir,

Ce qu'il t'es possible de faire, c'est de conserver des positions
importantes pour ne pas devoir reparcourir toute la liste.
Si tu conserve la position du début des i et du début des q (pour de
l'alphabétique), tu peux commencer la recherche de doublons dans ta
liste à partir d'une position.



.. humm ... pas compris ..

Sinon, tu peux aussi à partir d'une liste recherche dans le texte
récupérer si la chaine n'existe pas via un instr.
Si tu as par exemple comme séparateur ; et dans ta liste l'élément
"Toto", pour rechercher le doublon, tu ferais:

Machaine = "a;b;c;Toto"
Machaine = ";" & Machaine & ";"

Existe = cBool(Instr(1, Machaine, ";Toto;"))



cool ...

merci !

--

scraper
Avatar
François Picalausa
Hello!

"scraper" a écrit dans le message de
news:
Dans son post news:,

François Picalausa a ajouté :

Bonjour/soir,

Ce qu'il t'es possible de faire, c'est de conserver des positions
importantes pour ne pas devoir reparcourir toute la liste.
Si tu conserve la position du début des i et du début des q (pour de
l'alphabétique), tu peux commencer la recherche de doublons dans ta
liste à partir d'une position.



.. humm ... pas compris ..



supposons un tableau comportant "As", "Dim", "Loop", "Private", "VB", "With"
Tu stoque dans une variable la position des mots commençants en I (ou + si
pas de I ou 0 si ou tombe sur Q avant un I)
Ici, VariableI = 3
Idem pour Q, un deuxième point de référence:
VariableQ = 5

A partir de là, quand tu récupère une valeur, il te suffit de commencer la
lecture de ton tableau, pour comparaison, en fonction de la première lettre
du nouveau mot.
Par exemple, si je veux réajouter With, je commence à partir de VariableQ,
je compare avec VB et avec With pour me rendre compte que je nedois pas
l'ajouter.
Si maintenant je veux ajouter Public, je commence à VariableI, je compare
avec Loop et Private et je m'arrête puisque j'atteints VariableQ.
Ne pas oublier, quand on ajotue d'incrémenter les positions si nécéssaire.
Su un grand nombre de données, cette solution peut-être intéressante.
Si il est plus probable que ton entrée commence par des lettres de A à E, tu
peux aussi créer des sections plus ou moins longues pour réduire le temps de
traitement.

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