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:
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