Page 1 sur 1

[R] Affichage Array[][] après lecture fichier texte

Posté : dim. 11 mars 2018 16:43
par Tentative
Bonjour à tous,

Alors voilà, je commence enfin à me lancer dans l'AutoIt et je rencontre mon premier probleme :

J'ai un fichier .txt à la base
Janvier;;;;;;
1;1;1;1;1;1;1
2;2;2;2;2;2;2
3;3;3;3;3;3;3
4;;;;;;
5;;;;;;
6;;;;;;
7;;;;;;
8;;;;;;
9;;;;;;
10;;;;;;
11;;;;;;
12;;;;;;
13;;;;;;
Février;;;;;;
14;;;;;;
15;;;;;;
16;;;;;;
17;;;;;;
18;;;;;;
19;;;;;;
20;;;;;;
Mars;;;;;;
Ce que j'essaie de faire, c'est de pouvoir le lire sous forme de tableau via _ArrayDisplay.
#include <FileConstants.au3>
#include <Array.au3>
#include <File.au3>
#include <String.au3>

; Creation tableau
$Ligne = _FileCountLines (".\Date.txt")
$i = 0
$a = 0
$Del = 0
Dim $Array[$Ligne][7]

; Compte pour prendre la zone voulue
While FileReadLine(".\Date.txt", $a) <> "Janvier;;;;;;"
$a += 1
$Del += 1
WEnd

; On commence a sélectionner a partir de la bonne ligne
$i = $a

; Sélectionne la zone voulue
While FileReadLine(".\Date.txt", $i) <> "Février;;;;;;"
      $Texte = FileReadLine(".\Date.txt", $i)
      $Split = StringSplit($Texte,";")
      $Array[$i][7] = [$Split[1] & $Split[2] & $Split[3] & $Split[4] & $Split[5] & $Split[6] & $Split[7]]
      $i += 1
WEnd

; Affiche
_ArrayDisplay($Array, "Bravo", $Del &":"&$Ligne)
Alors c'est vraiment brouillon, on va pas se mentir!

Dans un 1er temps, je crée un tableau à la dimension de ma liste.
Dans 2eme temps, je dis la partie de la liste que je veux sélectionner et j'affiche le tableau en affichant seulement la zone voulu (Grace au 1er While)

Hors probleme, probleme de dimension Array dans le 2eme While, impossible de voir l'erreur en question.
Merci d'avance de m'éclairer ! :roll:

Re: [..] Affichage Array[][] après lecture fichier texte

Posté : dim. 11 mars 2018 17:19
par Tlem
Bonjour.
Vous devriez trouver votre bonheur ici : https://www.autoitscript.fr/forum/viewt ... =21&t=7582

Re: [..] Affichage Array[][] après lecture fichier texte

Posté : dim. 11 mars 2018 18:16
par Tentative
Pas mal le systeme, ca m'a grandement facilité la vie pour le coup.

Par contre, vous pourriez m'expliquer à quoi correspond chaque zone de ça s'il te plait?

_StringToArray2D($File, @CRLF, ";", 1, 1, 1, 10, 10, 20)
Je veux parler du $CTLF et 1,1. Changer ces paramètres s là changerait quoi au fonctionnement?
Et également me dire pourquoi la case [0][1] du tableau indique le nombre de ligne que le tableau à sélectionné ?

Et petite question au passage : Possible de renommer les Row, Col ou pas?

Dans tous les cas, merci, j'ai passé 1h a me creuser la tête avec les Split, et en 1min avec ça, c'etait finit!

Re: [..] Affichage Array[][] après lecture fichier texte

Posté : lun. 12 mars 2018 20:50
par Tlem
Bonsoir.
Extrait de l'entête de la fonction dans l'UDF :

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Name...........: _StringToArray2D
; Description ...: Convert a string in array 2D (each element separate by a char and each line by another char)
; Syntax.........: _StringToArray2D($sString[, $sDelimCol = ""[, $sDelimRow = ""[, $EmptyLine = 1[, $IndexBase = 1[, $iLineStart = 0, $iLineEnd = 0, $ColStart = 0, $ColEnd = 0]]]]]]]])
; Parameters ....: $sString				- String to convert
;                  $sDelimRow			- [optional] Char used for separate lines (Default @CRLF)(can be a string)
;				   $sDelimCol			- [optional] Char used for separate elements (Default "|")(can be a string)
;                  $EmptyLine			- [optional] 	0 Don't keep empty lines.
;										1 Keep the empty lines (Default).
;                  $IndexBase 			- [optional]	0 Return an array that begin in index 0.
;										1 Return an array that begin in line 1 with elements numbers in index 0 (Default).
;                  $iLineStart   		- [optional] Line index to start processing
;                  $iLineEnd     		- [optional] Line index to stop processing
;                  $iColStart   		- [optional] Column index to start processing
;                  $iColEnd     		- [optional] Column index to stop processing
;
; Return values .: Success - Return an array
;                  Failure - 0, sets @error:
;                  |1 - $sString is empty
;                  |2 - $sString is not correct to proceed
;                  |3 - $$iLineStart is greater than $iLineEnd or $ColStart is greater than $ColEnd
Qu'est-ce que vous ne comprenez pas ?
Et également me dire pourquoi la case [0][1] du tableau indique le nombre de ligne que le tableau à sélectionné ?
Parce que c'est comme ça que sont généralement formé les tableaux et que cela correspond au paramètre $IndexBase (qui par défaut est à 1).

Re: [..] Affichage Array[][] après lecture fichier texte

Posté : lun. 12 mars 2018 21:10
par Tentative
Bonsoir,

J'avais pas trouvé le détail de la fonction mais maintenant que je l'ai sous les yeux, je comprend les paramètres!
Du coup, ça m'a également permis d'enlever la 1ere ligne qui était inutile.

Merci d'avoir pris le temps!
Je met en [R]!

Bonne soirée ! :)