ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 19:53

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - ファイル・読込み・一行・最大バイト指定
作成者 メッセージ
  記事の件名:  不備を吸収して再UPしました。  引用付きで返信する
バイト指定を不要にしました。
最終行のCR無しやLF無しやEOFもチェックできてます。
http://www.activebasic.com/forum/viewto ... 9f334cf4e1
投稿記事 Posted: 2008年4月11日(金) 14:14
  記事の件名:  ファイル・読込み・一行・最大バイト指定  引用付きで返信する
例によって、だからなんなの?かもしれないシリーズです。恐縮です。
旧BASICでの LineInput# と同等な感じのルーチンです。探せば他に方法があるかも知れませんが、私は探し切れなかったので自作で普段使用してるものです。
カンマやタブで読込み終了せず、CR , LF , CR+LF までを一行として読み込みます。

''''' FileInputLineByte ファイル・読込み・一行・最大バイト指定
Function ZFILILB(ZHDL as long, ZBYT as long) as string
Dim ZLIN as string , ZCNT as long , ZEOG as long , ZWRK as dword , ZBBB[1] as byte
ZFILILB="" : ZLIN=ZeroString(ZBYT) : ZHDL=ZHDL-1 : SetFilePointer(_System_hFile[ZHDL],-1,0,FILE_CURRENT)
For ZCNT=0 to ZBYT-1 : ReadFile(_System_hFile[ZHDL],ZBBB,1,VarPtr(ZWRK),ByVal 0)
ZLIN[ZCNT]=ZBBB[0] : ZEOG=0 : If ZBBB[0]=10 Then ZEOG=1 else If ZBBB[0]=13 Then ZEOG=2
If ZEOG>0 then SetFilePointer(_System_hFile[ZHDL],ZEOG,0,FILE_CURRENT) : Exit For
Next : If ZCNT>0 then ZFILILB=ZeroString(ZCNT) : memcpy(StrPtr(ZFILILB),StrPtr(ZLIN),ZCNT)
End Function

ZFILILB戻値は、ファイルから読み込まれた一行の文字列です。CR や LF は含みません。
ZHDLハンドルからZBYTバイトを最大バイトとする一行を読込みます。ZBYTの指定理由は、読込み毎の毎回のファイルサイズ取得にかかる時間を省略したかったのと、だいたい1000や10000などの指定で支障が無いと思われる事です。ただしその代償として、EOF 手前に CR も LF も無い場合の最終行は後ろに余分な文字が付いてくる事があります。
投稿記事 Posted: 2008年2月26日(火) 03:09

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean