カンマやタブやスペースは行の終端としません。
旧BASICでの LineInput# と同等な感じのルーチンです。
コード: 全て選択
''''' FileHandleInputLine ファイル・ハンドル・読込み・行
Function ZFIHILL(ZHDL as Long) as String
Dim ZADD as String , ZBBB[1] as Byte , ZGET as Dword , ZRET as Long , Z1 as Long
ZHDL=ZHDL-1 : SetFilePointer(_System_hFile[ZHDL],-1,0,FILE_CURRENT) : ZFIHILL="" : ZADD=ZeroString(100) : ZRET=0
Do
For Z1=0 to 99
Do : ReadFile(_System_hFile[ZHDL],ZBBB,1,VarPtr(ZGET),ByVal 0) : ZADD[Z1]=ZBBB[0] : If ZGET=0 then Exit For
If ZBBB[0]=10 then SetFilePointer(_System_hFile[ZHDL],1,0,FILE_CURRENT) : Exit For
If ZBBB[0]=13 then If ZRET=0 then ZRET=1 : Continue else Exit For
If ZRET=1 then Exit For
Exit Do : Loop
Next Z1 : If Z1=0 then Exit Function else If Z1<=99 then ZFIHILL=ZFIHILL+ZSTLBYT(ZADD,Z1) : Exit Function else ZFIHILL=ZFIHILL+ZADD
Loop
End Function
ファイルハンドルから読込まれた1行の文字列です。
CRやLFは含みません。
処理開始時のポインタから取得を開始します。前方のチェックはしません。
長さの限界はString変数の限界と同等だと思います。(詳しく調べてません。ごめんなさい。その対応も考慮されてません。)
ZHDLハンドル
Open等で使用したハンドル番号です。
処理内で ZHDL=ZHDL-1 となってますが、詳しく調べてませんが決まり事のようです。
他に方法があるかも知れませんが、探せなかったので作りました。
最終行のCR無しやLF無しにも対応しました。