今日の一言「くたばりかけた」 DEFソースコードを見たものは、分かるはず。 'ソースコード 'コメント:何故かここで力尽きた。 'ファイル配列の準備(空の配列を渡さなくても、きちんと初期化されます) 'ファイルとは別に、メニュー準備用にDEFを作る。 '引数:配列(ファイル名、ファイルタイプ、ファイル拡張子)、拡張子が記述されたDATA文のあるラベル '戻り値:ファイルの個数、ファイル名の長さ、拡張子の個数、拡張子名の長さ(引数の配列) 'コメント:DEFのコード規模が地味に大きい(自己記録突破) DEF FIM_INIT F_NM$[],F_TP[],EXT$[],F_CHK[],EXT_L$ OUT F_MX,F_LN,EXT_MX,EXT_LN VAR I,J,K IF !LEN(EXT$) && CHKLABEL(EXT_L$,1) THEN VAR E_DAT$,C RESTORE EXT_L$:WHILE 1:READ E_DAT$:IF E_DAT$==""THEN:BREAK:ENDIF:C=C+1:WEND:EXT$=ARY_INIT(C):EXT_MX=C:C=0 RESTORE EXT_L$:FOR I=0TO EXT_MX-1:READ EXT$[I]:NEXT F_NM$=ARY_INIT(0):FILES F_NM$:F_MX=LEN(F_NM$) 'プロジェクト内が空っぽでなければ、発動 IF F_MX THEN IF !LEN(F_TP)THEN F_TP=ARY_INIT((F_MX>>4)+!(!(F_MX AND 15)) IF !LEN(F_CHK)THEN F_CHK=ARY_INIT((F_MX>>5)+!(!(F_MX AND 31)) 'ファイルチェック兼ファイル名長さ最大取得 FOR I=0TO (F_MX>>4)+!(!(F_MX AND 15)-1) FOR J=0 TO 15 IF ((I<<4)OR J)>LEN(F_NM)-1 THEN CONTINUE IF F_LN<LEN(F_NM$[(I<<4)OR J])THEN F_LN=LEN(F_NM$[(I<<4)OR J]) LEFT$(F_NM$[(I<<4)OR J],1)==" "THEN F_TP[I]=F_TP[I]OR (2<<(J<<1)) IF LEN(F_NM$[(I<<4)OR J])>4 THEN FOR K=0 TO LEN(EXT$)-1 IF K==1 THEN CONTINUE IF RIGHT$(F_NM$[(I<<4)OR J],4)==EXT$[K]THEN F_TP[I]=F_TP[I]OR (K<<(J<<1)) IF EXT_LN<LEN(EXT$[K])THEN EXT_LN=LEN(EXT$[K]) NEXT ENDIF NEXT NEXT ENDIF END
'配列の確保及び調節 '2018/2/4しんいち氏参考 DEF ARY_INIT(N) VAR A[N] RETURN A END