Page 1 sur 1

[R] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 11:35
par jeanmimigab
Bonjour à tous(tes) :D

Je suis en train de modifier un de mes programme qui utilise des combo pour afficher une liste se trouvant dans différents fichier.txt
cela fonctionne bien si j'associe un fichier pour un combo
par exemple 2 combos avec 2 fichiers > pas de souci

Code : Tout sélectionner

$fileE = FileOpen("BDD\bddE.txt")
$fileG = FileOpen("BDD\bddG.txt")
$ligneE = FileReadLine($fileE)
$ligneG = FileReadLine($fileG)
GUICtrlSetData($Combo1, $ligneE & "|")
GUICtrlSetData($Combo2, $ligneG & "|")

par contre si j'essaie d'afficher le contenu des des fichiers dans un seul combo je galère ( 1 fichier après l'autre sans mélanger les lignes)
tous mes essais donnent des résultats mitigés.
Par exemple ce test là m'insère la premier ligne du deuxième fichier entre chaque ligne du premier fichier

Code : Tout sélectionner

$fileE = FileOpen("BDD\bddE.txt")
$fileG = FileOpen("BDD\bddG.txt")
$ligneE = FileReadLine($fileE)
$ligneG = FileReadLine($fileG)
GUICtrlSetData($Combo1, $ligneE & "|" & $ligneG & "|")
bref...je ne sais pas si c'est possible et comment m'y prendre... :?

Merci d'avance pour votre aide :wink:

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 11:48
par blacksoul305
Salut,

je dirais que deux solutions sont possibles. Une qui nécessite plus de mémoire, une autre qui nécessite plus de temps.

Celle qui consomme plus de mémoire consisterait à prendre deux variables, disons : $sContenuFic1 et $sContenuFic2 en les initialisant d'abord comme deux chaînes vides. Faire une boucle pour le lire les deux fichiers en même temps ligne par ligne, et pour chacune des lignes, faire un $sContenuFic &= $sLigneLuFic & "|". Puis à la fin de la boucle, quand tous les fichiers sont lus, faire un GUICtrlSetData($Combo, $sContenuFic1 & $sContenuFic2)

Celle qui consomme plus de temps serait simplement de lire les fichiers ligne par ligne, l'un après l'autre et ajouter les lignes à la combo. Il y aura donc deux boucles à faire.

Dans les deux cas, le contenu n'est pas mélangé. Bon courage !

EDIT (post-réponse de mikell) : Oh mais ce chat alors...

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 13:09
par mikell
?

Code : Tout sélectionner

$fileE = FileRead("BDD\bddE.txt")
$fileG = FileRead("BDD\bddG.txt")
$strE = StringReplace(StringStripWS($fileE, 3), @crlf, "|")
$strG = StringReplace(StringStripWS($fileG, 3), @crlf, "|")
GUICtrlSetData($Combo1, $strE & "|" & $strG)

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 14:16
par jeanmimigab
Merci pour cette piste blacksoul305, je vais voir ce que cela peut donner.
@mikell,
avec le modification proposée, le contenu du combo donne cela... :?
1
2
1
2
1
2
etc....

je continu de chercher une solution en attendant...

Merci beaucoup à vous deux :wink:

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 15:28
par jeanmimigab
En bidouillant j'ai trouvé une solution ( avec FileRead et fileWrite) qui n'est pas terrible mais qui règle le problème > je crée un fichier combo.txt qui reprend le contenu des 2 fichiers (un peu comme "TYPE ...>> ..." en batch).
reste juste à lire le fichier combo.txt dans mon Combo1
Mais bon je préfèrerai la solution de mikell :wink:

Code : Tout sélectionner

$fileE = FileRead("BDD\bddE.txt")
$fileG = FileRead("BDD\bddG.txt")
$ligneE = FileRead($fileE)
$ligneG = FileRead($fileG)
FileWrite ( "BDD\combo.txt", $ligneE &@crlf & $ligneG &@crlf)

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 15:33
par Numeric
Salut,
essaye ça :

Code : Tout sélectionner

GUICtrlSetData($Combo1,$Read1&'|'&$Read2)

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 15:39
par Numeric
Si l'exemple peut t'inspirer :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
Global $Combo1 = GUICtrlCreateCombo(" ", 176, 104, 313, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))

Global $Button1 = GUICtrlCreateButton("Button1", 272, 224, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;===================================================================
	Local $Fich1, $Fich2
$Fich1 = @ScriptDir&'\Sheri.txt'
$Fich2 = @ScriptDir&'\Sheri2.txt'
If Not FileExists($Fich1) Then
	FileWrite($Fich1,'Fichier1'&@CRLF&'bonjour1')
EndIf
If Not FileExists($Fich2) Then
	FileWrite($Fich2,'Fichier2'&@CRLF&'bonjour2')
EndIf

$iOpen1 = FileOpen($Fich1,0)
If $iOpen1 = -1 Then MsgBox(16,'','Erreur')
$iOpen2 = FileOpen($Fich2,0)
$Read1 = FileRead($Fich1)
$Read2 = FileRead($Fich2)

	GUICtrlSetData($Combo1,$Read1&'|'&$Read2)
;======================================================================
While 1

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

  Case $Form1
  Case $Form1
  Case $Form1
  Case $Form1
  Case $Combo1
  Case $Button1
 EndSwitch
WEnd

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 15:41
par Numeric
j'avais pas vu l'exemple de mikell Haha!

Re: [..] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : dim. 05 juin 2016 18:08
par jeanmimigab
c'est cool, en piochant dans ton code et celui de mikell, j'ai un exemple qui fonctionne, il ne reste plus que l'adaptation à mon usine à gaz de script à réaliser

UN GRAND MERCI à vous tous(tes) et bonne soirée :wink:

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
Global $Combo1 = GUICtrlCreateCombo(" ", 176, 104, 313, 25, BitOR($GUI_SS_DEFAULT_COMBO, 0))
Global $Button1 = GUICtrlCreateButton("Button1", 272, 224, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GuictrlsetLimit($Combo1,1000)
;===================================================================
   Local $Fich1, $Fich2
$Fich1 = @ScriptDir&'\BDD\bddE.txt'
$Fich2 = @ScriptDir&'\BDD\bddG.txt'
$iOpen1 = FileOpen($Fich1,0)
$iOpen2 = FileOpen($Fich2,0)
$Read1 = FileRead($Fich1)
$Read2 = FileRead($Fich2)
$strE = StringReplace(StringStripWS($Read1, 3), @crlf, "|")
$strG = StringReplace(StringStripWS($Read2, 3), @crlf, "|")
GUICtrlSetData($Combo1, $strE & "|" & $strG)

;======================================================================
While 1

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

  Case $Form1
  Case $Form1
  Case $Form1
  Case $Form1
  Case $Combo1
  Case $Button1
 EndSwitch
WEnd

Re: [R] Afficher le contenu de 2 fichiers.txt dans un combo

Posté : mar. 07 juin 2016 20:25
par Numeric
Salut , :D
Je profite pour ceux que ça intéresserait encore donner une petite fonction pour ça :D
On gagnera un peu plus en temps avec ça :D http://www.autoitscript.fr/forum/viewto ... 21&t=14099