Page 1 sur 1
[R] Effacer un mot d'un fichier ini à partir d'une Liste
Posté : mar. 22 févr. 2011 10:47
par pierrotm777
Bonjour,
J'essaie d'effacer un mot d'un fichier .ini du genre:
Code : Tout sélectionner
[SkinToolDS]
GuiFormat=1
WinPosition=957,290
[Commands]
command1=
command2=
command3=
velo=
[Variables]
variable1=
variable2=
variable3=
J'arrive bien à l'effacer de la liste mais pas du fichier .ini.
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
Dim $Inifile = @ScriptDir&"\skintoolds.ini"
If not FileExists($Inifile) Then
IniWrite($Inifile,"SkinToolDS","GuiFormat","1")
IniWrite($Inifile,"SkinToolDS","WinPosition","-1,-1")
IniWriteSection($Inifile,"Commands","audio")
IniWriteSection($Inifile,"Variables","")
EndIf
Dim $CmdsList = IniReadSection($Inifile, "Commands")
Dim $VarList = IniReadSection($Inifile, "Variables")
;Gui Clear Settings
$ClearSettingsGUI = GUICreate("", 490, 490, -1, -1)
GUICtrlCreateLabel("Select the 'Command' or the 'Variable' to delete !!!",100, 5, 300, 20)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$CommandsList = GUICtrlCreateList("",2, 22, 488, 200)
GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")
For $i = 1 To $CmdsList[0][0]
GUICtrlSetData($CommandsList, $CmdsList[$i][0])
Next
$CommandsDelete = GUICtrlCreateButton("Delete", 150, 225, 168, 25)
$VariablesList = GUICtrlCreateList("",2, 260, 488, 200)
GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")
For $i = 1 To $VarList[0][0]
GUICtrlSetData($VariablesList, $VarList[$i][0])
Next
$VariablesDelete = GUICtrlCreateButton("Delete", 150, 463, 168, 25)
GUISetState()
$ClearSettingsGUIStatus = False
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CommandsDelete
_GUICtrlListBox_DeleteString($CommandsList, _GUICtrlListBox_GetCurSel($CommandsList))
IniDelete($Inifile,"Commands",_GUICtrlListBox_GetCurSel($CommandsList))
Case $VariablesDelete
_GUICtrlListBox_DeleteString($VariablesList, _GUICtrlListBox_GetCurSel($VariablesList))
IniDelete($Inifile,"Variables",_GUICtrlListBox_GetCurSel($VariablesList))
EndSwitch
Wend
Merci de votre aide par avance
Re: [..] Effacer un mot d'un fichier ini à partir d'une List
Posté : mar. 22 févr. 2011 11:07
par zeshrek
Ca commence mal...
Quand je lance ton script tels que tu le fournis, il me fait cette erreur :
Re: [..] Effacer un mot d'un fichier ini à partir d'une List
Posté : mar. 22 févr. 2011 11:54
par pierrotm777
Normal

, le script génère le fichier skintoolds.ini qu'avec les sections [Commands] et [Variables] sans
rien d'autre dessous, et comme il n'y a pas de test d'erreur, ça bug.
Je vous propose de faire un copier coller de l'exemple du fichier ini du post 1

Re: [..] Effacer un mot d'un fichier ini à partir d'une List
Posté : mar. 22 févr. 2011 12:51
par zeshrek
Ok, avec ces données, ca marche.
Et pour ton pb, voilà une solution :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
Dim $Inifile = @ScriptDir&"\skintoolds.ini"
If not FileExists($Inifile) Then
IniWrite($Inifile,"SkinToolDS","GuiFormat","1")
IniWrite($Inifile,"SkinToolDS","WinPosition","-1,-1")
IniWriteSection($Inifile,"Commands","audio")
IniWriteSection($Inifile,"Variables","")
EndIf
Dim $CmdsList = IniReadSection($Inifile, "Commands")
Dim $VarList = IniReadSection($Inifile, "Variables")
;Gui Clear Settings
$ClearSettingsGUI = GUICreate("", 490, 490, -1, -1)
GUICtrlCreateLabel("Select the 'Command' or the 'Variable' to delete !!!",100, 5, 300, 20)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$CommandsList = GUICtrlCreateList("",2, 22, 488, 200)
GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")
For $i = 1 To $CmdsList[0][0]
GUICtrlSetData($CommandsList, $CmdsList[$i][0])
Next
$CommandsDelete = GUICtrlCreateButton("Delete", 150, 225, 168, 25)
$VariablesList = GUICtrlCreateList("",2, 260, 488, 200)
GUICtrlSetFont(-1, 10, 450, 0, "MS Sans Serif")
For $i = 1 To $VarList[0][0]
GUICtrlSetData($VariablesList, $VarList[$i][0])
Next
$VariablesDelete = GUICtrlCreateButton("Delete", 150, 463, 168, 25)
GUISetState()
$ClearSettingsGUIStatus = False
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CommandsDelete
_GUICtrlListBox_DeleteString($CommandsList, _GUICtrlListBox_GetCurSel($CommandsList))
$CmdsList[0][0] = _GUICtrlListBox_GetCount($CommandsList)+1
redim $CmdsList[$CmdsList[0][0]][2]
for $i = 0 to $CmdsList[0][0] -2
$CmdsList[$i+1][0]=_GUICtrlListBox_GetText($CommandsList, $i)
Next
IniWriteSection($Inifile, "Commands",$CmdsList)
Case $VariablesDelete
_GUICtrlListBox_DeleteString($VariablesList, _GUICtrlListBox_GetCurSel($VariablesList))
$VarList[0][0] = _GUICtrlListBox_GetCount($VariablesList)+1
redim $VarList[$VarList[0][0]][2]
for $i = 0 to $VarList[0][0] -2
$VarList[$i+1][0]=_GUICtrlListBox_GetText($VariablesList, $i)
Next
IniWriteSection($Inifile, "Variables",$VarList)
EndSwitch
Wend
Re: [..] Effacer un mot d'un fichier ini à partir d'une List
Posté : mar. 22 févr. 2011 13:07
par pierrotm777
C'est super ,
Merci beaucoup !!!
Re: [R] Effacer un mot d'un fichier ini à partir d'une Liste
Posté : mar. 22 févr. 2011 13:14
par pierrotm777
Pour l'erreur en cas d'absence de ligne sous les sections Commands et Variables ?
Serait-il aussi possible d'avoir un 2 boutons qui m'effacent toutes les lignes de ces deux sections ?
Re: [R] Effacer un mot d'un fichier ini à partir d'une Liste
Posté : mar. 22 févr. 2011 13:39
par zeshrek
Pour la gestion des erreurs, tu peux par exemple :
- Lignes 5 a 9 quand tu crées un fichier si il n'existe pas déjà, tu pourrais commencer par créer un fichier valide... ca serait un bon début
- Apres les lignes 12 & 13 ajouter un test sur la valeur de $CmdsList[0][0] et $VarList[0][0]
Pour vider tes lilstbox, tu pourrais peut etre regarder du coté de _GUICtrlListBox_ResetContent()
Re: [R] Effacer un mot d'un fichier ini à partir d'une Liste
Posté : mar. 22 févr. 2011 14:18
par pierrotm777
Merci encore pour votre aide .
Ce forum est vraiment génial pour apprendre à bien travailler .
