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.html


 Module Fichier : Sauver

Maintenant que faire? Il faut donc sauvegarder les données que nous avons entrées
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 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

Et maintenant, écrivons la routine de sauvegarde. Nous avons besoin d'organiser et de stocker des données. De quelle façon?
      1. Avec la commande Dialog.SaveFile (), on définit le chemin où l'utilisateur souhaite sauvegarder les données.
      2. 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
      1. 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.
      2. 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.
      3. On enregistre le nombre de données que nous avons (propriété . COUNT )
      4. On effectue une boucle For ... Next pour ajouter les lignes de données dans "lignes"
      5. 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 String
DIM
a AS Integer
DIM
lignes AS String
DIM
codefinligneAS String
init: '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 = "" THEN
Dialog.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 fins
IF Right$(Dialog.Path, Len(".lis")) <> ".lis" THEN
destination = 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 THEN
GOTO
init
ENDIF

'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


 


Note importante:
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.