[..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme ?

#1

Message par Boulanza »

Bonjour,
En utilisant la fonction _FileWriteFromArray(), comment copier le résultat obtenu par la fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme du tableau . Voir l'exemple du code ci-dessous:
Merci pour votre aide.
Cordialement.
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
$input = @ScriptDir & '\TOTO.ini'; @ScriptDir & '\Config.ini'
If Not FileExists($input) Then
    MsgBox(48, 'Error', ' File Not Found ')
    Exit
EndIf
Global $output[1][1]; init ini array
_Ini_Array_Rows()
Func _Ini_Array_Rows()
    Local $ct, $sn, $rs; common declares
    Local $MaxKeyCt = 0; init max key counter
    Local $sn_tick = 0; init section counter
    $sn = IniReadSectionNames($input); read sections
    While 1; loop 1
        $sn_tick += 1; advance counter
        $rs = IniReadSection($input, $sn[$sn_tick]); read keys
        If @error = 1 Then ContinueLoop; If empty section then continue counting
        If $rs[0][0] > $MaxKeyCt Then $MaxKeyCt = $rs[0][0]; get max keys
        If $sn_tick = $sn[0] Then ExitLoop; exit loop when total reached
    WEnd
    ReDim $output[$sn[0]][$MaxKeyCt + 1]; resize needed array
    $sn_tick = 0; reset section counter
    While 1; loop 2
        $sn_tick += 1; advance counter
        $rs = IniReadSection($input, $sn[$sn_tick]); read keys and values
         If @error = 1 Then; If empty section
            $output[$sn_tick - 1][0] = $sn[$sn_tick]; then insert section name
            ContinueLoop
        EndIf
        For $ct = 1 To $rs[0][0]; loop 3
            $output[$sn_tick - 1][$ct] = $rs[$ct][1]; arrange array
        Next
        $output[$sn_tick - 1][0] = $sn[$sn_tick]; add section name to column 0
        If $sn_tick = $sn[0] Then ExitLoop; exit when done with last section
    WEnd
    Return $output
EndFunc
;;*** _ArrayDisplay($output, "Result"); display ini array (rows)
$Resultat01 = _ArrayDisplay($output, "Liste des étudiants du cours à distance: TEC", Default, 64+16, @TAB, "C.N.E|Civilité|Nom de famille|Prénom|Date de naissence|E-mail académique|Email personnel|Téléphone GSM|N° WhatsApp|Département")
;=======================================
; Copier le résultat obtenu à l'aide de la fonction _ArrayDisplay() dans un fichier texte.
Local $aRetArray, $sFilePath = @TempDir & "\Test.txt"
; Ecrit dans le fichier
_FileWriteFromArray($sFilePath, $output ,Default, Default, "|")
 Sleep(1000)
Exit
Fichiers joints
TOTO.ini
(791 Octets) Téléchargé 112 fois
Modifié en dernier par Boulanza le jeu. 24 sept. 2020 18:22, modifié 4 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme

#2

Message par mikell »

Pour moi le script fonctionne avec le fichier ini fourni, avec comme résultat un fichier de type csv
Si par "mise en forme" vous voulez dire les caratères bizarres qui s'écrivent dans le fichier, ça peut être géré en écrivant le fichier au format unicode

Merci de prêter attention à ce que vous écrivez : "le résultat obtenu par fonction _ArrayDisplay()" c'est 1 (ça marche) ou 0 (ça marche pô)

$sFilePath = @ScriptDir & "\Test.txt"
; Ecrit dans le fichier
$h = FileOpen($sFilePath, 128+1)
_FileWriteFromArray($h, $output ,Default, Default, "|")
FileClose($h)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme

#3

Message par Boulanza »

Merci Monsieur mikell pour votre réponse, mais ça ne répond pas à ma demande. Voir titre:
Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme ?
L'objet de ma demande est:
En utilisant la fonction _FileWriteFromArray(), comment copier le résultat obtenu par la fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme du tableau: c.a.d gardant le format identique que le résultat de la fonction:

Code : Tout sélectionner

$Resultat01 = _ArrayDisplay($output, "Liste des étudiants du cours à distance: TEC", Default, 64+16, @TAB, "C.N.E|Civilité|Nom de famille|Prénom|Date de naissence|E-mail académique|Email personnel|Téléphone GSM|N° WhatsApp|Département")
mikell a écrit : ↑jeu. 24 sept. 2020 14:13
Pour moi le script fonctionne avec le fichier ini fourni, avec comme résultat un fichier de type csv
Je n'ai jamais dit le contraire!
Cordialement.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme

#4

Message par mikell »

La mise en forme est respectée : 1 ligne du tableau => 1 ligne dans le fichier , les colonnes étant définies par le séparateur choisi

Si vous parlez de l'aspect à l'écran, vous pouvez toujours donner au fichier l'extension .csv et l'ouvrir avec Excel , mais il serait sans doute plus utile pour vous de carrément faire une gui et de lire le csv dans une listview où l'afichage est identique à _ArrayDisplay
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment copier le résultat la de fonction _ArrayDisplay() dans un fichier texte sans changer la mise en forme

#5

Message par Boulanza »

Re-Bonjour,
Pour comprendre ma demande testez svp le code notamment le résultat de la fonction:

Code : Tout sélectionner

Default, 64+16, @TAB, "C.N.E|Civilité|Nom de famille|Prénom|Date de naissence|E-mail académique|Email personnel|Téléphone GSM|N° WhatsApp|Département
Je souhaite avoir le même résultat avec la fonction: _FileWriteFromArray
Si on trouve pas de solution. Je croix qu'il serais plus facile de copier tout dans un fichier Excel .
Cordialement.
Répondre