Merci mikell pour les corrections, mais cela ne touchait pas directement mon problème:
benjahinfo a écrit :
EDIT: Après tests, je me rends compte que cette ligne retourne toujours 0:
Si je veux afficher (Juste avant dans le script) la variable $filecontent dans une MsgBox, je me rends compte qu'elle n'affiche rien... Ce pourquoi, je pense que StringInStr retourne toujours 0.
Que dois-je faire, parce que la je bloque.
C'est après test, que je me suis rendu compte que l'on ne peut pas récupérer le contenu du fichier en faisant un FileWrite ! Ce pourquoi la MsgBox restait vide.
Il faut d'abord importer les données avec FileRead.
Encore une erreur du à la mauvaise lecture des fichiers d'aide peut-être...
Tout ceci est de ma faute, car à lire mon post/script comme ça, on pourrait croire que je veux simplement stocker les identifiants/mot de passes, pardonne moi car peut-être je n’ai pas été assez clair !
Or en fait ce que je voulais faire, et j'aurais du présenter mon problème de cette façon:
1/ La création du fichier s'il n'existe pas.
2/ Lecture du contenu du fichier.
3/ Ajout d'un nouvel utilisateur.
4/ Si un nom d'utilisateur est identique (non sensible à la casse), mettre à jours les informations.
5/ Enfin écriture des données.
Donc voici mon script pleinement corrigé et fonctionnel (Indiquez-moi, si vous le désirez, les possibles améliorations):
Code : Tout sélectionner
Func SaveUser($UserID, $Password, $AutoConnect = $GUI_UNCHECKED)
Local $fileerror = False
If Not FileExists($ConfigUserDirectory & "\user" & $OPT_CurrentProfile) Then
Local $filecreate = FileOpen($ConfigUserDirectory & "\user" & $OPT_CurrentProfile, 1 + 8)
If $filecreate = -1 Then
MsgBox(16, "Erreur", "Impossible de créer la sauvegarde.")
$fileerror = True
EndIf
FileClose($filecreate)
Local $fileCRLF = ""
Else
Local $fileCRLF = @CRLF
EndIf
If $fileerror = False Then
Local $fileread = FileOpen($ConfigUserDirectory & "\user" & $OPT_CurrentProfile)
If $fileread = -1 Then
MsgBox(16, "Erreur", "Impossible d'accéder à la sauvegarde des utilisateurs de Cacaoweb.")
EndIf
Local $filecontent = FileRead($fileread)
FileClose($fileread)
Local $filewrite = FileOpen($ConfigUserDirectory & "\user" & $OPT_CurrentProfile, 2)
If $filewrite = -1 Then
MsgBox(16, "Erreur", "Impossible de modifier la sauvegarde des utilisateurs.")
EndIf
Local $UserPosition = StringInStr($filecontent, $UserID & ";")
Select
Case $UserPosition = 0
If $AutoConnect = $GUI_CHECKED Then
$filecontent = StringReplace($filecontent, "True", "False")
$filecontent &= $fileCRLF & $UserID & ";" & $Password & ";True"
Else
$filecontent &= $fileCRLF & $UserID & ";" & $Password & ";False"
EndIf
Case $UserPosition > 0
Local $BoleanAutoConnect = "False"
If $AutoConnect = $GUI_CHECKED Then
$filecontent = StringReplace($filecontent, "True", "False")
$BoleanAutoConnect = "True"
EndIf
$filecontent = StringRegExpReplace($filecontent, "(?i:" & $UserID & ")" & "(.*?)\s", $UserID & ";" & $Password & ";" & $BoleanAutoConnect & @CRLF)
If @extended = 0 Then
$filecontent = StringRegExpReplace($filecontent, "(?i:" & $UserID & ")" & "(.*?)\z", $UserID & ";" & $Password & ";" & $BoleanAutoConnect)
EndIf
EndSelect
FileWrite($filewrite, $filecontent)
FileClose($filewrite)
EndIf
EndFunc ;==>SaveUser
Quand je relis mon premier post, je vois que la façon de poser ma question n'avait rien à voir avec mon problème, mais bon tout est bien, qui fini bien !
@mikell: En tout cas c'est bien grâce à toi mikell que j'ai pu mettre la main sur le vrai problème alors merci et a bientôt je l'espère dans un future post !
