Thought the PowerBASIC forum could use these 2 complementary
procedures. One captures a string and sends it to disk; the other
retrieves it from disk.
SUB DISK.TO.STRING (byval FILE.NAME$,S$) PUBLIC
X&=FILE.SIZE&(FILE.NAME$)
S$=SPACE$(X&-8) 'BSAVEd files are 8 bytes longer
DEF SEG=STRSEG(S$)
BLOAD FILE.NAME$,STRPTR(S$)
DEF SEG
END SUB
'---------------------------
SUB DISK.FROM.STRING(byval FILE.NAME$,S$) PUBLIC
DEF SEG=STRSEG(S$)
BSAVE FILE.NAME$,STRPTR(S$),LEN(S$)
DEF SEG
END SUB
'---------------------------
FUNCTION FILE.SIZE&(byval FILE.NAME$) PUBLIC
X$=DIR$(FILE.NAME$)
REG 1,&H2F00
CALL INTERUPT &H21
DTASEG=REG(9)
DTAOFF=REG(2)
DEF SEG=DTASEG
FILE.SIZE&=PEEKL(DTAOFF+26)
DEF SEG
END FUNCTION
[This message has been edited by Pat Bruening (edited June 19, 2000).]
procedures. One captures a string and sends it to disk; the other
retrieves it from disk.
SUB DISK.TO.STRING (byval FILE.NAME$,S$) PUBLIC
X&=FILE.SIZE&(FILE.NAME$)
S$=SPACE$(X&-8) 'BSAVEd files are 8 bytes longer
DEF SEG=STRSEG(S$)
BLOAD FILE.NAME$,STRPTR(S$)
DEF SEG
END SUB
'---------------------------
SUB DISK.FROM.STRING(byval FILE.NAME$,S$) PUBLIC
DEF SEG=STRSEG(S$)
BSAVE FILE.NAME$,STRPTR(S$),LEN(S$)
DEF SEG
END SUB
'---------------------------
FUNCTION FILE.SIZE&(byval FILE.NAME$) PUBLIC
X$=DIR$(FILE.NAME$)
REG 1,&H2F00
CALL INTERUPT &H21
DTASEG=REG(9)
DTAOFF=REG(2)
DEF SEG=DTASEG
FILE.SIZE&=PEEKL(DTAOFF+26)
DEF SEG
END FUNCTION
[This message has been edited by Pat Bruening (edited June 19, 2000).]
Comment