PureBasic

Forums PureBasic
Nous sommes le Lun 17/Juin/2019 20:42

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 5 messages ] 
Auteur Message
 Sujet du message: Créer et lire un fichier texte en Local Forage
MessagePosté: Lun 13/Aoû/2018 23:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Créer et lire un fichier texte en Local Forage

Introduction.
Local Forage (Ce n'est une erreur d'orthographe) est une bibliothèque JavaScript créée par la fondation Mozilla améliorant le processus de stockage hors ligne de données dans des applications web.

Nous verrons dans un premier temps comme créer un simple fichier texte en Local Forage et dans un deuxième temps, comment créer et lire un fichier JSON (C'est aussi un fichier texte) en Local Forage.

Objectif.
Créer un fichier de 10 lignes en Local Forage

- Pour créer un fichier nous allons utiliser la fonction CreateFile() que vous connaissez bien sauf que contrairement à PureBasic, cette fonction fait appel à une procédure (CallBack) pour connaitre l'état d'avancement de cette création.
Citation:
Result = CreateFile(#File, Filename$, Callback [, Flags])
Tout comme avec le langage PureBasic, le paramètre Flags permet de spécifier si le fichier est Ascii, UTF-8 ou Unicode. SpiderBasic permet d'ajouter la constante #PB_LocalStorage pour écrire ce fichier en LocalStorage et plus précisément en LocalForage.


- Pour la création des lignes nous utiliserons classiquement la fonction WriteStringN()

- Important : C'est la fonction CloseFile() déclenchera le callback de création du fichier.

Code.
Code:
EnableExplicit

Enumeration
  #File
EndEnumeration

;Plan de l'application
Declare Start()
Declare onSaveFile(Status, Filename$, File, SizeRead)

Start()

; Création d'un fichier texte
Procedure Start()
  Protected i
 
  Debug "Création d'un fichier ...."
 
  CreateFile(#File, "MyFile.txt", @onSaveFile(), #PB_LocalStorage | #PB_UTF8)
 
  For i=0 To 9
    WriteStringN(#File, "Line "+ Str(i)) 
  Next
 
  ;Si le fichier n'est pas fermé alors pas de sauvegarde
  CloseFile(#File)
EndProcedure

; Callback permettant de savoir si la sauvegarde est bien effectuée
Procedure onSaveFile(Status, Filename.s, File, SizeRead) 
  Select Status
    Case #PB_Status_Saved
      Debug "Fichier " + Filename.s + "(" + SizeRead + " bytes) sauvegardé"
     
    Case #PB_Status_Error
      Debug "Impossible de sauvegarder le fichier " + Filename
  EndSelect
EndProcedure


Le fichier MyFile.txt que vous venez de créer sera stocké sous le nom de sbfs_MyFile.txt dans le Local Forage de votre navigateur comme le montre cette capture de la console Chrome.


Image

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 14/Aoû/2018 0:12, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Lire un fichier texte en Local Storage
MessagePosté: Lun 13/Aoû/2018 23:14 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Lire un fichier texte en Local Storage

Votre fichier étant crée, nous allons voir comment le relire par la suite.

Objectif.
Lire un fichier en Local Storage

- Pour lire un fichier nous allons utiliser la fonction onReadFile que vous connaissez bien sauf que contrairement à PureBasic, cette fonction fait appel à une procédure (CallBack) pour connaitre l'état d'avancement de cette lecture.
Citation:
ReadFile(#File, Filename$, Callback [, Flags])
Tout comme avec le langage PureBasic, le paramètre Flags permet de spécifier si le fichier est Ascii, UTF-8 ou Unicode. SpiderBasic permet d'ajouter la constante #PB_LocalStorage pour lire ce fichier en LocalStorage et plus précisément en LocalForage.

- Pour la lecture ligne à ligne, nous utiliserons classiquement la fonction ReadString() associée à Eof() afin de connaitre quand on arrive en fin de lecture.

Code.
Code:
EnableExplicit

Enumeration
  #File
EndEnumeration

;Plan de l'application
Declare Start()
Declare onReadFile(Status, Filename.s, File, SizeRead)

Start()

Procedure Start()
  ReadFile(#File, "MyFile.txt", @onReadFile(), #PB_LocalStorage | #PB_UTF8) 
EndProcedure

Procedure onReadFile(Status, Filename.s, File, SizeRead) 
  Select Status
    Case #PB_Status_Loaded     
      ; Lecture du fichier ligne par ligne
      While Eof(#File) = 0 
        Debug ReadString(#File)           
      Wend
     
      ;Et on oublie pas de le fermer
      CloseFile(#File)
     
    Case #PB_Status_Error
      Debug "Le fichier " + FileName + " n'existe pas"
  EndSelect
EndProcedure

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 14/Aoû/2018 0:08, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Créer un fichier texte en Local Forage
MessagePosté: Lun 13/Aoû/2018 23:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
En Local Storage vous pouvez donc stocker tout types de fichiers textes : JSON, SQlite, ....

Attention : le nom du fichier est sensible à la casse (minuscule ou majuscule). myFile.txt et MyFile.txt seront deux fichiers différents.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 14/Aoû/2018 0:09, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Créer un fichier texte en Local Forage
MessagePosté: Mar 14/Aoû/2018 0:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Regardons maintenant comment créer et sauvegarder un fichier JSON à partir d'une liste chaînée de contacts.

Création du fichier JSON.
Code:
EnableExplicit

Enumeration
  #File
  #JSON
EndEnumeration

Structure Address
  Actif.b
  Name.s
  County.i
EndStructure

Global NewList Contacts.Address()

;Plan de l'application
Declare Start()
Declare onSaveFile(Status, Filename$, File, SizeRead)

Start()

; Création d'un fichier texte
Procedure Start()
  Protected i
 
  Debug "Création d'un fichier ...."
 
  ;Création d'une structure JSON (Nouvelle fonction)
  CreateJSON(#JSON)
 
  ;Trés classique : Ajoutons deux élémement à la liste chainée
  AddElement(Contacts())
  With Contacts()
    \Actif = #True
    \Name = "Wagner"
    \County = 75
  EndWith
 
  AddElement(Contacts())
  With Contacts()
    \Actif = #True
    \Name = "Hilton"
    \County = 92
  EndWith
 
  ;Insertion de la liste chainée dans la chaine JSON (Nouvelle fonction)
  InsertJSONList(JSONValue(#JSON), Contacts())
 
  CreateFile(#File, "contacts.json", @onSaveFile(), #PB_LocalStorage | #PB_UTF8)
  WriteStringN(#File, ComposeJSON(#JSON)) 
 
  ;Si le fichier n'est pas fermé alors pas de sauvegarde
  CloseFile(#File)
EndProcedure

; Callback permettant de savoir si la sauvegarde est bien effectuée
Procedure onSaveFile(Status, Filename.s, File, SizeRead) 
  Select Status
    Case #PB_Status_Saved
      Debug "Fichier " + Filename.s + "(" + SizeRead + " bytes) sauvegardé"
     
    Case #PB_Status_Error
      Debug "Impossible de sauvegarder le fichier " + Filename
  EndSelect
EndProcedure
Rien de sorcier, je n'ai fait que reprendre le processus de création d'un fichier texte.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Mar 14/Aoû/2018 0:09, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Lire un fichier texte en Local Forage
MessagePosté: Mar 14/Aoû/2018 0:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6853
Localisation: IDF (Yvelines)
Le fichier JSON est crée il est temps de le lire et de le réinjecter dans la liste chaînée des contacts.
Code:
EnableExplicit

Enumeration
  #File
  #JSON
EndEnumeration

Structure Address
  Actif.b
  Name.s
  County.i
EndStructure

Global NewList Contacts.Address()

;Plan de l'application
Declare Start()
Declare onReadFile(Status, Filename.s, File, SizeRead)

Start()

Procedure Start()
  ReadFile(#File, "contacts.json", @onReadFile(), #PB_LocalStorage | #PB_UTF8) 
EndProcedure

Procedure onReadFile(Status, Filename.s, File, SizeRead)
  Protected Buffer.s
 
  Select Status
    Case #PB_Status_Loaded     
      ; Lecture du fichier ligne par ligne
      Buffer =  ReadString(#File)
      CloseFile(#File)
     
      ;Parcourrir (parse) les données JSON à partir d'une chaîne de caractères.
      ParseJSON(#JSON, Buffer)
     
      ; Extraction de la chaine JSOn vers la liste chainée Contacts
      ExtractJSONList(JSONValue(#JSON), Contacts())
     
      ;Verifions que les données sont bien dans la liste chainee Contacts()
      ForEach Contacts()
        With Contacts()
          Debug Str(\County) + " : " + \Name 
        EndWith
      Next
                         
    Case #PB_Status_Error
      Debug "Le fichier " + FileName + " n'existe pas"
  EndSelect
EndProcedure

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat & http://purebasic.chat/forum

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 5 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye