FREEMEMが空き容量だと勘違いしてる人が多いですが、FREEMEMはSDカードの空き容量ではなく、プチコン内部のメモリ容量(RAM)です。
では、どのように取得するのかというと、FILESを使用します。 FILESでSDカードの空き容量を調べられると聞いたことがある人が、その方法がわからないという人もいると思います。
- FILES
このように入力するとそのプロジェクトにあるファイルが出ます。
そして最後に、
- −− 123456 Kbytes free −−
このようなのが出ます。これを利用します。
ただ、FILES単独だと、
- == Press ENTER ==
このようなものが表示され、Aボタンを連打する羽目になることがあります。
これを防ぐため、
- FILES ”DAT:SYS”
を使用します。これだと、必ず1画面に収まります。
- DEF CHKSDROM()
- DIM F[12]
- DIM FL$[0]
- VAR I
- VAR F$
- CLS
- FILES ”DAT:SYS”,FL$
- FILES ”DAT:SYS”
- FOR I=0 TO 11
- F[I]=CHKCHR(3+I,1+LEN(FL$))
- IF F[I]==32 THEN BREAK
- NEXT
- FOR I=0 TO 11
- IF F[I]==32 THEN BREAK
- F$=F$+CHR$(F[I])
- NEXT
- CLS
- RETURN VAL(F$)
- END
上のプログラムリストだと、KB単位の容量が取得できます。KB以外を使いたい場合もあるかもしれません。 例えば、MB単位にしたい場合は
- R_KB=CHKSDROM()
- R_MB=R_KB/1024
このようにすればいけます。
以下に対応表を載せておきます。
単位 | KBからの倍率 |
---|---|
MB | KB/1024 |
GB | KB/1024/1024 |
ブロック*1 | KB/128 |
- DEF FREEROM()
- FILES ”DAT:SYS”
- VAR ROM$,X=3,Y=CSRY
- WHILE CHR$(CHKCHR(X,Y))
- ROM$=ROM$+CHR$(CHKCHR(X,Y))
- INC X
- WEND
- CLS
- RETURN VAL(ROM$)
- END
- DEF FREESD()’某OSに似てる!
- DIM S$,X,C
- FILES ”DAT:SYS”
- FOR X=3 TO X+1
- C=CHKCHR(X,CSRY−1)
- IF 48<=C && C<=57 THEN
- S$=S$+CHR$(C)
- ELSE BREAK
- ENDIF
- NEXT
- CLS
- RETURN VAL(S$)−(HARDWARE==2)
- END
- DEF FREESD(MODE)
- FILES ”DAT:SYS”
- VAR ROM$,ROM,X=3,Y=CSRY−1
- WHILE CHR$(CHKCHR(X,Y))!=” ”
- ROM$=ROM$+CHR$(CHKCHR(X,Y))
- INC X
- WEND
- CLS
- IF MODE==0 THEN ROM=VAL(ROM$)*1024
- IF MODE==1 THEN ROM=VAL(ROM$)
- IF MODE==2 THEN ROM=VAL(ROM$)/1024
- IF MODE==3 THEN ROM=VAL(ROM$)/1024/1024
- IF MODE==4 THEN ROM=VAL(ROM$)/128
- RETURN ROM
- END
※コメント欄は閉鎖しました。