PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Extraire caractere par caractere, le contenu d'une variable chaine
Extraire caractere par caractere, le contenu d'une variable chaine
Started by jmdelhalle, Dec., 16 2017 6:58 AM - 7 replies
Registered member
11 messages
Posted on December, 16 2017 - 6:58 AM
Bonjour,
Comment extraire caractère par caractère le contenu d'une variable chaîne et les stocker dans un tableau dynamique et de contenu variable pour arriver au résultat suivant :

MaChaine est une chaîne

Traitement
MaChaine = "JEAN MICHEL"

Traitement
Resultat
Tab[1] = "J"
Tab[2] = "E"
Tab[3] = "A"
Tab[4] = "N"
Tab[5] = " "
Tab[6] = "M"
Tab[7] = "I"
Tab[8] = "C"
Tab[9] = "H"
Tab[10] = "E"
Tab[11] = "L"
Posted on December, 16 2017 - 9:05 AM
bonjour

extraitchaine(...) et taille (...) devraient te permettre cette extraction, en dimensionnant correctement ton tableau
Registered member
946 messages
Popularité : +102 (110 votes)
Posted on December, 16 2017 - 9:53 AM
Bonjour
Voici une possibilité :
DataSource est une chaîne
TabData est un tableau dynamiquedynamique de 0 caractères
DataSource = "JEAN MICHEL"
//
Dimension(TabData, Taille(DataSource))
Transfert(&TabData, &DataSource, Taille(DataSource))
Registered member
280 messages
Popularité : +22 (28 votes)
Posted on December, 17 2017 - 2:21 AM
Une autre variante :

DataSource est une chaîne = "JEAN MICHEL"
TabData est un tableau dynamiquedynamique de 0 chaînes

LongeurPAS est un entier=2 // par exemple

TailleTAB est un entier=Arrondi(Taille(DataSource)/LongeurPAS,0)
Dimension(TabData, TailleTAB)

POUR i=1 A TailleTAB PAS LongeurPAS
TabData[i]=Milieu(DataSource,i,LongeurPAS)
FIN


--
Cordialement.
Je vous souhaite une bonne journée depuis le Vietnam.

Olivier.
http://www.impulse-web.com
Registered member
2,571 messages
Popularité : +222 (260 votes)
Posted on December, 17 2017 - 5:25 AM
Ou tout simplement

DataSource est une chaîne = "JEAN MICHEL"
TabData est un tableau de chaînes

POUR i=1 _À_ Taille(DataSource)
TabData.Ajoute(DataSource[[i]])
FIN


--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Registered member
11 messages
Posted on December, 17 2017 - 8:10 AM
Bonjour,
Merci à tous pour vos réponses.
Je vais tester ce matin
Bon dimanche
Registered member
946 messages
Popularité : +102 (110 votes)
Posted on December, 17 2017 - 12:14 PM
Philippe SB a écrit :
Ou tout simplement

DataSource est une chaîne = "JEAN MICHEL"
TabData est un tableau de chaînes

POUR i=1 _À_ Taille(DataSource)
TabData.Ajoute(DataSource[[i]])
FIN


--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique



Bonjour,
Je ne trouve pas que ce soit une méthode simple et efficace, car c'esr une catastrophe en terme de temps d'exécution...surtout pour de grande chaines
Tests fait avec DataSource de 400407 octets :
- méthode avec la fonction Transfert -> +000000000000000 (ceci même avec 20 fois plus de caractères soit 7,6M octets)
- méthode avec la fonction TableauAjoute ->+000000000000207 10s (avec 20 fois plus, on passe à plus de 42s !)
Registered member
2,571 messages
Popularité : +222 (260 votes)
Posted on December, 19 2017 - 4:44 AM
J'avoue que je n'aurais pas pensé au transfert d'octets...:merci:

Attention tout de même aux chaînes en UNICODE, quelque soit la méthode utilisée.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique