[..] StringSlipt
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] StringSlipt
Bonjour comme toujours (je pense que cela va vous énerver mais bon) j'ai besoin d'aide sur la fonction StringSlipt en deux mots voilà mon but :
Receuillir des info dans un fichier CSV pour les mettres dans un fichier .ini (ceci était pour revenir en arrière pour ceux qui n'etait pas là)
Un bon exenmple me suffira merci de votre aide.
Receuillir des info dans un fichier CSV pour les mettres dans un fichier .ini (ceci était pour revenir en arrière pour ceux qui n'etait pas là)
Un bon exenmple me suffira merci de votre aide.
Re: [..]StringSlipt
Envoi un fichier CSV d'exemple et je te le fait 
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..]StringSlipt
En deux mot, cela va être dure, mais en trois :
StringSplit = Découpage de chaîne.
Un exemple :Hein ... C'est l'exemple du fichier d'aide ... Ha bon !!!
Bon sinon, pour être sérieux, tapez csv dans le moteur de recherche du forum et vous trouverez quelque pages avec des codes qui pourrait vous inspirer.
StringSplit = Découpage de chaîne.
Un exemple :
Code : Tout sélectionner
$days = StringSplit("Sun,Mon,Tue,Wed,Thu,Fri,Sat", ",")
;$days[1] contains "Sun" ... $days[7] contains "Sat"
$text = "This\nline\ncontains\nC-style breaks."
$array = StringSplit($text, '\n', 1)Bon sinon, pour être sérieux, tapez csv dans le moteur de recherche du forum et vous trouverez quelque pages avec des codes qui pourrait vous inspirer.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..]StringSlipt
Disons que Stringsplit est une super fonction, ultra utile, mais, à piger par soi-même.
Ce que je te propose, c'est de le tester sur un fichier que tu connais, et pas trop peuplé, pour alléger le tout.
Avant, tu peux même te faire un 'ti entrainement.
Tu choisis une variable, disons $slash
et dedans, tu y mets le résultat du stringsplit appliqué sur un chemin, pour commencer.
Le chemin, est du type C:\dossier1\dossier2\dossier3, et on veut couper au niveau des "\"
tu fais alors un $slash=stringplit($chemin, "\")
[où $chemin=C:\dossier1...]
C'est l'quivalent codé de ce qu'on a dit juste avant.
On va ensuite chercher à voir tous les bouts de chaines contenu dans la variable $slash.
Pour savoir le nombre de morceaux, tu affecte [0] à la variable, soit $slash[0]
Ensuite, tu peux accéder aux morceaux coupés en affectant [n] à ta variable, pour en voir le nième morceau :
$slash [n]
Pour mieux visualiser, fais-toi une petite MsgBox (0,"", $slash[$ii]), où $ii varie entre 1 et $slash[0] (le nombre de chaines coupées)
Soit
Et là, logiquement, tu devrais mieux piger la fonction.
Après, pour le flag optionnel (basé à 0 par défaut)
0 => Coupure de la chaine à chaque fois qu'il y a un des caractères du délimiteur de trouvé (ici le '\')
1 => Coupure là où il y a la totalité des caractères du délimiteur
Si ça se trouve, je suis à côté de la plaque, mais c'est ce que j'en ai compris, et j'aime trop me la péter pour me taire, :p
EDIT : OOPS, j'ai été coiffé sur le poteau...
Ce que je te propose, c'est de le tester sur un fichier que tu connais, et pas trop peuplé, pour alléger le tout.
Avant, tu peux même te faire un 'ti entrainement.
Tu choisis une variable, disons $slash
et dedans, tu y mets le résultat du stringsplit appliqué sur un chemin, pour commencer.
Le chemin, est du type C:\dossier1\dossier2\dossier3, et on veut couper au niveau des "\"
tu fais alors un $slash=stringplit($chemin, "\")
[où $chemin=C:\dossier1...]
C'est l'quivalent codé de ce qu'on a dit juste avant.
On va ensuite chercher à voir tous les bouts de chaines contenu dans la variable $slash.
Pour savoir le nombre de morceaux, tu affecte [0] à la variable, soit $slash[0]
Ensuite, tu peux accéder aux morceaux coupés en affectant [n] à ta variable, pour en voir le nième morceau :
$slash [n]
Pour mieux visualiser, fais-toi une petite MsgBox (0,"", $slash[$ii]), où $ii varie entre 1 et $slash[0] (le nombre de chaines coupées)
Soit
Code : Tout sélectionner
$chemin="C:\dossier1\dossier2\dossier3"
$slash=StringSplit($chemin, "\")
For $ii=1 to $slash[0]
MsgBox (0,"", $slash[$ii])
Next
Après, pour le flag optionnel (basé à 0 par défaut)
0 => Coupure de la chaine à chaque fois qu'il y a un des caractères du délimiteur de trouvé (ici le '\')
1 => Coupure là où il y a la totalité des caractères du délimiteur
Si ça se trouve, je suis à côté de la plaque, mais c'est ce que j'en ai compris, et j'aime trop me la péter pour me taire, :p
EDIT : OOPS, j'ai été coiffé sur le poteau...
A bientôt,
T@PµZ.
____________________________________
T@PµZ.
____________________________________
Re: [..] StringSlipt
En faite non
je n'ai absolument rien compris et je n'ai pas réussi votre exemple est-que c'est le problème que j'ai un fichier openoffice?Cela dit il faudrait aussi m'expliquer un peu les tableau de variables car je pense que ça vient de la merci pour votre aide.
Re: [..]StringSlipt
Non je n'ai rien trouvé qui pourrai m'inspirerBon sinon, pour être sérieux, tapez csv dans le moteur de recherche du forum et vous trouverez quelque pages avec des codes qui pourrait vous inspirer.
Re: [..] StringSlipt
Hello tout le monde je suis en se moment avec mon amis en se moment et on a un petit probleme
String Split lit le chemin d'acces et ne lit pas linterieur de fichier.Voici le code
String Split lit le chemin d'acces et ne lit pas linterieur de fichier.Voici le code
Code : Tout sélectionner
$chemin = "F:\BASE ELEVES.csv"
$slash = StringSplit ($chemin,",")
For $i=1 To $slash [0]
MsgBox (64,"",$slash[$i])
Next
Un pti clique svp sa fait beaucoup pas de mal !
http://mon-zoo.jeuxcherche.com/myzoo.php?pseudo=drave
http://mon-zoo.jeuxcherche.com/myzoo.php?pseudo=drave
Re: [..] StringSlipt
Pour le fichier d'exemple voilà :
- Fichiers joints
-
[L’extension csv a été désactivée et ne peut plus être affichée.]
Re: [..] StringSlipt
Halte au feu les moussaillons!
L'essentiel est de comprendre.
Mon exemple attribuait la "valeur" "C:\dossier1\dossier2..." à $chemin.
Mais si on lit bien, il n'a jamais été question de lire un fichier pour le moment. Le topic ne s'interresse qu'au stringsplit.
Avant d'utiliser stringsplit, il faut le comprendre.
Testez donc l'exemple, pour le comprendre.
Une fois ceci fait, il faudra lire le fichier en question, et mettre le contenu du fichier dans une variable.
Alors, à ce moment, il sera possible d'appliquer le stringsplit sur la variable nouvellement peuplée.
Croyezle vieux fou que je suis, et qui fut jadis impétueux, vous gagnerez du temps à comprendre comment faire une recette, plutôt que d'appliquer au hasard des formules jusqu'à ce qu'une fonctionne plus ou moins...
L'essentiel est de comprendre.
Mon exemple attribuait la "valeur" "C:\dossier1\dossier2..." à $chemin.
Mais si on lit bien, il n'a jamais été question de lire un fichier pour le moment. Le topic ne s'interresse qu'au stringsplit.
Avant d'utiliser stringsplit, il faut le comprendre.
Testez donc l'exemple, pour le comprendre.
Une fois ceci fait, il faudra lire le fichier en question, et mettre le contenu du fichier dans une variable.
Alors, à ce moment, il sera possible d'appliquer le stringsplit sur la variable nouvellement peuplée.
Croyezle vieux fou que je suis, et qui fut jadis impétueux, vous gagnerez du temps à comprendre comment faire une recette, plutôt que d'appliquer au hasard des formules jusqu'à ce qu'une fonctionne plus ou moins...
A bientôt,
T@PµZ.
____________________________________
T@PµZ.
____________________________________
Re: [..] StringSlipt
C'est bon j'ai compris l'exemple maintenant comment fait-on pour lie un fichier svp?Biensur sans avoir a mettre tout le contenu dans un variable puisque qu'il y a environ 850 lignes.
- Tlem
- Site Admin

- Messages : 11830
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] StringSlipt
Pour lire un fichier ligne par ligne, utilisez la commande FileReadLine.
Le fichier d'aide vous apporte un exemple très simple.
Il vous suffira de remplacer la ligne MsgBox(0, "Line read:", $line) par votre traitement (conversion par StringSplit puis écriture dans fichier .ini)
Le fichier d'aide vous apporte un exemple très simple.
Il vous suffira de remplacer la ligne MsgBox(0, "Line read:", $line) par votre traitement (conversion par StringSplit puis écriture dans fichier .ini)
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] StringSlipt
Voilà ce que j'ai bidouillé mais biensur ça ne marche pas.
► Afficher le texte
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] StringSlipt
Vous utilisez FileRead au lieu de FileReadLine. Et StringSplit retourne un tableau.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] StringSlipt
Bah... Il faut vraiment passer un peu de temps pour comprendre les exemples, au lieu de se lancer tête baissée.
Donc, effectivement, après avoir remplacé le file read line, essaye de rajouter des lignes, juste pour comprendre l'histoire du tableau
Donc, effectivement, après avoir remplacé le file read line, essaye de rajouter des lignes, juste pour comprendre l'histoire du tableau
Code : Tout sélectionner
;IniWrite ("cdvi.ini",$code,"Tout",$r) => A commenter, pour éviter le problème lié à $r.
For $i=1 To $r [0]
MsgBox (64,"",$r[$i])
Next
A bientôt,
T@PµZ.
____________________________________
T@PµZ.
____________________________________
Re: [R] StringSlipt
Voilà je l'ai refait mais ceci n'y change rien.
Merci d'afficher un script.
Merci d'afficher un script.
► Afficher le texte
Modifié en dernier par guitarist le sam. 10 oct. 2009 14:12, modifié 1 fois.
Re: [..] StringSlipt
Je l'ai refait celon ta maniere Tapuz
C'est déjà bien mieu voici le code.
Pour arranger certains problèmes je vais le finir et je vous donnerai mon dernier résultat à corriger
Merci
C'est déjà bien mieu voici le code.
► Afficher le texte
Merci
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] StringSlipt
Ton précédent bout de code ne pouvait absolument pas fonctionner...
StringSplit prends une ligne complète et la place dans un tableau... En utilisant FilreRead comme tu le faisais, tu lisais seulement un caractère
à la fois, ce qui ne peut fonctionner avec stringsplit...
Tiens... Ceci fonctionne très bien.
J'ai mis un _arraydisplay en commentaire à la ligne 26 du script. Si tu veux voir ce que fait exactement stringsplit, enlève le ";" au début
de cette ligne pour voir le tableau généré par StringSplit (sur lequel je me base pour faire le reste)
StringSplit prends une ligne complète et la place dans un tableau... En utilisant FilreRead comme tu le faisais, tu lisais seulement un caractère
à la fois, ce qui ne peut fonctionner avec stringsplit...
Tiens... Ceci fonctionne très bien.
J'ai mis un _arraydisplay en commentaire à la ligne 26 du script. Si tu veux voir ce que fait exactement stringsplit, enlève le ";" au début
de cette ligne pour voir le tableau généré par StringSplit (sur lequel je me base pour faire le reste)
Code : Tout sélectionner
#include<array.au3>
Global $lineN = 0
$source = "ex.csv"
$ini = StringTrimRight($source,3) & ".ini"
If FileExists($ini) Then
FileDelete($ini)
EndIf
$f = FileOpen($source, 0)
; Check if file opened for reading OK
If $f = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$lineN+=1
$line = FileReadLine($f)
If @error = -1 Then ExitLoop
$info = StringSplit($line,",",0)
;_ArrayDisplay($info)
IniWriteSection($ini,$lineN,"Nom = " & $info[1] & @LF & "Prenom = " & $info[2] & @LF & "Classe = " & $info[3])
Wend
FileClose($f)Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
Re: [..] StringSlipt
Encore une petite question voilà je me trouve avec le fichier .ini et voilà la donnée
[1]
Données = "Nom",Prénom",Classe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
[2]
etc....
comment enlever les guillemets et les virgules svp?
[1]
Données = "Nom",Prénom",Classe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
[2]
etc....
comment enlever les guillemets et les virgules svp?
Re: [..] StringSlipt
Merci beaucoup SagePourpre tu as fait je pense ce que je voulait merci

► Afficher le texte
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] StringSlipt
Voilà le script que je viens de t'envoyer avec une légère modification pour enlever les guillemets.
En gros, pour y parvenir, il n'y a qu'à utiliser la commande stringtrimleft et stringtrimright pour enlever le premier et dernier caractère de chaque éléments
du tableau.
Donc, on a
Il suffit d'ajouter tout de suite après
Ce qui dit de prendre chaque valeur dans le tableau généré par StringSplit et stockés dans la variable $info
et de la remplacer par la même chose sans le premier et dernier caractère (les guillemets)
Quant aux virgules, comme j'ai indiqué à la fonction StringSplit d'utiliser les virgules pour séparer les divers éléments dans ma ligne
de texte, elles sont automatiquement enlevées du tableau.
Tu peux bien entendu modifier la façon dont les données sont écrites dans le fichier *.ini si ça ne te convient pas (Comme il n'était mentionné
nul part à quoi le fichier *.ini résultant devrait ressembler, j'ai utilisé une construction de mon cru.
Code : Tout sélectionner
#include<array.au3>
Global $lineN = 0
$source = "ex.csv"
$ini = StringTrimRight($source,3) & ".ini"
If FileExists($ini) Then
FileDelete($ini)
EndIf
$f = FileOpen($source, 0)
; Check if file opened for reading OK
If $f = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Read in lines of text until the EOF is reached
While 1
$lineN+=1
$line = FileReadLine($f)
If @error = -1 Then ExitLoop
$info = StringSplit($line,",",0)
For $i = 1 To $info[0]
$info[$i] = StringTrimLeft(StringTrimRight($info[$i],1),1)
Next
;_ArrayDisplay($info)
IniWriteSection($ini,$lineN,"Nom = " & $info[1] & @LF & "Prenom = " & $info[2] & @LF & "Classe = " & $info[3])
Wend
FileClose($f)En gros, pour y parvenir, il n'y a qu'à utiliser la commande stringtrimleft et stringtrimright pour enlever le premier et dernier caractère de chaque éléments
du tableau.
Donc, on a
Code : Tout sélectionner
$info = StringSplit($line,",",0)Il suffit d'ajouter tout de suite après
Code : Tout sélectionner
For $i = 1 To $info[0]
$info[$i] = StringTrimLeft(StringTrimRight($info[$i],1),1)
Nextet de la remplacer par la même chose sans le premier et dernier caractère (les guillemets)
Code : Tout sélectionner
StringTrimLeft(StringTrimRight($info[$i],1),1)de texte, elles sont automatiquement enlevées du tableau.
Tu peux bien entendu modifier la façon dont les données sont écrites dans le fichier *.ini si ça ne te convient pas (Comme il n'était mentionné
nul part à quoi le fichier *.ini résultant devrait ressembler, j'ai utilisé une construction de mon cru.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )



