[FUNC] Afficher le contenu de Plusieurs Fichiers dans un seul Combo

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 125
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

[FUNC] Afficher le contenu de Plusieurs Fichiers dans un seul Combo

#1

Message par Numeric »

Salut :) ,
J'ai voulu vous présenter cette fonction qui vous permettra d'afficher le contenu de plusieurs fichiers dans seul combo.. :)
Quelques explications sont nécessaires :
seulement la valeur de la variable : $String_Split_Liste , s'insère de la façon suivante : Les noms des différents fichiers à lire sont séparés par des virgules EXEMPLE : 'Fichier1.txt, Fichier2.ini, Fichier3.txt'
c'est toute la difficulté :lol:

Code : Tout sélectionner

; #FUNCTION# ====================================================================================================================
; Name ..........: DocToCombo
; Description ...: Affiche le contenu de plusieurs fichiers dans un combo
; Syntax ........: DocToCombo(Byref $id_Combo, $String_Split_Liste)
; Parameters ....: $id_Combo            - [in/out] an integer value.
;                  $String_Split_Liste  - an unknown value.
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......: $String_Split_Liste == ecrivez les noms de tous les fichiers à lire:: ces noms sont séparés par des virgules
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func DocToCombo($id_Combo, $String_Split_Liste)
	Local $oOpen[9999], $ioFileRead[9999][2], $sStringSplit, $ShowList, $Allst

	If $String_Split_Liste <> '' And IsString($String_Split_Liste) = 1 Then
		$sStringSplit = StringSplit($String_Split_Liste, ',')
	Else
		Return SetError(1, 0, -3)
	EndIf

	For $i = 0 To $sStringSplit[0]
		$oOpen[$i] = FileOpen($sStringSplit[$i], 0)
		If $oOpen[$i] = -1 Then ContinueLoop
		$ioFileRead[$i][0] = FileRead($oOpen[$i])
		FileClose($oOpen[$i])

		If @error = 1 Or @error = -1 Then ContinueLoop
		$Allst = StringReplace(StringStripWS($ioFileRead[$i][0], 3), @CRLF, "|")
		$ShowList = GUICtrlSetData($id_Combo, $Allst)
	Next
	ReDim $oOpen[1]
	ReDim $ioFileRead[0][0]

EndFunc   ;==>DocToCombo
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 125
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] Afficher le contenu de Plusieurs Fichiers dans un seul Combo

#2

Message par Numeric »

Voici un exemple

Code : Tout sélectionner

#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 472, 186, 241, 124)
GUISetBkColor(0x808000)
Global $Combo1 = GUICtrlCreateCombo("", 120, 72, 233, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
Global $Label1 = GUICtrlCreateLabel("Voir toutes les listes", 120, 32, 237, 21, $SS_CENTER)
GUICtrlSetFont(-1, 11, 800, 2, "Modern No. 20")
Global $Label2 = GUICtrlCreateLabel("AutoIt", 360, 152, 79, 29, $SS_CENTER, $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 16, 800, 2, "Monotype Corsiva")
GUICtrlSetBkColor(-1, 0x800080)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

If Not FileExists(@ScriptDir & '\A.txt') Then
	FileWrite(@ScriptDir & '\A.txt', 'Bonjour1' & @CRLF & 'Lundi' & @CRLF & 'Mardi' & @CRLF & 'Mercredi' & @CRLF & 'jeudi' & @CRLF & 'vendredi' & @CRLF & 'Samedi' & @CRLF & 'Dimanche')
EndIf

If Not FileExists(@ScriptDir & '\B.txt') Then
	FileWrite(@ScriptDir & '\B.txt', 'Bonjour2' & @CRLF & 'Janvier' & @CRLF & 'Fevrier' & @CRLF & 'Mars')
EndIf

If Not FileExists(@ScriptDir & '\C.txt') Then
	FileWrite(@ScriptDir & '\C.txt', 'Bonjour3' & @CRLF & 'Mr Numeric' & @CRLF & 'Mr DelEAU' & @CRLF & 'Mr GOGOGAGA')
EndIf

DocToCombo($Combo1, 'A.txt,B.txt,C.txt')

While 1

	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Form1
		Case $Form1
		Case $Form1
		Case $Form1
		Case $Combo1
		Case $Label1
		Case $Label2
			GUISetState(@SW_HIDE, $Form1)
			Sleep(3000)
			GUISetState(@SW_SHOW, $Form1)

	EndSwitch
WEnd







; #FUNCTION# ====================================================================================================================
; Name ..........: DocToCombo
; Description ...: Affiche le contenu de plusieurs fichiers dans un combo
; Syntax ........: DocToCombo(Byref $id_Combo, $String_Split_Liste)
; Parameters ....: $id_Combo            - [in/out] an integer value.
;                  $String_Split_Liste  - an unknown value.
; Return values .: None
; Author ........: Numeric
; Modified ......:
; Remarks .......: $String_Split_Liste == ecrivez les noms de tous les fichiers à lire:: ces noms sont séparés par des virgules
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func DocToCombo($id_Combo, $String_Split_Liste)
	Local $oOpen[9999], $ioFileRead[9999][2], $sStringSplit, $ShowList, $Allst

	If $String_Split_Liste <> '' And IsString($String_Split_Liste) = 1 Then
		$sStringSplit = StringSplit($String_Split_Liste, ',')
	Else
		Return SetError(1, 0, -3)
	EndIf

	For $i = 0 To $sStringSplit[0]
		$oOpen[$i] = FileOpen($sStringSplit[$i], 0)
		If $oOpen[$i] = -1 Then ContinueLoop
		$ioFileRead[$i][0] = FileRead($oOpen[$i])
		FileClose($oOpen[$i])

		If @error = 1 Or @error = -1 Then ContinueLoop
		$Allst = StringReplace(StringStripWS($ioFileRead[$i][0], 3), @CRLF, "|")
		$ShowList = GUICtrlSetData($id_Combo, $Allst)
	Next
	ReDim $oOpen[1]
	ReDim $ioFileRead[0][0]

EndFunc   ;==>DocToCombo


De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [FUNC] Afficher le contenu de Plusieurs Fichiers dans un seul Combo

#3

Message par jchd »

Pourquoi passer le nom des fichiers en un seul paramètre, séparés par des virgules ? Cela empêche l'usage de fichiers dont le nom comporte une virgule.
Essaie de faire plus propre et plus concis :

Code : Tout sélectionner

#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 472, 186, 241, 124)
Global $Combo1 = GUICtrlCreateCombo("", 120, 72, 253, 55, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $sFic1 = _TempFile(), $sFic2 = _TempFile(), $sFic3 = _TempFile()

FileWrite($sFic1, 'Bonjour1' & @CRLF & 'Lundi' & @CRLF & 'Mardi' & @CRLF & 'Mercredi' & @CRLF & 'jeudi' & @CRLF & 'vendredi' & @CRLF & 'Samedi' & @CRLF & 'Dimanche')
FileWrite($sFic2, 'Bonjour2' & @CRLF & 'Janvier' & @CRLF & 'Fevrier' & @CRLF & 'Mars')
FileWrite($sFic3, 'Bonjour3' & @CRLF & 'Mr Numeric' & @CRLF & 'Mr DelEAU' & @CRLF & 'Mr GOGOGAGA')

Local $aFichiers = [$sFic1, $sFic2, $sFic3]
DocToCombo($Combo1, $aFichiers)

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

FileDelete($sFic1)
FileDelete($sFic2)
FileDelete($sFic3)

Func DocToCombo($iCombo, ByRef $aListe)
	If IsArray($aListe) Then
		Local $sItems
		For $File In $aListe
			$sItems &= StringRegExpReplace(StringStripWS(FileRead($File), 3), "\R|$", "|")
		Next
		GUICtrlSetData($iCombo, $sItems)
	EndIf
EndFunc   ;==>DocToCombo
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Numeric
Niveau 5
Niveau 5
Messages : 125
Enregistré le : mer. 23 mars 2016 08:17
Status : Hors ligne

Re: [FUNC] Afficher le contenu de Plusieurs Fichiers dans un seul Combo

#4

Message par Numeric »

Merci jchd :D ,
Ton idée est excellente, :D
d'ailleurs je vais l'améliorer un peu plus cette fonction, je vais travailler sur le sujet après mes exams..je vais Rendre les comboBox un peu plus stylées :mrgreen:
De 0 et 1 vers les étoiles , tout part du Binaire, Numeric
Répondre