|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Vincent Inscription : janvier 2011 Messages : 8 ![]() |
Bonjour,
Je dois chercher une chaîne de 9 caractères dans un fichier CSV et en fonction de cette chaîne, déplacer le fichier dans une répertoire qui contient cette chaîne. (tri d'un fichier par rapport au numéro de série qui s'y trouve). Voilà comment j'ai fait. J'ai mis mon fichier dans un QByteArray, J'ai compté le nombre de séparateurs existants et lu les 9 prochains caractères. Maintenant je sais pas si je peux soit chercher directement dans le fichier la chaîne de 9 caractères ou chercher la chaîne de 9 caractères dans le QByteArray ? Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Yoann MoreauIngénieur en laboratoire de recherche Inscription : septembre 2005 Messages : 723 ![]() |
Je ne suis pas sûr d'avoir compris la question. Dés que tu veux comparer des chaînes dans un fichier, tu es obligé de lire en mémoire, en l'occurrence chercher dans ton QByteArray.
Si tu cherches un moyen de rechercher tes 9 caractères plus facilement, dans ton cas je ne vois pas comment faire. J'imagine que le nombre de caractères avant ce qui t'intéresse varie selon les fichiers. Si tes caractères sont toujours précédés d'une certaine chaîne tu pourrais la chercher avec indexOf. Sinon tu es obligé de boucler sur tes séparateurs, mais tu peux faire plus facilement avec une boucle de ce genre : Code :
|
||
|
00
|
|
|
#3 | |||
|
Nouveau Membre du Club
![]() Responsable d'un système d'information métier Inscription : janvier 2011 Messages : 39 ![]() |
Citation:
Ci-après une petite fonction qui me sert pour trouver une chaîne de caractères dans une cellule (entre 2 ';') d'un fichier csv : Code :
|
|||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Vincent Inscription : janvier 2011 Messages : 8 ![]() |
Bonjour,
Merci pour les infos. En faite la chaîne de 9 charactères est un numéro de série. C'est la seule chaîne qui fait 9 charactères(chiffres). Le nombre de séparateur n'est pas stable. Voir même le séparateur peux changer. Aucun mot spécifique apparait. Je pourrais regarder pour demander aux développeurs de changer ça. Ce serait la solution la plus simple. Je vais continuer à chercher. |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() |
Bonjour,
Puisque tu recherches une chaîne à 9 chiffres, une méthode rapide serait d'utiliser les expressions régulières. http://shugo.developpez.com/tutoriels/regexqt/ |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Vincent Inscription : janvier 2011 Messages : 8 ![]() |
Cette chaîne est variable(le contenu). La seule chose qui est fixe, c'est que c'est la première chaîne de 9 chiffres dans le fichiers csv.
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Vincent Inscription : janvier 2011 Messages : 8 ![]() |
Bon bon bon....
Alors j'ai pu trouver une réference. Donc je recherche ma référence et je prends les 9 prochains caractères après les 4 de ma référence (référence à 3 charactères + séparateur). unsigned long index = 0; index = tableau.indexOf("REF",0); //REF = la chaîne de charactère de références précédent la chaîne que je désire mémoriser. QString serialnumber; //lecture des 9 prochains caractères après l'index de la référence for(uint x=4; x<13; x++) serialnumber.append(tableau.at(index + x)); //j'implémente le string serialnumber de chaque charactères entre les 4 et 13 prochains suivant ma référence. Merci pour votre aide |
|
|
00
|
|
|
#8 |
![]() ![]() Yoann MoreauIngénieur en laboratoire de recherche Inscription : septembre 2005 Messages : 723 ![]() |
Pense à mettre la discussion en
si tu as toutes les réponses à ta question |
|
00
|
Copyright © 2000-2012 - www.developpez.com