[RESOLU] Supprimer un fichier ?

Vous voulez de l'aide ? Postez ici :)
Post Reply
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

[RESOLU] Supprimer un fichier ?

Post by niconil »

Bonjour,

je cherche une action permettant de supprimer un fichier

comme dis dans un autre message du forum
j'ai regarder du coté des methodes QFile

mais alors que j'arrive a tester l'existence du fichier avec la methode exists
je n'arrive pas à le supprimer en utilisant la methode remove
elle n'est apparamment pas connue ?

quelqu'un sait-il supprimer un fichier avec une action Actionaz ?
Last edited by niconil on 20 Dec 2012, 11:51, edited 1 time in total.
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Supprimer un fichier ?

Post by Jmgr »

Salut,

Essaie avec File.remove :

Code: Select all

File.remove("/chemin/vers/fichier")
"My software never has bugs. It just develops random features."
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

Re: Supprimer un fichier ?

Post by niconil »

Je réactive ce vieux message pour tenter de le cloturer

Après quelques essais voilà où j'en suis :

J'ai utilisé, dans une action code, les méthode exists (test d'existence d'un fichier) et remove (action de suppression d'un fichier)
le contenu de mon script est donné ci-dessous :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.5.0" scriptVersion="1.0.0" os="Windows"/>
    <actions>
        <action name="ActionCode" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">//script permettant d'effacer un fichier
//prerequis :
//NomFichierComplet : contient le nom du fichier à supprimer
var NomFichierComplet = "U:\\USERS\\toto.txt"

var Fic = new QFileInfo( NomFichierComplet )

//Test de l'existence du Fichier NomFichierComplet
//if (File.exists(NomFichierComplet)) { //cette façon d'appeler la méthode exists ne fonctionne pas
if (Fic.exists()) {
	//il existe je le supprime
	File.remove(NomFichierComplet)
	//Fic.remove() //(cette façon d'appeler la methode remove ne fonctionne pas)
}</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
Maintenant ce qui ne va pas dans mon script :

L'appel de File.remove déclenche l'apparition d'une boite de dialogue pour confirmer la suppression
(j'aimerais bien me passer de cette fenêtre de confirmation (car bloquante pour actionaz))
et pire si je refuse la suppression mon script actionaz se termine en erreur (que je ne sais pas gérer)
pouvez-vous m'aider ?


De manière plus accessoire, une question de compréhension :
Dans les spécifications de QFile je vois que j'ai la possibilité d'appeler exists et remove de plusieurs façons (vu sur QFile Class Reference)

Methods
bool exists (self)
bool remove (self)

Static Methods
bool exists (QString fileName)
bool remove (QString fileName)

Mais dans la pratique ça ne marche pas comme cela pour exists et remove.
Pour l'un j'ai seulement le droit de faire un test du type <objet Qfile>.exists() et pour l'autre seulement de faire un test du type File.remove( "MonNomDeFichier" )
Là je ne comprends pas trop pourquoi j'ai ce mode de fonctionnement.
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Supprimer un fichier ?

Post by Jmgr »

L'appel de File.remove déclenche l'apparition d'une boite de dialogue pour confirmer la suppression
(j'aimerais bien me passer de cette fenêtre de confirmation (car bloquante pour actionaz))
Pas forcément, avec les options tu peux désactiver cette boîte de dialogue : (voir https://wiki.actionaz.org/doku.php?id=e ... ile#remove)

Code: Select all

File.remove("file.txt", {
    noConfirmDialog: true
});
(pas testé vu que je n'ai pas de Windows sous la main)

La doc officielle de de QFile c'est celle-là : http://doc.qt.digia.com/qt/qfile.html (l'autre c'est la doc pour la version Python de Qt)
Normalement exist et remove devraient fonctionner de la même manière dans les deux cas, mais si ce n'est pas le cas alors c'est un bug de Qt, pas d'Actionaz, puisque les bindings Javascript de Qt sont générés automatiquement.

EDIT :
File.exists() n'existe pas, QFile.exists() oui. Dans le premier cas il s'agit d'une fonction d'Actionaz, dans le second d'une fonction de Qt. (mais c'est vrai que je pourrais ajouter exists() à File)
"My software never has bugs. It just develops random features."
niconil
Posts: 93
Joined: 12 Mar 2012, 10:11

Re: Supprimer un fichier ?

Post by niconil »

Ok maître
vous avez encore raison

donc voici un script qui efface un fichier son seul interêt est d'isoler l'action d'effacement (action 4)
et l'action qui positionne une variable à la valeur du nom de fichier à effacer (action 1)

ce mini scénario est à votre disposition ci-dessous :

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actionaz" version="3.5.0" scriptVersion="1.0.0" os="Windows"/>
    <actions>
        <action name="ActionVariable" version="1.0.0"/>
        <action name="ActionCode" version="1.0.0"/>
        <action name="ActionConsole" version="1.0.0"/>
    </actions>
    <parameters/>
    <script pauseBefore="0" pauseAfter="0">
        <action name="ActionCode" comment="affectation de la variable">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">NomFichierComplet = "U:\\USERS\\toto.txt"</subParameter>
            </parameter>
        </action>
        <action name="ActionVariable" enabled="false">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="colorValue">
                <subParameter name="value" code="0">::</subParameter>
            </parameter>
            <parameter name="variable">
                <subParameter name="value" code="0">NomFichierComplet</subParameter>
            </parameter>
            <parameter name="type">
                <subParameter name="value" code="0">string</subParameter>
            </parameter>
            <parameter name="value">
                <subParameter name="value" code="0">U:\USERS\toto.txt</subParameter>
            </parameter>
            <parameter name="positionValue">
                <subParameter name="value" code="0">:</subParameter>
            </parameter>
        </action>
        <action name="ActionConsole" comment="simple point de contrôle">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="output">
                <subParameter name="value" code="0">information</subParameter>
            </parameter>
            <parameter name="text">
                <subParameter name="value" code="0">$NomFichierComplet</subParameter>
            </parameter>
        </action>
        <action name="ActionCode" comment="code de suppression du fichier designé par $NomFichierComplet">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="code">
                <subParameter name="value" code="1">//script permettant d'effacer un fichier
//prerequis :
//NomFichierComplet : contient le nom du fichier à supprimer

var Fic = new QFileInfo( NomFichierComplet )

//Test de l'existence du Fichier NomFichierComplet
if (Fic.exists()) {
	//il existe je le supprime
	File.remove(NomFichierComplet, { noConfirmDialog: true })
}</subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>
Un petit détail cependant, pour affecter la variable j'ai utilisé l'action 1 (qui est de type code), j'ai bien essayé de faire la même chose avec une action de type variable et là ça provoque des erreurs dans mon code de suppression comme si ma variable n'était pas du bon type

Vous-pouvez essayer il suffit de désactiver l'action 1 et d'activer l'action 2. A l'exécution vous aurez une belle erreur à l'action 4.
Faut-il que je rouvre un autre fil pour ce point ?
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Supprimer un fichier ?

Post by Jmgr »

Ha ! Bien vu, c'est un bug. En fait l'action Variable crée un objet de type "object" et pas de type "string".
Je corrige ça dès que possible.
"My software never has bugs. It just develops random features."
Post Reply