'For free use in GFA Basic programs
In these examples we use file streaming to load and
save data from or to GFA Basic listbox and combobox
objects and files.
This type of file input/output streams each line of data
in or out line by line. The buffer data is really the string.
We read the lines into the object from the test.dat
file and add a line. Then the contents are written
to a new file named testhello.dat.
Several listboxes an comboboxes can use the same
procedure in a program once we place the name of
the object in a string, for example "lb1" or "cb1".
The filename and the object name are passed to
the procedure parameter list as strings.
Note: the comboboxes or listbox must be placed on
the form with the form editor first, unless you use the
examples in the .zip file.
Click here to download GB32_Streaming_ListBox_Combobox_Files.zip
'Example 1: Listboxes
'GFA Basic Standard ListBox File Streaming IO
LoadForm frm1
Global ListBxNam As String
ListBxNam = "lb1"
Global Fnam As String
Fnam = App.Path + "\" + "Test" + ".dat"
@LoadFileStream_lb(Fnam, ListBxNam)
Global a$
a$ = "Hello World"
If ListBxNam = "lb1"
lb1.AddItem a$
EndIf
Fnam = App.Path + "\" + "Testhello" + ".dat"
@SaveFileStream_lb(Fnam, ListBxNam)
Do : Sleep : Until Me Is Nothing
Procedure LoadFileStream_lb(Fnam As String, ListBxNam As String)
Local sfile = FreeFile
Local itm$
If ListBxNam = "lb1"
lb1.TopIndex
EndIf
Try
Open Fnam for Input As # sfile
While Not EOF(# sfile)
Input # sfile, itm$
If ListBxNam = "lb1" And itm$ <> ""
lb1.AddItem itm$
EndIf
Wend
Close # sfile
Catch
Message Err$
Close # sfile
EndCatch
Return
Procedure SaveFileStream_lb(Fnam As String, ListBxNam As String)
Local sfile = FreeFile
Local item As Int
Try
sfile = FreeFile
Open Fnam for Output As # sfile
If ListBxNam = "lb1"
For item = 0 To lb1.ListCount - 1
Print # sfile, lb1.List(item)
Next item
EndIf
Close # sfile
Catch
Message Err$
Close # sfile
EndCatch
Return
'Example 2: Comboboxes
'GFA Basic Standard ComboBox File Streaming IO
'Allan Shura
LoadForm frm1
Global ComboBxNam As String
ComboBxNam = "cb1"
Global Fnam As String
Fnam = App.Path + "\" + "Test" + ".dat"
LoadFileStream_cb(Fnam, ComboBxNam)
Global a$
a$ = "Hello World"
If ComboBxNam = "cb1"
cb1.AddItem a$
EndIf
Fnam = App.Path + "\" + "Testhello" + ".dat"
SaveFileStream_cb(Fnam, ComboBxNam)
Do : Sleep : Until Me Is Nothing
Procedure LoadFileStream_cb(Fnam As String, ComboBxNam As String)
Local sfile = FreeFile
Local itm$
If ComboBxNam = "cb1"
cb1.TopIndex
EndIf
Try
Open Fnam for Input As # sfile
While Not EOF(# sfile)
Input # sfile, itm$
If ComboBxNam = "cb1" And itm$ <> ""
cb1.AddItem itm$
EndIf
Wend
Close # sfile
Catch
Message Err$
Close # sfile
EndCatch
Return
Procedure SaveFileStream_cb(Fnam As String, ComboBxNam As String)
Local sfile = FreeFile
Local item As Int
Try
sfile = FreeFile
Open Fnam for Output As # sfile
If ComboBxNam = "cb1"
For item = 0 To cb1.ListCount - 1
Print # sfile, cb1.List(item)
Next item
EndIf
Close # sfile
Catch
Message Err$
Close # sfile
EndCatch
Return