Listin Gambas2
Création d'un programme en Gambas2 : un répertoire téléphonique pas à pas
Origine : http://listingambas.blogspot.com/2011/06/modulo-archivo-salvar.htmlModule Fichier : Sauver
Bien sûr c'est dans le module ARCHIVE
On va créer une fonction pour vérifier qu'on ne risque pas d'écraser les autres fichiers de données:
PUBLIC
IF Exist(destination) = FALSE THEN
'le fichier n'existe pas, on peut continuer la sauvegarde sous le même nom
RETURN 1
END IF
'cette partie s'exécute quand le fichier existe.
IF Message.Warning("Il Existe un fichier de " & type, "Annuler", "Ecraser") = 1 THEN
' On a annulé, redemander le nom
RETURN 2
END IF
IF Message.Warning("Vous avez décidé d'écraser. ëtes vous sur ?", "Annuler", "Accepter") = 1 THEN
' On a annulé, redemander le nom
RETURN 2
ELSE
'L'utilisateur a confirmé qu'il veut écraser le fichier
RETURN 1
END IF
END
FUNCTION
verifexiste
(destination
AS
String, type
AS
String) AS
Integer
'Exist
renvoie TRUE si le fichier existe IF Exist(destination) = FALSE THEN
'le fichier n'existe pas, on peut continuer la sauvegarde sous le même nom
RETURN 1
END IF
'cette partie s'exécute quand le fichier existe.
IF Message.Warning("Il Existe un fichier de " & type, "Annuler", "Ecraser") = 1 THEN
' On a annulé, redemander le nom
RETURN 2
END IF
IF Message.Warning("Vous avez décidé d'écraser. ëtes vous sur ?", "Annuler", "Accepter") = 1 THEN
' On a annulé, redemander le nom
RETURN 2
ELSE
'L'utilisateur a confirmé qu'il veut écraser le fichier
RETURN 1
END IF
END
- Avec
la
commande
Dialog.SaveFile
(),
on définit le chemin où l'utilisateur souhaite
sauvegarder les données.
- Nous
allons
utiliser
une
chaîne
que
nous appelons lignes
, à laquelle seront ajoutées les données
séparées par codefinligne.
Le code
Lignes
&
= données &
codefinligne
- Séparation
des
données
:
pour
séparer
les
données les unes des autres nous emploierons un
caractère peu utilisé "|", et la variable qui le contiendra codefinligne.
-
La première donnée que nous stockons sera la version de fichier de données "v0.0.1" et le programme qui l'a créé. Pourquoi? Au fil du temps nous allons apporter des améliorations au programme et, probablement, on sauvera les données différemment, données pour lesquelles le programme devra savoir avec quelle version elles sont lues et les traiter en mémoire de manière adéquate.
-
On enregistre le nombre de données que nous avons (propriété . COUNT )
-
On effectue une boucle For ... Next pour ajouter les lignes de données dans "lignes"
-
Par la commande File.Save(chemin, lignes) les données sont enregistrées dans un fichier.
PUBLIC
SUB
Sauve(
OPTIONAL
racine
AS
String)
DIM
destination AS
StringDIM
a AS
IntegerDIM
lignes AS
StringDIM
codefinligneAS
Stringinit: 'etiquette utilisée au cas où l'on ne veuille pas écraser le fichier, retour au programme au début de Dialog.SaveFile()
IF
racine = ""
THENDialog.Title = "Ecrit un nom de fichier pour sauver les données"
Dialog.Path = ""
Dialog.Filter = ["*.lis", "Données de Listin"]
a = Dialog.SaveFile()
IF
a =
-1
THEN
GOTO
finsIF
Right$(Dialog.Path, Len(".lis")) <> ".lis"
THENdestination = Dialog.Path & ".lis"
ELSE
destination = Dialog.Path
ENDIF
ELSE
destination = racine
ENDIF
'Vérification de l'existence du fichier ; si oui, on demande confirmation pour écraser l'ancien
IF verifexiste(destination, "listin") = 2
THENGOTO
initENDIF
'continue l'exécution du programme
codefinligne = "|"
lignes = "v0.0.1" & codefinligne 'information version
lignes &= "listin.20100718" & codefinligne ' programme qui a créé le fichier
lignes &= var.id.count & codefinligne 'nombre d'enregistrements existants
FOR a = 0 TO var.id.count - 1
lignes &= var.id[a] & codefinligne
lignes &= var.dni[a] & codefinligne
lignes &= var.nom[a] & codefinligne
lignes &= var.prenoms[a] & codefinligne
lignes &= var.entreprise[a] & codefinligne
lignes &= var.poste[a] & codefinligne
lignes &= var.tel_entreprise[a] & codefinligne
lignes &= var.tel_perso[a] & codefinligne
lignes &= var.fax[a] & codefinligne
lignes &= var.mobile_entreprise[a] & codefinligne
lignes &= var.mobile_perso[a] & codefinligne
lignes &= var.page[a] & codefinligne
lignes &= var.photo[a] & codefinligne
lignes &= var.adresse[a] & codefinligne
lignes &= var.commentaires[a] & codefinligne
lignes &= var.date_donnees[a] & codefinligne
lignes &= var.mail[a] & codefinligne
NEXT
var.change = "NON"
File.Save(destination, lignes)
Fmain.LabelActual.text = destination
fins: ' On a cliqué le bouton annuler dans le dialogue Dialog.SaveFile()
'fin de la subroutine
END
Et
depuis le menu
Fichier / Enregistrer du
formulaire
FMAIN on exécutera le code :
PUBLIC
SUB
Sauver_Click
()
Fichier.
sauve ()
END
![]() Comme vous vous en rendrez compte, les fichiers d' images ne sont pas stockés, seuls les chemins où ils se trouvent le sont. Quand nous passons les données d'un ordinateur à un autre, ces images n'apparaissent pas. Voir Annexe 4: empaquetage / dépaquetage des données, où on explique une solution envisageable. |