Probleme d'execution d'action successives

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tilo456
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Probleme d'execution d'action successives

#1

Message par tilo456 »

Bonjour,

je voulais faire un script qui affiche une liste dans une fenêtre, pouvoir modifier cette liste et l'enregistrer.

le problème c'est que après avoir enregistrer, je me suis aperçu que la liste était doublée.

j'ai voulu modifier cela en enregistrant le fichier sous un autre nom aa un autre emplacement (en tmp.txt) puis copié le tmp.txt au bon emplacement en changeant son nom.

mais voila le probleme est que l'action d'enregistrer s'effectue mais les action suivantes non...

Voila mon Script:

Code : Tout sélectionner

#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <FileConstants.au3>

$Form = GUICreate("Ajout d'un TAG", 265, 396, 650, 115, $WS_EX_TOPMOST)
$Edit = GUICtrlCreateEdit("", 8, 64, 252, 321)

;$Input = GUICtrlCreateInput("", 32, 24, 265, 21)
$Open = GUICtrlCreateButton("Ouvrir", 8, 24, 75, 25, 0)
$Save = GUICtrlCreateButton("Sauver", 95, 24, 75, 25, 0)
$QUIT = GUICtrlCreateButton("Quitter", 180, 24, 75, 25, 0)
;$Button3 = GUICtrlCreateButton("Nouveau", 488, 24, 75, 25, 0)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
        Switch $nMsg
    Case -3
        Exit
    Case $Open
        $liste = ("AUTOIT\inventaire\liste\liste.txt")
        If @error Then
            MsgBox(4096,"","La liste est introuvable")
        Else
;           GUICtrlSetData($Input,$liste)
            $open = FileOpen($liste,0)
            $read = FileRead($liste)
            FileClose($liste)
            GUICtrlSetData($Edit,$read)
        EndIf
    Case $Save
		$readctrl = GUICtrlRead($Edit)
		FileWrite("AUTOIT\inventaire\liste\tmp\tmp.txt",$readctrl)
		FileCopy("AUTOIT\inventaire\liste\tmp\tmp.txt", "AUTOIT\inventaire\liste\liste.txt",9)
		;FileDelete("AUTOIT\inventaire\liste\liste1.txt")

		Exit

	Case $QUIT
		Exit

;    Case $Button3
;        GUICtrlSetData($Edit,"")
		EndSwitch
WEnd
si l'un de vous vois mon erreur je suis preneur

Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2148
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Probleme d'execution d'action successives

#2

Message par jchd »

L'aide de FileWrite dit bien, bille en tête :
Écrit du texte ou des données à la fin d'un fichier précédemment ouvert.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

tilo456
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Probleme d'execution d'action successives

#3

Message par tilo456 »

mais le filewrite fonctionne c'est après que ça bloque

tilo456
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Probleme d'execution d'action successives

#4

Message par tilo456 »

plus exactement c'est le FileCopy qui ne s’exécute pas

Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6000
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Probleme d'execution d'action successives

#5

Message par mikell »

Ce que jchd veut dire (je crois..) c'est que FileOpen et son mode ça peut servir quand on veut lire un fichier mais aussi quand on veut écrire dedans :idea:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )

Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2148
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Probleme d'execution d'action successives

#6

Message par jchd »

Je voulais dire que si la liste est doublée (cf OP) c'est parce que FileWrite fait en fait un Append.
Ensuite le reste n'est qu'un kludge pour contourner le problème ci-dessus.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

tilo456
Niveau 1
Niveau 1
Messages : 12
Enregistré le : mar. 23 juin 2020 12:12
Status : Hors ligne

Re: Probleme d'execution d'action successives

#7

Message par tilo456 »

OK je comprend.
Du coups c'est ce que j'ai voulu faire en faisant en sorte qu'il créé un nouveau fichier mais supprime l'ancien, renomme le nouveau avec le nom de l'ancien.
Mais le problème c'est que rien ne s’exécute...

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 825
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Probleme d'execution d'action successives

#8

Message par walkson »

Bonjour,
Tout d'abord "AUTOIT\inventaire\liste\tmp\tmp.txt" n'est pas un chemin complet
En suite FileCopy() est inutile.
Le mode d'écriture comme l'indique Mikell, est désigné par FileOpen().
Soit il est en écriture $FO_APPEND (1) = Mode écriture (ajoute à la fin du fichier) et vous rajouter du texte au texte.
Soit vous écrasez le texte par le nouveau $FO_OVERWRITE (2) = Mode écriture (efface le contenu précédent) et vous remplacez le texte par le nouveau.
Pour résumer, vous lisez l'édit, vous ouvrez le fichier en mode overwrite, vous écrivez le texte et vous fermez le fichier.
Autre point,
 $liste = ("AUTOIT\inventaire\liste\liste.txt")      
 If @error Then
            MsgBox(4096,"","La liste est introuvable")
        Else
attribuer une valeur à une variable ne constitue pas une erreur et ne vérifie pas si le chemin existe (voir FileExiste())
Dans le cas présent, je peux vous dire que le chemin n'existe pas puisqu'il est incomplet :P
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)

Répondre