User Tools

Site Tools


k7:k7.4:k7.4.8:k7.4.8.1:start

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:

  • First, a native array is created and filled with fixed data.
  • The array elements are then displayed in the IDE console for control.
  • Then you can export the created array (without receipt in case of success)? file save dialog (binary, gambas-specific file) or
  • import an array after a file open dialog from the export file.
  • Finally, the array elements of the imported array are displayed in the IDE console.

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 = ["Bär", "Meise", "Adler", "Uhu", "Dachs", "Fuchs"]
  ShowArrayElements(aNames)
  SetEnabled(True, True, False)
End ' btnClassArray_Click()
 
Public Sub btnArrayDatenExport_Click()
  Dim hFile As File
 
' Speichern aller Elemente des Arrays 'aNames' in einer binären Datei
  Dialog.Title = "Array-Export in eine binäre Datei"
  Dialog.Filter = ["*.dat", "Daten-Dateien"] 
  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
 
' Einlesen aller Elemente des Arrays 'aNames' aus einer binären Datei
  Dialog.Title = "Array-Import aus einer binären Datei"
  Dialog.Filter = ["*.dat", "Daten-Dateien"] 
  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
 
' Anzeige aller Datensätze (Konsole 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:

Bär     Meise   Adler   Uhu     Dachs   Fuchs   ' Elements Original-Array
Bär     Meise   Adler   Uhu     Dachs   Fuchs   ' Elements Import-Array

Download

7.4.8.1 Export und Import nativer Arrays

Um ein natives Array in einer Datei abzuspeichern oder den Inhalt einer derartigen Datei wieder in ein Array einzulesen (Daten-Import) können Sie ein gambas-spezifisches und binäres Datei-Format einsetzen. Gambas 3 kann einen einfachen Array-Export und Array-Import realisieren, wenn das Array über Write serialisiert in einen Datei-Stream geschrieben oder mit Read aus diesem gelesen wird:

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  

Im Projekt wird folgende Strategie verfolgt:

  • Zuerst wird ein natives Array angelegt und mit festen Daten gefüllt.
  • Die Array-Elemente werden danach in der IDE-Konsole zur Kontrolle angezeigt.
  • Dann kann man das angelegte Array exportieren (ohne Quittung im Erfolgsfall) → Datei-Speichern-Dialog (binäre, gambas-spezifische Datei) oder
  • ein Array nach einem Datei-Öffnen-Dialog aus der Export-Datei importieren.
  • Abschließend werden die Array-Elemente des importierten Arrays in der IDE-Konsole angezeigt.


Im Quelltext wird die Strategie umgesetzt. Das vollständige Projekt finden Sie im Download-Bereich.

' 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 = ["Bär", "Meise", "Adler", "Uhu", "Dachs", "Fuchs"]
  ShowArrayElements(aNames)
  SetEnabled(True, True, False)
End ' btnClassArray_Click()
 
Public Sub btnArrayDatenExport_Click()
  Dim hFile As File
 
' Speichern aller Elemente des Arrays 'aNames' in einer binären Datei
  Dialog.Title = "Array-Export in eine binäre Datei"
  Dialog.Filter = ["*.dat", "Daten-Dateien"] 
  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
 
' Einlesen aller Elemente des Arrays 'aNames' aus einer binären Datei
  Dialog.Title = "Array-Import aus einer binären Datei"
  Dialog.Filter = ["*.dat", "Daten-Dateien"] 
  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
 
' Anzeige aller Datensätze (Konsole 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(..)

Ausgaben in der Konsole der Gambas-IDE:

Bär     Meise   Adler   Uhu     Dachs   Fuchs   ' Elemente Original-Array
Bär     Meise   Adler   Uhu     Dachs   Fuchs   ' Elemente Import-Array

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k7/k7.4/k7.4.8/k7.4.8.1/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools