Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

Créer un menu "Enregistrer"

le Sat 17 Mar - 14:55
J'enregistre des données dans un fichier grâce à la méthode sélectionneretenregistrer()

Pour cela, l'utilisateur doit cliquer sur un menu "Enregistrer sous".

J'aimerais ajouter un menu "Enregistrer" qui sauvegardera les données sans avoir besoin de passer par le sélectionneur de fichiers.

Pour cela, j'ai tenté d'enregistrer le chemin d'accès au fichier en utilisant la méthode chemin().
Sans succès car "aucun fichier est ouvert".

Comment faire pour récupérer le chemin d'accès au fichier choisit par l'utilisateur grâce à la méthode sélectionneretenregistrer() ?
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Sat 17 Mar - 21:52
corrigé, il faut tu retélécharges la nouvelle version beta.
(en cours de construction, elle devrait arriver d'ici 10 minutes)
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Sat 17 Mar - 23:55
Merci.
Pourrais-tu me donner un exemple d'utilisation de la méthode fichierexiste ?
Car je n'arrive pas à l'utiliser.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Mon 19 Mar - 13:42
Il me faudrait également un exemple pour la méthode lireligne.
Car j'ai essayé ceci, sans succès :
Code:

Ouvrir :

Rôles :

c :
:
conduit
mémo :
:
texte
Actions :

évoque c.
sélectionneretouvrir()
mémo1 vaut c.
lireligne()

Pour la méthode fichierexiste, j'ai essayé ceci, également sans succès :
Code:

Enregistrer_sous :

Rôles :

c :
:
conduit
chemin_sauvegarde est un texte
Actions :

évoque c.
sélectionneretenregistrer()
évoque c.
fermer()

tu concatènes c.
chemin() + c.
nomfichiercomplet() dans chemin_sauvegarde
Si c.
fichierexiste(chemin_sauvegarde) alors lis
évoque c.
enregistrer(chemin_sauvegarde)
ferme
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Mon 19 Mar - 16:04
Ce soir, quand j'aurai déposé une nouvelle beta, cet exemple fonctionnera !

[php]
Bogue Wan Conduit :

Enregistrer_sous :
Rôles :
c :: conduit
chemin_sauvegarde :: texte
ligne <
- c.retourchariot()
Actions :
évoque c.sélectionneretenregistrer()
affiche "répertoire + nom du fichier : " + c.nomfichiercomplet()
affiche "répertoire : " + c.chemin()
évoque c.fermer()
chemin_sauvegarde vaut c.nomfichiercomplet()
Si c.fichierexiste(chemin_sauvegarde) alors lis
"on sauvegarde !" !
évoque c.enregistrer(chemin_sauvegarde)
évoque c.écrire("ça marche")
évoque c.écrire(ligne)
évoque c.écrire("l'autre ligne")
évoque c.écrire(ligne)
évoque c.écrire("encore une ligne !!!")
évoque c.fermer()
("on va vérifier les informations sauvegardées :")
évoque c.ouvrir(chemin_sauvegarde)
affiche "1 : " + c.lireligne()
affiche "2 : " + c.lireligne()
affiche "3 : " + c.lireligne()
évoque c.fermer()
ferme
[/php]
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Mon 19 Mar - 16:49
Excellent ! Merci.
Pourra-t-on faire correspondre chaque ligne à un acteur, à la manière du tube_fichier_lecture, comme ceci par exemple :
Code:

mémo1 vaut c.
lireligne()
Car je voudrais remettre chaque valeurs enregistrées dans les acteurs correspondants.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Mon 19 Mar - 22:02
J'ai toujours une erreur avec fichierexiste().
Je veux faire en sorte que si l'utilisateur clique sur le menu "enregistrer", si il a auparavant "enregistrer sous" son document, ce dernier s'enregistre automatiquement.
Sinon, le sélectionneur de fichiers s'ouvre.
Voici mon code :
Code:

Si c.
fichierexiste(chemin_sauvegarde) alors lis
("Si le chemin d'accès est valide, on enregistre par dessus la sauvegarde précédente")
évoque c.
enregistrer(chemin_sauvegarde)
ferme
Sinon, lis
("Si le chemin d'accès est invalide, on ouvre le sélectionneur de fichiers")
évoque c.
sélectionneretenregistrer()
ferme

Hors, si chemin_sauvegarde est vide, il considère quand même que le fichier existe.
Voici le message d'erreur :
La valeur est incorrecte : Impossible d'enregistrer le fichier (K:\Avatar\Editeur de cartes (Accès refusé)) : /K:/Avatar/Editeur de cartes/
Ceci est le chemin d'accès de mon livre.
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Tue 20 Mar - 10:34
Bonjour Wam,

C'est pourtant ce que fait exactement l'exemple que j'ai donné précédemment ?

Peux-tu me donner un cours exemple de 20 lignes maxi qui permet de reproduire le problème ?

Merci.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Tue 20 Mar - 13:43
Code:

Grands rôles :

menu_enregistrer est un drapeau

Enregistrer :

Rôles :

Actions :

menu_enregistrer = vrai
Va vers Enregistrer_sous

Enregistrer_sous :

Rôles :

c :
:
conduit
chemin_sauvegarde est un texte
ligne <
- c.
retourchariot()
Actions :

("Si l'utilisateur à cliqué sur le menu "Enregistrer_sous", on ouvre le sélectionneur de fichiers")
Si menu_enregistrer == faux alors lis
évoque c.
sélectionneretenregistrer()
évoque c.
fermer()
chemin_sauvegarde vaut c.
nomfichiercomplet()
ferme

Si c.
fichierexiste(chemin_sauvegarde) alors lis
("Si le chemin d'accès est valide, on enregistre par dessus la sauvegarde précédente")
évoque c.
enregistrer(chemin_sauvegarde)
ferme
Sinon, lis
("Si le chemin d'accès est invalide, on ouvre le sélectionneur de fichiers")
évoque c.
sélectionneretenregistrer()
ferme

évoque c.
écrire("ça marche")
évoque c.
écrire(ligne)
évoque c.
écrire("l'autre ligne")
évoque c.
écrire(ligne)
évoque c.
écrire("encore une ligne !!!")
évoque c.
fermer()


évoque c.
fermer()
menu_enregistrer = faux
Reviens

Si je clique sur mon menu "Enregistrer", le drapeau menu_enregistrer est vrai et chemin_sauvegarde est vide.
Hors, il considère quand même que le fichier existe. Il évoque donc c.enregistrer(chemin_sauvegarde)

Voici le message d'erreur :
La valeur est incorrecte : Impossible d'enregistrer le fichier (K:\Avatar\Editeur de cartes (Accès refusé)) : /K:/Avatar/Editeur de cartes/
Ceci est le chemin d'accès de mon livre.
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Tue 20 Mar - 14:58
Je viens de comprendre....

Quand tu appelles la première fois "fichierexiste", Linotte va essayer de construire le chemin d'accès à ton fichier.
Il va notamment ajouté le répertoire courant :
"K:\Avatar\Editeur de cartes" et concaténé la valeur de fichier stockée dans la variable "chemin_sauvegarde"

Mais comme cette variable est vide au début de ton livre, il va tout simplement vérifier la présence du fichier "K:\Avatar\Editeur de cartes".

Ce fichier est un répertoire... et il existe ! donc ça retourne vrai !

Je vais rajouter une nouvelle fonction pour vérifier si un fichier est un répertoire ou pas.

Cpc
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Tue 20 Mar - 15:31
Cet exemple fonctionnera ce soir :

[php]
Bogue wan :
Grands rôles :
menu_enregistrer est un drapeau

Enregistrer :
Rôles :
Actions :
menu_enregistrer = vrai
Va vers Enregistrer_sous

Enregistrer_sous :
Rôles :
c :: conduit
chemin_sauvegarde est un texte
ligne <
- c.retourchariot()
Actions :
affiche "chemin : " + chemin_sauvegarde
("Si l'utilisateur à cliqué sur le menu "Enregistrer_sous", on ouvre le sélectionneur de fichiers")
Si menu_enregistrer == faux alors lis
évoque c.sélectionneretenregistrer()
évoque c.fermer()
chemin_sauvegarde vaut c.nomfichiercomplet()
ferme
Si (c.fichierexiste(chemin_sauvegarde)) et (non(c.répertoire(chemin_sauvegarde))) alors lis
("Si le chemin d'accès est valide, on enregistre par dessus la sauvegarde précédente")
évoque c.enregistrer(chemin_sauvegarde)
ferme
Sinon, lis
("Si le chemin d'accès est invalide, on ouvre le sélectionneur de fichiers")
évoque c.sélectionneretenregistrer()
ferme
chemin_sauvegarde vaut c.nomfichiercomplet()
évoque c.écrire("ça marche")
évoque c.écrire(ligne)
évoque c.écrire("l'autre ligne")
évoque c.écrire(ligne)
évoque c.écrire("encore une ligne !!!")
évoque c.fermer()
menu_enregistrer = faux
Reviens
[/php]
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Créer un menu "Enregistrer"

le Thu 22 Mar - 12:55
Excellent, sa fonctionne !
Merci !

Il me reste la fonction "ouvrir" à travailler.

Voici ma sauvegarde :
48
32
32

Pourrais-t-on faire ceci :

[php]
Ouvrir :
Rôles :
c :: conduit
mémo1 & mémo2 & mémo3 :: nombre
Actions :
évoque c.sélectionneretouvrir()
mémo1 vaut c.lireligne()
mémo2 vaut c.lireligne()
mémo3 vaut c.lireligne()
[/php]

Car pour l'instant, je peux enregistrer mes données mais je ne peux pas les utiliser :/

En fait, mémo1 vaut c.lireligne() fonctionne si mémo1 est un texte.
Je suis donc obligé de le convertir en nombre après.
Se serait possible que c.lireligne() fonctionne aussi avec les nombres ?
Contenu sponsorisé

Re: Créer un menu "Enregistrer"

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum