7.4.8.1 Export and import of native arrays

To save a native array in a file or to import the contents of such a file back into an array (data import), you can use a Gambas-specific and binary file format. Gambas 3 can realize a simple Array-Export and Array-Import if the array is serialized via Write written to or read from a file stream:

If Dialog.SaveFile() Then Return
hFile = Open Dialog.Path For Write Create
  Write #hFile, aNames As ARRAY
Close #hFile
If Dialog.OpenFile() Then Return
hFile = Open Dialog.Path For Read
  aNames = Read #hFile As ARRAY
Close #hFile

The project pursues the following strategy:

The strategy is implemented in the source code. The complete project can be found in the download area.

' Gambas class file
 
Public aNames As String[]
 
Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = False
  If Not Exist(Application.Path &/ "array.dat") Then
     SetEnabled(True, False, False)
  Else
     SetEnabled(True, False, True)
  Endif
End ' Form_Open()
 
Public Sub btnSetArray_Click()
  aNames = ["Bear", "Tit", "Eagle", "Eagle Owl", "Badger", "Fox"]
  ShowArrayElements(aNames)
  SetEnabled(True, True, False)
End ' btnClassArray_Click()
 
Public Sub btnArrayDatenExport_Click()
  Dim hFile As File
 
' Saving all elements of the array 'aNames' in a binary file
  Dialog.Title = "Array export to a binary file".
  Dialog.Filter = ["*.dat", "Data Files"]
  Dialog.Path = Application.Path &/ "array.dat"
 
  If Dialog.SaveFile() Then Return
  hFile = Open Dialog.Path For Write Create
  Write #hFile, aNames As ARRAY
 
  Close #hFile
 
  SetEnabled(True, True, True)
 
End ' btnDatenExport_Click()
 
Public Sub btnArrayDatenImport_Click()
  Dim hFile As File
 
' Read in all elements of the array 'aNames' from a binary file.
  Dialog.Title = "Array import from a binary file".
  Dialog.Filter = ["*.dat", "Data files"]
  Dialog.Path = Application.Path &/ "array.dat"
 
  If Dialog.OpenFile() Then Return
  hFile = Open Dialog.Path For Read
  aNames = Read #hFile As ARRAY
 
  Close #hFile
 
  ShowArrayElements(aNames)
  SetEnabled(True, True, True)
 
End ' btnDatenImport_Click()
 
Private Sub ShowArrayElements(aArray As String[])
  Dim sElement As String
 
' Display of all data sets (console IDE)
  For Each sElement In aArray
      Print sElement,
  Next ' sElement
  Print
 
End ' ShowArrayElements(aArray As String[])
 
Public Sub SetEnabled(bAR As Boolean, bEX As Boolean, bIM As Boolean)
 
  btnSetArray.Enabled = bAR
  btnArrayDatenExport.Enabled = bEX
  btnArrayDatenImport.Enabled = bIM
 
End ' SetEnabled(..)

Issues in the console of the Gambas IDE:

Bear   Tit   Eagle   Owl   Badger   Fox ' Elements Original Array
Bear   Tit   Eagle   Owl   Badger   Fox ' Elements Import Array

Download