[R] Crée un fichier une seul et unique fois

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Crée un fichier une seul et unique fois

#1

Message par Ks10 »

Bonsoir à tous !

Voici un petit exemple du script :

Code : Tout sélectionner

#include <File.au3>

If FileExists(@ScriptDir & "\monfichier.txt") Then

Msgbox(64, "Informations", "OK")

Else

_FileCreate(@ScriptDir & "\monfichier.txt")
$file = FileOpen(@ScriptDir & "\monfichier.txt", 1)
FileWriteLine($file, "mon texte")

Endif
 
Ce que je souhaite faire c'est que mon programme crée une seul et unique fois ce fichier et si celui-ci est supprimer, il doit savoir qu'il ne doit plus la recrée. Je veux que ce fichier est crée qu'une seul fois et que mon programme reconnait qu'il a déjà était crée une fois. Et que si c'est le cas il envoie pètre xD

J'aurais besoin d'une idée de structure, des commandes nécessaires et une explication autour d'eux et sur les différentes façon de procéder.

Merci d'avance :)
Modifié en dernier par Ks10 le mer. 03 juil. 2013 11:37, modifié 1 fois.
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#2

Message par Ks10 »

Je reviens vers vous ! J'ai fait mes tests de mon côtés et j'ai trouver une structure intéressante.

Voici l'idée de la structure :

- On jouera avec un fichier supplémentaire.
- Dans le répertoire du script on aura au préalable un fichier (verif.txt) déjà crée avec comme valeur "1" à l'intérieur.
- Lorsque l'utilisateur lance le programme, celui-ci écrit dans le fichier et incrémente la valeur 1 à 2.
- Le programme alors vérifie si le fichier principale (par exemple "test.txt") existe, si c'est le cas il affiche un message OK et si ce n'est pas le cas il crée le fichier MAIS avant de crée le fichier il vérifie dans le fichier "verif.txt" si la valeur est à 2.
- Si la valeur est à 2, le programme affiche un message "fichier déjà crée une fois".

Si le fichier "verif.txt" est supprimer, le programme affiche une erreur et quitte le programme également.

Seul soucis : Si le fichier est ouvert et que l'utilisateur modifie la valeur et met à 1. Le programme créera le fichier...
A moins qu'il faudrait rajouter également la valeur 1 et 2 à vérifier ? Pour plus de sécurité ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#3

Message par mikell »

Sorry j'avais mal lu
Si la vérification doit se faire alors que le programme est encore ouvert, passer par une variable suffit
Si le programme est fermé puis relancé, il faut bien qu'il mémorise quelque part le fait que le fichier a existé
Dans ce cas si le fichier en question a toujours le même nom, tu peux faire une clé de registre custom avec comme valeur 1 (fichier déjà créé) ou 0 (fichier jamais créé)
" 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
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#4

Message par Ks10 »

Effectivement, _fileCreate est en trop désolé.

De ce côté il n'y a pas de problème mais relit mon énoncer principale et regarde ce que je cherche à faire :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#5

Message par mikell »

Hum j'ai édité le précédent :oops:
" 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
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#6

Message par Ks10 »

mikell a écrit : Si le programme est fermé puis relancé, il faut bien qu'il mémorise quelque part le fait que le fichier a existé
Dans ce cas si le fichier en question a toujours le même nom, tu peux faire une clé de registre custom avec comme valeur 1 (fichier déjà créé) ou 0 (fichier jamais créé)
Justement, pour vérifier si il a déjà existé j'ai utiliser le fichier "verif.txt" et je me suis baser sur les valeurs présentes.
J'ai utiliser cette méthode parce que je ne maitrise pas les clés de registre. Et le soucis avec une custom clé c'est que si l'utilisateur change le programme de pc, la clé de registre n'existera plus du coup il recréera à nouveau le fichier x)

Tandis que avec un fichier local si l'utilisateur le déplace, il déplace le fichier avec et la vérification est toujours possible.
Le programme peut donc déterminer si le fichier a déjà été crée ou pas grâce aux valeurs présentes dans le fichier "verif.txt"

Tu en pense quoi ?
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#7

Message par aulus »

Ou alors, vous créez un fichier-bidon lors de la création du fichier qui doit être créé une seule fois. Et vous testez si ce fichier bidon existe. Si non, la création peut se faire. Si oui, la création ne peut pas se faire. Créez ce fichier bidon dans un autre dossier (ou à la racine du disque) afin que l'utilisateur ne le découvre pas (de peur qu'il ait l'idée de le supprimer parce que vide et donc inutile à ses yeux).
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#8

Message par Ks10 »

Le même problème persiste, si l'utilisateur déplace le programme sur un autre pc il n'a plus aucun repère x)
Le programme recréera un fichier bidon et le fichier en question.

Alors que je veux que le fichier soit crée une fois quelque soit le pc sur lequel il est.
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#9

Message par aulus »

Le problème avec le fichier verif.txt, c'est que l'utilisateur peut le bidouiller.
A chaque ouverture du programme, lui faire vérifier si le fichier de création unique existe. Si oui, (re)créer le fichier-bidon.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#10

Message par mikell »

Ks10 a écrit :Le même problème persiste, si l'utilisateur déplace le programme sur un autre pc
C'est clair, et je répète : il faut bien que le programme mémorise quelque part le fait que le fichier a existé
Si l'exe est déplacé seul sans la mémorisation (quelle qu'elle soit) il n'y a AUCUN moyen qu'il se souvienne de quoi que ce soit

Edit
Rectification, il existe un moyen, l'externalisation internet
Tu stockes sur un ftp ou ailleurs ton fichier de vérif et le prog à chaque lancement va tester ce fichier
" 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 : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#11

Message par jchd »

Pour une sécurité accrue, tout mettre dans le nuage. Programme, identification et données : hop, dans le cloud.
Sinon tu auras toujours des soucis pour bloquer les possibilités de bidouillage.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#12

Message par jguinch »

Salut.
Sinon, pour faire encore un peu de bricolage, on peut jouer avec la date de modification du programme (au lieu de créer un fichier de trace, on change la date de modification du programme)...
Ca reste du bricolage, loin de la sécurité qu'on aura en externalisant sur le cloud, mais c'est peut-être suffisant...

Edit :genre un petit truc comme ça :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Crée un fichier une seul et unique fois

#13

Message par Ks10 »

Je remercie tout le monde pour leurs idées et leurs conseils :)
La solution que j'ai choisie c'est externalisation sur le cloud.

L'avantage c'est que oui, si le fichier est à l'extérieur du poste il peut être vérifier à chaque fois et quelque soit le changement de poste effectuer.
Selon moi c'est la meilleur solution pour la sécurisation du programme.
Répondre