Page 1 sur 1
[R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mar. 22 sept. 2020 12:06
par Boulanza
Bonjour,
Je reçois plusieurs fiches ini qui regroupent des informations propre à chaque étudiant inscrit dans mon cours de formation à distance (Suite à la suspension des cours présentiels à cause du Covid-19). Le nombre des étudiants peut attendre facilement entre 500 à 1.000 personnes (fichier ini).
Le système E-learning: Autosatisfaction des profs, les étudiants sont majoritairement insatisfaits des cours interactifs à travers la plateforme de leur établissement/université : Aucune formation sur le système E-learning, faible débit de connexion… Pour détourner ces contraintes épineuses, l’ensemble des enseignants ont adopté le partage de documents sous différents formats (PDF, Word, PPT).
Question : Comment convertir plusieurs fichiers .ini dans un seul tableau afin de faciliter la gestion des étudiants inscrits dans mon cours et leurs permettent de télécharger le cours de formation.
Merci pour votre aide.
Cordialement
Exemple de fichier ini:
Func GetInfoEtudient01
()Application01
();*** Coordonnées de l'étudiant.If $A1 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$Civilité", $A1)If $A2 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$Nom", $A2)If $A3 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$Prenom", $A3)If $A4 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$DateNaissence", $A4)If $A5 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$EmailAcadimique", $A5)If $A6 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "EmailPersonnel", $A6)If $A7 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$GSM", $A7)If $A8 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$WatsApp", $A8)If $A9 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$CNE", $A9)If $A10 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$Formation", $A10)If $A11 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$UtilisateurPoste", $A11)If $A11 <> "" Then IniWrite(@ScriptDir & "\Config.ini", "parametres", "$DomaineDuPoste", $A12)EndFunc
Re: [..] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mar. 22 sept. 2020 13:59
par Boulanza
Bonjour ,
C'est ce type de tableau que je souhaite avoir comme solution, avec la condition d'ajouter plusieurs fichier in dans le même tableau.
Voir code ci-dessous du lien
https://www.autoitscript.com/forum/topi ... -to-array/:
Cordialement.
#include <Array.au3>$input = @ScriptDir & '\Config.ini'; example iniIf Not FileExists($input) Then MsgBox(48, 'Error', ' File Not Found ') ExitEndIf;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 $outputEndFunc_ArrayDisplay($output, "Result"); display ini array (rows);Global $output[1][1]; reset array;_Ini_Array_Columns
();Func _Ini_Array_Columns
() Local $ct, $sn, $rs Local $MaxKeyCt = 0 Local $sn_tick = 0 $sn = IniReadSectionNames($input) While 1 $sn_tick += 1 $rs = IniReadSection($input, $sn[$sn_tick]) If @error = 1 Then ContinueLoop If $rs[0][0] > $MaxKeyCt Then $MaxKeyCt = $rs[0][0] If $sn_tick = $sn[0] Then ExitLoop WEnd ReDim $output[$MaxKeyCt + 1][$sn[0]] $sn_tick = 0 While 1 $sn_tick += 1 $rs = IniReadSection($input, $sn[$sn_tick]) If @error = 1 Then $output[0][$sn_tick - 1] = $sn[$sn_tick] ContinueLoop EndIf For $ct = 1 To $rs[0][0] $output[$ct][$sn_tick - 1] = $rs[$ct][1] Next $output[0][$sn_tick - 1] = $sn[$sn_tick] If $sn_tick = $sn[0] Then ExitLoop WEnd Return $outputEndFunc_ArrayDisplay($output, "Result"); display ini array (columns)Exit
Re: [..] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mar. 22 sept. 2020 23:08
par Boulanza
Bonsoir,
En remplacent "parametres" par "$A9" = Code national de l'étudiant (CNE) (chaque étudiant a son propre code) ce qui a résolu le problème d'intégrer plusieurs fichiers.ini dans un seul fichier.ini soit dans notre cas "Config.ini"
Juste une petite question comment enregistré le tableau: "$Resultat01= _ArrayDisplay($output, "Result")" comme fichier dans @ScriptDir ?
Merci d'avance pour votre aide.
Cordialement.
Re: [..] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 11:10
par Boulanza
Bonjour,
Impossible de trouver de l'aide pour copier $Resultat01 du code ci-dessous et/ou pas de solution de copy tableau, notamment que la fonction _FileWriteFromArray() ne peut donc pas écrire un tableau, ceci a été confirmé par le site AutoIT anglais:
https://www.autoitscript.com/forum/topi ... a-to-file/ :
The '1' is just telling you _ArrayDisplay() succeeded. I don't understand why you are trying to do anything else with that return value, and it's not an array, so you can't write it with _FileWriteFromArray().
Donc suite à cela, je ferme ce poste.
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|C.N.E|Département|Utilisateur de poste|Domaine du poste")
Re: [R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 14:04
par mikell
La fonction
_FileWriteFromArray() peut
bien évidemment écrire un tableau dans un fichier, elle est faite pour ça - comme son nom l'indique et comme l'aide l'explique
Re: [R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 14:12
par Boulanza
Bonjour mikell,
Le résultat un fichier vide. Il faut avouer que je n'ai pas su placer les deux fonctions pour que ça marche.Bahhhhh
Cordialement.
$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|C.N.E|Département|Utilisateur de poste|Domaine du poste"); Liste tous les fichiers du répertoire courant du script.Local $aScriptDir = _FileListToArray($Resultat01) ===> $sFilePath c
'est un fichier vide
Local $aScriptDir = _FileListToArray($output) ===> $sFilePath c'est un fichier sans tableau
<> $Resultat01 ; Crée un fichier dans le répertoire %TEMP% de l'utilisateur.Local $sFilePath = @TempDir & "\Examples.txt"; Ecrit un tableau dans un fichier en passant le nom du fichier._FileWriteFromArray($sFilePath, $aScriptDir, 1); Affiche le fichier.ShellExecute($sFilePath)
Re: [R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 20:33
par Boulanza
C'est la solution proposée par mikell:
"C.N.E|Civilité|Nom de famille|Prénom|Date de naissence|E-mail académique|Email personnel|Téléphone GSM|N° WhatsApp|C.N.E|Département|Utilisateur de poste|Domaine du poste"
ne fonctionnera pas, c'est vraiment dommage.
Re: [R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 22:11
par mikell
Boulanza a écrit : ↑mer. 23 sept. 2020 20:33C'est la solution proposée par mikell
mikell n'a rien proposé du tout. mikell a juste apporté un rectificatif à une affirmation du post n°4 qui était fausse
D'ailleurs mikell n'a pas compris grand'chose aux messages précédents qui sont dans l'ensemble assez confus avec leur mélange improbable de ini, de tableau et de fichier
Si vraiment vous voulez de l'aide, cessez SVP de nous asséner des scripts qui ne sont pas forcément adaptés et que vous ne comprenez manifestement pas
Dans ce sujet par exemple où le titre est parfaitement clair, poser une question simple en fournissant juste un exemplaire de fichier ini du type à traiter serait beaucoup plus pertinent qu'imposer un vague bout de code copié d'un sujet du forum US vieux de 10 ans
Re: [R] Convertir les données de plusieurs fichiers .ini dans un seul tableau.
Posté : mer. 23 sept. 2020 22:26
par Boulanza
Bonsoir,
mikell a écrit : ↑mer. 23 sept. 2020 14:04
La fonction
_FileWriteFromArray() peut
bien évidemment écrire un tableau dans un fichier, elle est faite pour ça - comme son nom l'indique et comme l'aide l'explique
Je voulais dire la suggestion de Monsieur mikell. Votre idée est excellente, elle marche bien, mais pas pour les tableaux comme je l'ai expliqué clairement dans mes écrits.
Cordialement.