LocalForage : Création d'un fichier

Partagez votre expérience de SpiderBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

LocalForage : Création d'un fichier

Message par falsam »

SpiderBasic utilise la technologie localForage (Fondation Mozilla) pour accéder simplement à du stockage hors ligne.

:arrow: https://github.com/localForage/localForage

L'objectif de ce code est de :
  • - Créer un fichier contenant x lignes,
    - Voir le contenu du fichier,
    - Exporter le fichier.
:idea: Démonstration http://falsam.com/sbtest/localforage.html

Au lancement il n'y aura pas de fichier présent. Cliquez sur les boutons ... :
  • -Add new line Ajouter une ligne.
    -Read content Lister le contenu du fichier dans la fenêtre de débogage.
    -Export Data Exporter les données dans un fichier.
:!: Nous allons utiliser les fonctions CreateFile(), ReadFile(), CloseFile(), etc .... MAIS attention, le fichier ne sera jamais crée sur le support physique de votre ordinateur ou terminal Android.

Chaque processus de création ou lecture d'un fichier fait appel à un callback afin de connaitre le status du processus en cours.
  • - #PB_Status_Loaded
    - #PB_Status_Progress
    - #PB_Status_Saved
    - #PB_Status_Error
■ Code

Code : Tout sélectionner

;Local Forage 
;
;SpiderBasic 2.20

EnableExplicit

Enumeration 
  #File
  #FileExport
  
  #mf
  #mfReadContent
  #mfNewLine
  #mfExport
EndEnumeration

Global Buffer.s, CountLine

;Sommaire / Summay
Declare Start()

Declare DataRead()    ;Lecture contenu du fichier / Reading file content
Declare DataSave()    ;Ajouter une ligne / Add a line
Declare DataExport()  ;Exportation des données / Exporting data

Declare OnDataProcess(Status, Filename$, File, SizeRead)
Declare onDataError(FileName.s)

Start()

Procedure Start()
  OpenWindow(#mf, 0, 0, 0, 0, "Local Forage", #PB_Window_Background)
  ButtonGadget(#mfNewLine, 20, 20, 80, 24, "Add new line")
  ButtonGadget(#mfReadContent, 110, 20, 80, 24, "Read content")
  ButtonGadget(#mfExport, 200, 20, 80, 24, "Export Data")
  
  ;Lecture contenu du fichier / Reading file content
  DataRead()
  
  ;Déclencheurs
  BindGadgetEvent(#mfNewLine, @DataSave())
  BindGadgetEvent(#mfReadContent, @DataRead())
  BindGadgetEvent(#mfExport, @DataExport())
EndProcedure

Procedure DataRead()
  If ReadFile(#File, "MyFile.txt", @OnDataProcess(), #PB_LocalStorage)
  EndIf
EndProcedure

Procedure DataSave()
  CountLine + 1
  Buffer + "Line " + Str(CountLine) + #CRLF$  
  
  If CreateFile(#File, "MyFile.txt", @OnDataProcess(), #PB_LocalStorage)
    WriteString(#File, Buffer)
    CloseFile(#File)
  EndIf
EndProcedure

Procedure DataExport()
  If CreateFile(#FileExport, "result.txt", @OnDataProcess(), #PB_LocalStorage)
    WriteString(#FileExport, Buffer)  
    ExportFile(#FileExport, "text/plain", #PB_LocalFile)
    CloseFile(#FileExport)
  EndIf
EndProcedure

Procedure OnDataProcess(Status, Filename$, File, SizeRead)
  Select Status
    Case #PB_Status_Loaded
      Buffer = ReadString(File, #PB_File_IgnoreEOL)
      CloseFile(File)
      
      Debug "Contenu actuel du fichier " + Filename$
      Debug Buffer 
      
      CountLine = CountString(Buffer, #CRLF$)
      
    Case #PB_Status_Progress  
      
    Case #PB_Status_Saved
      Select File
        Case #File
          Debug "Ajout de la " + CountLine + " eme ligne effectuée"
          
        Case #FileExport
          Debug "Exportation terminée : " + CountLine + " lignes exportées"
      EndSelect
      
    Case #PB_Status_Error
      onDataError(Filename$)
      
  EndSelect
EndProcedure

Procedure OnDataError(FileName.s)
  Debug "Le fichier " + Filename + " n'est pas présent dans le local storage."
EndProcedure
Si vous ouvrez la console de votre navigateur (F12 pour Chrome) cliquez sur le lien Application puis sur le lien localForage

Image

Cliquez ensuite sur le lien keyvaluepairs pour voir le nom de votre fichier précédé de sbfs_
Exemple : sbfs_MyFile.txt

Fermez votre navigateur (ou l'onglet contenant l'application) et relancer votre application.

:!: Attention : Si vous effacez l'historique de votre navigateur, vous perdrez vos fichiers.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%