Aller au contenu

Enregistrer des variables sur un fichier externe


Messages recommandés

Posté(e)

Bonjour tout le monde,

 

 

J'aimerais savoir si il est possible d'enregistrer les valeurs d'une variable sur un fichier externe de tels façon pour qu'on puisse les rouvrires 6 mois après et les réafecter à des variables.

 

Merci.

Posté(e)

C'est pas vraiment ça que je cherche à faire du moins dans ce que j'ai compris du lien.

je me suis peu etre mal expliqué je pense,

 

voila j'ai une boite de dialogue dans laquelle je renseigne plusieurs information indispensable pour pouvoir par la suite appliqué une routine.

 

Or il est fort probable que j'ai à utiliser plusieur fois cette routine pour le même cas donc avec les même informations, j'aimerais donc pouvoir enregistrer ces infos dans un fichier que j'enregistrerais dans un répertoir et par la suite ouvrir ce répertoir pour ne pas à avoir à toute les resaisir.

Donc y faudrait que je creer un fichier .txt je pense et que j'ecrive ce dont je veut.

 

Merci

Posté(e)

Je suis allé un peut trop vite, enfete il s'enregistre avec le fichier dwg sur lequel on l'a affecté.

 

 

Du coup ma question c'est : Peut on faire pour qu'il ne soit pas attaché à un fichier et lisible depuis n'importe qu'elle DWG?

Posté(e)

Bonjour,

 

Lee Mac pour certains de ses programmes créée des fichiers cfg comme fichiers de configuration pour ses cases de dialogue.

 

Voici le contenu d'un de ces fichiers :

 

1.57079633

0.00000000

-1

0.00000000

nil

T

"1"

"1370"

""

"_7205"

"1"

"inc-pre"

"obj-blk"

"PLACEUR"

"NUMERO"

"0"

"3"

"8"

"0"

"bor-off"

"0.10"

"1.0"

"1.0"

"0"

"Standard"

"Middle-Center"

"0"

"8"

Posté(e)

Effectivement, pourquoi ne pas utiliser un fichier txt en externe.

Tu peux par exemple nommer tes config, avec la possibilité de les sauvegarder.

A toi de bien structurer ton fichier.

 

Tu peux aussi utiliser les registres ou encore les variables d'environnement.

Tu peux aussi, comme l'indique -Olivier-, sauvegarder tes variables que dans le dessin

C'est un choix.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

salut,

tu peux télécharger ce très vieux lisp, qui a peut être besoin d'une réactualisation,

Spy_var

Le principe:

 

spy_var1 est la commande qui vous permet d'enregistrer l'état de vos variables système

 

spy_var2 affiche les variables qui ont changées depuis l'appel de la commande spy_var1

 

write_var2ini ecrit l'état de vos variables dans un fichier ini

 

compare_var_from_ini compare l'état de vos variables avec l'état stocké dans un fichier ini

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Comment fait alors pour creer un fichier .txt?

Ben, de la même manière que tu fais ton DCL ?

 

(setq toto (open "mon_fichier.txt" "w"))
(mapcar '(lambda(x)(write-line x toto)) liste_de_variables)
(close toto)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Pas tout à fait

Le fichier est écrasé s'il existe, sinon il est créé.

Pour ajouter sur un fichier existant, tu as la fonction "a" (pour append) à la place du "w" (pour write)

Pour compléter sur la fonction, il reste le "o" (pour open)

Pour l'emplacement, tu lui indiques directement

(open "d:/dir1/dir2/dir3/mon_fichier.txt" "w")

 

Regade l'aide sup la fonction open, elle est très compléte.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour,

 

Open enregistre dans le dossier du fichier en cours si je ne me trompe pas!

Le mieux étant de choisir toi même le lieu de l'enregistrement.

 

Et avec un getfiled tu peu même choisir l'emplacement d'enregistrement et ou allez chercher le fichier à lire.

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Posté(e)

Bon me revoila!

 

quand je li mon fichier .txt de cette manière :

 

(defun ouvrir ()
 (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\cx\\Desktop\\Infosave" "txt" 2))
 (setq lecture_sauvegarde (open ouvrir "r"))
 (setq h (read-line lecture_sauvegarde))
 )

 

h me retourne seulement la première ligne;

De quelle manière puis-je faire pour acceder à tout le fichier et retrouver les éléments qui m'interessent ?

existe t'il un moyen de dire affecte à "h" la ligne qui contient ce mot?

Posté(e)

Pour lire un fichier et tout mettre dans une liste

(defun ouvrir ()
 (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\cx\\Desktop\\Infosave" "txt" 2))
 (setq lecture_sauvegarde (open ouvrir "r"))
 (while (setq h (read-line lecture_sauvegarde))
   (setq lst (cons h lst))
 )
 (close ouvrir)
)

 

Ou encore, si c'est structuré

(defun ouvrir ()
 (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\cx\\Desktop\\Infosave" "txt" 2))
 (setq lecture_sauvegarde (open ouvrir "r"))
 (while (setq h (read-line lecture_sauvegarde))
   (setq i (read-line lecture_sauvegarde))
   (setq j (read-line lecture_sauvegarde))
   (setq k (read-line lecture_sauvegarde))
   (setq lst (cons (list h i j k) lst)
 )
 (close ouvrir)
)

 

Le résultat est dans la variable lst

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

C'est bon j'arive à enregistrer les donner de ma boite de dialogue et les rouvrir.

En revanche y a encore des petits trucs à améliorer et je ne sais pas comment mis prendre :

 

Après avoir charger ma routine je peut utilisé qu'une fois le bouton ouvrir après y m'affiche ça :

"; erreur: fonction incorrecte:

"C:\\Users\\clement.arnoux\\Desktop\\Infosave.txt""

Comme si y gardait se fichier par défaut, sauf que ce fichier existe donc y devrait l'ouvrir (même si c pas ce que je veux).

Y doit y avoir une variable à remetre à 0 ou quelque chose comme ça, non?

 

De plus quand je quitte sur annuler de la boite de dialogue de "getfiled" il ferme même ma boite de dialogue qui est en dessous, comment faire pour qu'il ne faire que la boite de dialogue de navigation?

 

Voici mon code :

(defun c:lala ()
 (setq info ( load_dialog "infoRV.dcl"))
(if (not (new_dialog "infoRV" info))
   (progn
     (alert"La boite de dialogue infoRV n'a pas été trouvée !")
     (exit)
   )
 )
 (Setq SlideRVexpl "K:\\AUTOCAD\\Standards-ATECAS\\GEN-CIVIL\\Piquages\\Cliche\\RVexpl.sld") 
 (updateimage1 SlideRVexpl "SLDRVexpl")
 (action_tile "cancel" "(exit)(done_dialog)")
 (action_tile "ouvrir" "(ouvrir)")
 (action_tile "enregister" "(SaveVars)(enregister)")
 (action_tile "accept" "(SaveVars)(exit) (done_dialog)")
 (action_tile "diametre" "(verif_saisie \"diametre\" $value)")
 (action_tile "hauteur" "(verif_saisie \"hauteur\" $value)")
 (action_tile "volume" "(verif_saisie \"volume\" $value)")
 (action_tile "pente" "(verif_saisie \"pente\" $value)")
 (start_dialog)
 (unload_dialog info)
)
(defun verif_saisie(key nb)
(cond ((not(= nb ""))

(or(or(eq (type (read nb)) 'REAL) (eq (type (read nb)) 'INT))
  
  (progn   (alert (strcat "La " key " n'est pas un réel"))
(set_tile key "")
(mode_tile key 2)))
      )
)      
)
(defun ouvrir ()
 (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\clement.arnoux\\Desktop\\Infosave" "txt" 2))
 (setq lecture_sauvegarde (open ouvrir "r"))
 (while (setq debut_save (read-line lecture_sauvegarde))
   	 (setq nom_save (read-line lecture_sauvegarde))
 (setq langue_save (read-line lecture_sauvegarde))
        (setq fluide_save (read-line lecture_sauvegarde))
   	 (setq hauteur_save (read-line lecture_sauvegarde))
   	 (setq diametre_save (read-line lecture_sauvegarde))
    	 (setq volume_save (read-line lecture_sauvegarde))
   	 (setq pente_save (read-line lecture_sauvegarde))
   	 (setq unite_save (read-line lecture_sauvegarde))
   	 (setq fin_save (read-line lecture_sauvegarde))
   	)  
(close lecture_sauvegarde)   
(ecriture nom_save langue_save fluide_save hauteur_save diametre_save volume_save pente_save unite_save )
 )
(defun enregister ()
 (setq sauvegarde (getfiled "Selectionnez un Répertoir" "C:\\Users\\clement.arnoux\\Desktop\\Infosave" "txt" 1))
 (setq ecriture_sauvegarde (open sauvegarde "w"))
 (setq nomsav (strcat "nom_reservoir : " nom))
 (setq languesav (strcat"choixlangue : " langue))
 (setq fluidesav (strcat "fluide : " fluide))
 (setq hauteursav (strcat "hauteur : " hauteur))
 (setq diametresav (strcat "diametre : " diametre))
 (setq volumesav (strcat "volume : " volume))
 (setq pentesav (strcat "pente : " pente))
 (setq unitesav (strcat "choixunite : " unite))
(foreach txt_sauvegarde (append'(  "Sauvegarde ")
			   (list nomsav)
			   (list languesav)
			   (list fluidesav)
			   (list hauteursav)
		           (list diametresav)
			   (list volumesav)
			   (list pentesav)
			   (list unitesav)
			   '("fin sauvegarde"))			                 
     (write-line txt_sauvegarde ecriture_sauvegarde)
   )   
(close ecriture_sauvegarde)
  )
(defun Savevars ()
 (setq nom (get_tile "nom_rv"))
 (setq langue (get_tile "choixlangue"))
 (setq fluide (get_tile "fluide"))
 (setq hauteur (get_tile "hauteur"))
 (setq diametre (get_tile "diametre"))
 (setq volume (get_tile "volume"))
 (setq pente (get_tile "pente"))
 (setq unite (get_tile "choixunite"))
)
  (defun ecriture (nom langue fluide hauteur diametre volume pente unite)

;;;(alert (strcat  nom " " langue " " fluide " " hauteur " " diametre " " volume " " pente " " unite))
    (setq n_nom (strlen nom))
    (setq long_nom (- n_nom 16))
    (setq debut_nom (1+ (- n_nom long_nom)))
    (setq nom_ecrit (substr nom debut_nom long_nom))
     ;
    (setq n_langue (strlen langue))
    (setq long_langue (- n_langue 14))
    (setq debut_langue (1+(- n_langue long_langue)))
    (setq langue_ecrit (substr langue debut_langue long_langue))
    ;
    (setq n_fluide (strlen fluide))
    (setq long_fluide (- n_fluide 9))
    (setq debut_fluide (1+(- n_fluide long_fluide)))
    (setq fluide_ecrit (substr fluide debut_fluide long_fluide))
    ;
    (setq n_hauteur (strlen hauteur))
    (setq long_hauteur (- n_hauteur 10))
    (setq debut_hauteur (1+(- n_hauteur long_hauteur)))
    (setq hauteur_ecrit (substr hauteur debut_hauteur long_hauteur))
    ;
    (setq n_diametre (strlen diametre))
    (setq long_diametre (- n_diametre 11))
    (setq debut_diametre (1+(- n_diametre long_diametre)))
    (setq diametre_ecrit (substr diametre debut_diametre long_diametre))
    ;
    (setq n_volume (strlen volume))
    (setq long_volume (- n_volume 9))
    (setq debut_volume (1+(- n_volume long_volume)))
    (setq volume_ecrit (substr volume debut_volume long_volume))
    ;
    (setq n_pente (strlen pente))
    (setq long_pente (- n_pente 8))
    (setq debut_pente (1+(- n_pente long_pente)))
    (setq pente_ecrit (substr pente debut_pente long_pente))
    ;
    (setq n_unite (strlen unite))
    (setq long_unite (- n_unite 13))
    (setq debut_unite (1+(- n_unite long_unite)))
    (setq unite_ecrit (substr unite debut_unite long_unite))
    (cond ((= langue_ecrit "français")
    (mode_tile "choixlangue" "français" ))
   ((= langue_ecrit "anglais")
    (set_tile "choixlangue" "anglais"))
   )
    (set_tile "nom_rv" nom_ecrit)
    (set_tile "fluide" fluide_ecrit)
    (set_tile "diametre" diametre_ecrit)
    (set_tile "hauteur" hauteur_ecrit)
    (set_tile "volume" volume_ecrit)
    (set_tile "pente" pente_ecrit)
    (cond ((= unite_ecrit "mm")
    (set_tile "choixunite" "mm" ))
   ((= unite_ecrit "cm")
    (set_tile "choixunite" "cm"))
   ((= unite_ecrit "m")
    (set_tile "choixunite" "m"))
   )
    )
 

 

 

et mon *.DCL

 

infoRV: dialog {
	label = "Information générale du Réservoir ";
	: row{
	: column {
	 : radio_row{
	
	 
             key = "choixlangue";
             label = "Choix de la langue";
             : row{:spacer{width = 2;}}
             : radio_button {
               key = "français";
               label = "Français";
             }
             : radio_button {
               key = "anglais";
               label = "Anglais";
             }
             }
             : spacer{height=1.5; }
: boxed_column {
label = "Information énérale";
             : edit_box {
               key = "nom_rv";
               label = "Nom du réservoir: ";
                edit_width = 9;
               }
               : edit_box {
               key = "fluide";
               label = "Fluide contenu : ";
               edit_width = 9;
               }}
             : spacer{height=1.5; }
: boxed_column {
label = "Dimensions";
             : edit_box {
               key = "diametre";
               label = "Diamètre du réservoir ( en mètre ): ";
                edit_width = 9;
               }
               : edit_box {
               key = "hauteur";
               label = "Hauteur du réservoir ( en mètre ) : ";
               edit_width = 9;
               }
               : edit_box {
               key = "volume";
               label = "Volume du réservoir ( en mètre cube ) : ";
               edit_width = 9;
               }
                 : edit_box {
               key = "pente";
               label = "Pente du réservoir ( en %) : ";
               edit_width = 9;
               }
}
: spacer{height=1.5; }
: radio_row{
             key = "choixunite";
             label = "Choix de l'untité";
             : radio_button {
               key = "mm";
               label = "Millimètre";
             }
             : radio_button {
               key = "cm";
               label = "Centimètre";
             }
              : radio_button {
               key = "m";
               label = "mètre";
             }
             }
               }
               : column {
      : image {
 key = "SLDRVexpl";
 height =1;
 width = 60;
    color = 0;
 is_enabled = false;
 is_tab_stop = false;
}
}
}: spacer{height=2; }
	:row {
	      : button {
	        key = "ouvrir";
	        label = "Ouvrir";
	        }
	      : button {
	        key = "enregister";
	        label = "Enregistrer";
	        }
	      : button {
	        key = "accept";
	        label = " OK ";
	        is_default = true;
	        }
	      : button {
	        key = "cancel";
	        label = " Annuler ";
	        is_default = false;
	        is_cancel = true ; 
	        }
	       }
	       
	  }

	 

 

Merci

Posté(e)

Bonjour,

 

Tu n'a pas déclaré tes variables.

Donc quand tu a finit ta routine il reste des infos dans celle-ci qui sont réutilisés au prochain lancement du LISP.

 

Un peu de lecture !

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Posté(e)

ah!

je l'avais jamais fait jusqu'a aujourd'hui, mais bon faut un debut à tout

Voila maintenant tout marche tout le temps sauf quand j'annule le "getfiled" et que sa me ferme tout y doit me manqué quelque chose de plus que j'ai ce message d'erreur (c'est ce qui me fait dire ça) : "; erreur: type d'argument incorrect: stringp nil"

 

(defun c:lala (/ SlideRVexpl info)
 (setq info ( load_dialog "infoRV.dcl"))
(if (not (new_dialog "infoRV" info))
   (progn
     (alert"La boite de dialogue infoRV n'a pas été trouvée !")
     (exit)
   )
 )
 (Setq SlideRVexpl "K:\\AUTOCAD\\Standards-ATECAS\\GEN-CIVIL\\Piquages\\Cliche\\RVexpl.sld") 
 (updateimage1 SlideRVexpl "SLDRVexpl")
 (action_tile "cancel" "(exit)(done_dialog)")
 (action_tile "ouvrir" "(ouvrir)")
 (action_tile "enregister" "(enregister)")
 (action_tile "accept" "(SaveVars)(exit) (done_dialog)")
 (action_tile "diametre" "(verif_saisie \"diametre\" $value)")
 (action_tile "hauteur" "(verif_saisie \"hauteur\" $value)")
 (action_tile "volume" "(verif_saisie \"volume\" $value)")
 (action_tile "pente" "(verif_saisie \"pente\" $value)")
 (start_dialog)
 (unload_dialog info)
)
(defun verif_saisie(key nb)
(cond ((not(= nb ""))

(or(or(eq (type (read nb)) 'REAL) (eq (type (read nb)) 'INT))
  
  (progn   (alert (strcat "La " key " n'est pas un réel"))
(set_tile key "")
(mode_tile key 2)))
      )
)      
)
(defun ouvrir (/ lecture_sauvegarde ouvrir debut_save nom_save langue_save fluide_save hauteur_save diametre_save volume_save pente_save unite_save fin_save)
 (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\clement.arnoux\\Desktop\\Infosave" "txt" 2))
 (setq lecture_sauvegarde (open ouvrir "r"))
 (while (setq debut_save (read-line lecture_sauvegarde))
   	 (setq nom_save (read-line lecture_sauvegarde))
 (setq langue_save (read-line lecture_sauvegarde))
        (setq fluide_save (read-line lecture_sauvegarde))
   	 (setq hauteur_save (read-line lecture_sauvegarde))
   	 (setq diametre_save (read-line lecture_sauvegarde))
    	 (setq volume_save (read-line lecture_sauvegarde))
   	 (setq pente_save (read-line lecture_sauvegarde))
   	 (setq unite_save (read-line lecture_sauvegarde))
   	 (setq fin_save (read-line lecture_sauvegarde))
   	)  
(close lecture_sauvegarde)   
(ecriture nom_save langue_save fluide_save hauteur_save diametre_save volume_save pente_save unite_save )
 )
(defun enregister (/ nom langue fluide hauteur diametre volume pente unite sauvegarde ecriture_sauvegarde nomsav languesav fluidsav hauteursav diametresav volumesav pentesav unitesav)
 (setq nom (get_tile "nom_rv"))
 (setq langue (get_tile "choixlangue"))
 (setq fluide (get_tile "fluide"))
 (setq hauteur (get_tile "hauteur"))
 (setq diametre (get_tile "diametre"))
 (setq volume (get_tile "volume"))
 (setq pente (get_tile "pente"))
 (setq unite (get_tile "choixunite")) 
 (setq sauvegarde (getfiled "Selectionnez un Répertoir" "C:\\Users\\clement.arnoux\\Desktop\\Infosave" "txt" 1))
 (setq ecriture_sauvegarde (open sauvegarde "w"))
 (setq nomsav (strcat "nom_reservoir : " nom))
 (setq languesav (strcat"choixlangue : " langue))
 (setq fluidesav (strcat "fluide : " fluide))
 (setq hauteursav (strcat "hauteur : " hauteur))
 (setq diametresav (strcat "diametre : " diametre))
 (setq volumesav (strcat "volume : " volume))
 (setq pentesav (strcat "pente : " pente))
 (setq unitesav (strcat "choixunite : " unite))
(foreach txt_sauvegarde (append'(  "Sauvegarde ")
			   (list nomsav)
			   (list languesav)
			   (list fluidesav)
			   (list hauteursav)
		           (list diametresav)
			   (list volumesav)
			   (list pentesav)
			   (list unitesav)
			   '("fin sauvegarde"))			                 
     (write-line txt_sauvegarde ecriture_sauvegarde)
   )   
(close ecriture_sauvegarde)
  )

  (defun ecriture (nom langue fluide hauteur diametre volume pente unite / n_nom long_nom debut_nom nom_ecrit n_langue long_langue debut_langue langue_ecrit
n_fluide long_fluide debut_fluide fluide_ecrit n_hauteur long_hauteur debut_hauteur hauteur_ecrit n_diametre long_diametre debut_diametre diametre_ecrit
n_volume long_volume debut_volume volume_ecrit	n_pente long_pente debut_pente pente_ecrit n_unite long_unite debut_unite unite_ecrit   )

;;;(alert (strcat  nom " " langue " " fluide " " hauteur " " diametre " " volume " " pente " " unite))
    (setq n_nom (strlen nom))
    (setq long_nom (- n_nom 16))
    (setq debut_nom (1+ (- n_nom long_nom)))
    (setq nom_ecrit (substr nom debut_nom long_nom))
     ;
    (setq n_langue (strlen langue))
    (setq long_langue (- n_langue 14))
    (setq debut_langue (1+(- n_langue long_langue)))
    (setq langue_ecrit (substr langue debut_langue long_langue))
    ;
    (setq n_fluide (strlen fluide))
    (setq long_fluide (- n_fluide 9))
    (setq debut_fluide (1+(- n_fluide long_fluide)))
    (setq fluide_ecrit (substr fluide debut_fluide long_fluide))
    ;
    (setq n_hauteur (strlen hauteur))
    (setq long_hauteur (- n_hauteur 10))
    (setq debut_hauteur (1+(- n_hauteur long_hauteur)))
    (setq hauteur_ecrit (substr hauteur debut_hauteur long_hauteur))
    ;
    (setq n_diametre (strlen diametre))
    (setq long_diametre (- n_diametre 11))
    (setq debut_diametre (1+(- n_diametre long_diametre)))
    (setq diametre_ecrit (substr diametre debut_diametre long_diametre))
    ;
    (setq n_volume (strlen volume))
    (setq long_volume (- n_volume 9))
    (setq debut_volume (1+(- n_volume long_volume)))
    (setq volume_ecrit (substr volume debut_volume long_volume))
    ;
    (setq n_pente (strlen pente))
    (setq long_pente (- n_pente 8))
    (setq debut_pente (1+(- n_pente long_pente)))
    (setq pente_ecrit (substr pente debut_pente long_pente))
    ;
    (setq n_unite (strlen unite))
    (setq long_unite (- n_unite 13))
    (setq debut_unite (1+(- n_unite long_unite)))
    (setq unite_ecrit (substr unite debut_unite long_unite))
    (cond ((= langue_ecrit "français")
    (set_tile "choixlangue" "français" ))
   ((= langue_ecrit "anglais")
    (set_tile "choixlangue" "anglais"))
   )
    (set_tile "nom_rv" nom_ecrit)
    (set_tile "fluide" fluide_ecrit)
    (set_tile "diametre" diametre_ecrit)
    (set_tile "hauteur" hauteur_ecrit)
    (set_tile "volume" volume_ecrit)
    (set_tile "pente" pente_ecrit)
    (cond ((= unite_ecrit "mm")
    (set_tile "choixunite" "mm" ))
   ((= unite_ecrit "cm")
    (set_tile "choixunite" "cm"))
   ((= unite_ecrit "m")
    (set_tile "choixunite" "m"))
   )
    )
 

 

 

 

infoRV: dialog {
	label = "Information générale du Réservoir ";
	: row{
	: column {
	 : radio_row{
	
	 
             key = "choixlangue";
             label = "Choix de la langue";
             : row{:spacer{width = 2;}}
             : radio_button {
               key = "français";
               label = "Français";
             }
             : radio_button {
               key = "anglais";
               label = "Anglais";
             }
             }
             : spacer{height=1.5; }
: boxed_column {
label = "Information énérale";
             : edit_box {
               key = "nom_rv";
               label = "Nom du réservoir: ";
                edit_width = 9;
               }
               : edit_box {
               key = "fluide";
               label = "Fluide contenu : ";
               edit_width = 9;
               }}
             : spacer{height=1.5; }
: boxed_column {
label = "Dimensions";
             : edit_box {
               key = "diametre";
               label = "Diamètre du réservoir ( en mètre ): ";
                edit_width = 9;
               }
               : edit_box {
               key = "hauteur";
               label = "Hauteur du réservoir ( en mètre ) : ";
               edit_width = 9;
               }
               : edit_box {
               key = "volume";
               label = "Volume du réservoir ( en mètre cube ) : ";
               edit_width = 9;
               }
                 : edit_box {
               key = "pente";
               label = "Pente du réservoir ( en %) : ";
               edit_width = 9;
               }
}
: spacer{height=1.5; }
: radio_row{
             key = "choixunite";
             label = "Choix de l'untité";
             : radio_button {
               key = "mm";
               label = "Millimètre";
             }
             : radio_button {
               key = "cm";
               label = "Centimètre";
             }
              : radio_button {
               key = "m";
               label = "mètre";
             }
             }
               }
               : column {
      : image {
 key = "SLDRVexpl";
 height =1;
 width = 60;
    color = 0;
 is_enabled = false;
 is_tab_stop = false;
}
}
}: spacer{height=2; }
	:row {
	      : button {
	        key = "ouvrir";
	        label = "Ouvrir";
	        }
	      : button {
	        key = "enregister";
	        label = "Enregistrer";
	        }
	      : button {
	        key = "accept";
	        label = " OK ";
	        is_default = true;
	        }
	      : button {
	        key = "cancel";
	        label = " Annuler ";
	        is_default = false;
	        is_cancel = true ; 
	        }
	       }
	       
	  }

	 

Posté(e)

Je pense que tu devrais conditionner une partie de ton code au fait que la variable ouvrir ne soit pas nulle.

par exemple :

 

(if ouvrir 
(progn
(setq lecture_sauvegarde (open ouvrir "r"))
 (while (setq debut_save (read-line lecture_sauvegarde))
        (setq nom_save (read-line lecture_sauvegarde))
        (setq langue_save (read-line lecture_sauvegarde))
        (setq fluide_save (read-line lecture_sauvegarde))
        (setq hauteur_save (read-line lecture_sauvegarde))
        (setq diametre_save (read-line lecture_sauvegarde))
        (setq volume_save (read-line lecture_sauvegarde))
        (setq pente_save (read-line lecture_sauvegarde))
        (setq unite_save (read-line lecture_sauvegarde))
        (setq fin_save (read-line lecture_sauvegarde))
       )  
(close lecture_sauvegarde)   
(ecriture nom_save langue_save fluide_save hauteur_save diametre_save volume_save pente_save unite_save )
 )
)
)

;)

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Posté(e)

bein ça change rien quand je clique sur annulé y me ferme toute les boite de dialogue, je pense pas que c'est en conditionnent la variable ouvrir que ça va changer,

je pense y à un argument à metre avec getfield ou quelqie chose comme ça parce que c'est quand je clique sur annuler que ça ce passe.

Posté(e)

Quand tu clique sur annuler Getfiled renvois un Nil tout simplement (fait un test simple hors routine).

 

Donc il faut conditionner le reste du code au fait que si getfiled renvoie un nil tu ne fait pas appel à "Ouvrir".

 

C'est le fait que tu cherche à lancer des commandes sur un objet nil qui plante le code et fait ressortir de l'ensemble de fenêtres!

 

Je vois en même temps que tu attribut un me^me nom à une fonction et à une variable ... ça va poser de gros soucis ça.

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité