storing_20structures_20in_20files
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
storing_20structures_20in_20files [2018/04/17 18:58] – Added syntax highlighting tbest3112 | storing_20structures_20in_20files [2024/01/12 22:46] (current) – Add generic code (e.g. for BBCTTY) richardrussell | ||
---|---|---|---|
Line 1: | Line 1: | ||
=====Storing structures in files===== | =====Storing structures in files===== | ||
- | //by Richard Russell, July 2006//\\ \\ BBC BASIC for Windows | + | //by Richard Russell, July 2006//\\ \\ BBC BASIC does not provide any built-in means of writing entire data structures to a file and reading them back again. Ideally it would be nice if one could say **" |
+ | BB4W: | ||
<code bb4w> | <code bb4w> | ||
- | | + | |
+ | </ | ||
+ | BBCSDL: | ||
+ | <code bb4w> | ||
+ | SYS " | ||
+ | </ | ||
+ | Generic (e.g. BBCTTY): | ||
+ | <code bb4w> | ||
+ | DEF PROCwritestruct(F%, | ||
+ | LOCAL s$ : PTR(s$)=s{} : !(^s$+4)=DIM(s{}) : BPUT#F%,s$; : !(^s$+4)=0 | ||
+ | ENDPROC | ||
</ | </ | ||
Similarly to read an entire structure **struct{}** from the file opened on channel **file%** do the following: | Similarly to read an entire structure **struct{}** from the file opened on channel **file%** do the following: | ||
+ | BB4W: | ||
+ | <code bb4w> | ||
+ | SYS " | ||
+ | </ | ||
+ | BBCSDL: | ||
+ | <code bb4w> | ||
+ | SYS " | ||
+ | </ | ||
+ | Generic (e.g. BBCTTY): | ||
<code bb4w> | <code bb4w> | ||
- | SYS " | + | DEF PROCreadstruct(F%, s{}) |
+ | LOCAL s$ : PTR(s$)=s{} : !(^s$+4)=DIM(s{}) : s$=GET$#F% BY LENs$ : !(^s$+4)=0 | ||
+ | ENDPROC | ||
</ | </ | ||
It is best not to mix these statements with conventional BASIC file reads and writes, but if you do you must flush BASIC' | It is best not to mix these statements with conventional BASIC file reads and writes, but if you do you must flush BASIC' |
storing_20structures_20in_20files.1523991491.txt.gz · Last modified: 2024/01/05 00:16 (external edit)