Page 1 sur 1

[R] Convertir la première ligne d'un array en string

Posté : jeu. 31 déc. 2009 18:02
par orwell
Bonjour,

Cela fait deux jours que je suis bloqué par un problème (surement tout bête), et aujourd'hui je n'ai plus aucun recul sur la question.


V'là le topo :

J'ai un tableau avec des données, et je veux convertir chaque ligne en variable.
Je pensais m'en sortir aisément et pourtant à chaque fois j'ai un problème avec la première ligne du tableau.

Voilà un exemple simplifié :

Code : Tout sélectionner

#include <Array.au3>

Local $aArray[5]

$aArray[0] = "JPM"
$aArray[1] = "Holger"
$aArray[2] = "Jon"
$aArray[3] = "Larry"
$aArray[4] = "Jeremy"

_ArrayDisplay($aArray)

 For $i = 0 to UBound($aArray) - 1
    $line=_ArrayToString($aArray,"|",$i,$i)
    Msgbox(0,"",$line)

Next

 
Ce code est fonctionnel pour toutes les lignes du tableau sauf la première.

Pourquoi avec ce code je n'arrive pas à extraire la première ligne "toute seule" ?

Re: [..] Convertir la première ligne d'un array en string

Posté : jeu. 31 déc. 2009 20:00
par Tlem
J'avoue ne pas trop comprendre votre demande, car la valeur d'un élément d'un tableau est tout simplement égal à cet élément ...

Donc selon votre code, si je veux la première ligne, il me suffit d'écrire :

Code : Tout sélectionner

$Var = $aArray[0]
Si je veux afficher les lignes une à une il suffit de faire :

Code : Tout sélectionner

Local $aArray[5]

$aArray[0] = "JPM"
$aArray[1] = "Holger"
$aArray[2] = "Jon"
$aArray[3] = "Larry"
$aArray[4] = "Jeremy"

 For $i = 0 to UBound($aArray) - 1
    Msgbox(0,"","Ligne " & $i & " = " & $aArray[$i])
Next
La fonction _ArrayToString() transforme tout simplement un tableau en une chaîne dont vous spécifiez certains élément tel que le/les caractère(s) de séparation, mais en aucun cas vous ne devez l'utiliser comme vous l'avez fait. :shock:

Re: [..] Convertir la première ligne d'un array en string

Posté : ven. 01 janv. 2010 15:42
par orwell
Merci pour la réponse.

En fait mon exemple était un peu trop simplifié :oops:


Le tableau en question est obtenu à partir d'un _StringBetween sur un fichier texte qui change à chaque fois.

Et à partir de ce tableau je veux sélectionner les lignes qui ne contiennent que la valeur "toto" par exemple, à l'aide d'un StringInStr afin de les réécrire dans un autre fichier texte.

J'avais d'abord pensé à faire simple comme votre exemple, mais je sèche sur la déclaration de variable à effectuer, vu que le tableau vient d'un _StringBetween ...

Comme je ne voyais pas comment déclarer le nombre de lignes du tableau, j'étais donc parti sur ce code là :

Code : Tout sélectionner

#include <String.au3>
#include <Array.au3>


$texte1 = "texte1.rtf"
$texte2 = "texte2.rtf"
$read_texte1 = FileRead ($texte1)
$debut = 'debut'
$fin = 'fin'
$aArray = _StringBetween ($read_texte1, $debut, $fin)
_ArrayDisplay($aArray)


For $i = UBound($aArray) - 1 To 0 Step -1
     $line=_ArrayToString($aArray,"|",$i,$i)
     Msgbox(0,"",$aArray[$i])

     If StringInStr($line, "toto") Then
          FileWriteline ($texte2, $line)
     EndIf

Next
FileClose($texte2)
Msgbox(0,"","Done")

J'ai essayé d'autres moyens, comme une boucle For avec un _FileCountLines sur le fichier texte de départ, cela fonctionne, mais c'est d'une lenteur excessive sur de gros fichiers.

Re: [..] Convertir la première ligne d'un array en string

Posté : ven. 01 janv. 2010 16:09
par Tlem
Je n'ai pas tous les éléments pour vous répondre (la structure du fichier RTF aiderait quand même pas mal), mais d'après les éléments que vous donnez, je dirait que le code qui suit devrait au moins s'approcher de ce que vous cherchez :
► Afficher le texte

Re: [..] Convertir la première ligne d'un array en string

Posté : lun. 04 janv. 2010 17:44
par orwell
Merci Tlem, cela fonctionne sans problème.

La solution était pourtant simple ... surement trop simple pour mon esprit tordu .... :oops: