/*********************************************************** 改行コード関連の処理を行うモジュール 【2005/11/13 更新】 命令・関数一覧 #defcfunc id_crlf var buf_to_id 機能: 文字列中の改行コード形式を判別(最初に見つけたものを返す) 引数: buf_to_id 処理対象文字列 戻り値: 0(TYPE_CRLF) 1(TYPE_CR) 2(TYPE_LF) -1(TYPE_NO_CRLF=改行コードが見つからなかった) #deffunc conv_crlf var buf_to_conv, int conv_type 機能: 文字列中の改行コードを別形式に変換 引数: buf_to_conv 処理対象文字列 conv_type 変換後形式( 0(TYPE_CRLF) 1(TYPE_CR) 2(TYPE_LF) から選択して指定) #deffunc rm_crlf var buf_to_rm 機能: 文字列中の改行コードを削除 引数: buf_to_rm 処理対象文字列 使用上の注意 含まれる改行コードの形式が1種類に統一されている 文字列のみ正常に処理することができる。 Shift-JIS文字列でのみ動作確認済み ***********************************************************/ #module crlf #const TRUE 1 #const FALSE 0 /* コード番号 */ #const global CODE_CR 13 #const global CODE_LF 10 /* 改行コード形式 */ #const global TYPE_CRLF 0 #const global TYPE_CR 1 #const global TYPE_LF 2 #const global TYPE_NO_CRLF 100 // 改行コードが見つからなかった #const global NUM_TYPE_CRLF 3 // 種類数 /**********************************************************/ // 改行コード形式を識別 /**********************************************************/ #defcfunc id_crlf var buf_to_id char = "\n" if instr(buf_to_id,0,char)>=0 { return TYPE_CRLF } char = " " poke char,0,CODE_CR if instr(buf_to_id,0,char)>=0 { return TYPE_CR } poke char,0,CODE_LF if instr(buf_to_id,0,char)>=0 { return TYPE_LF } return TYPE_NO_CRLF /**********************************************************/ // 改行コードを別形式に変換 /**********************************************************/ #deffunc conv_crlf var buf_to_conv, int conv_type /****************/ /* 引数チェック */ /****************/ if strlen(buf_to_conv)<=0 : return // 文字列が空 if (conv_type>TYPE_LF) | (conv_type=len { // 最後の行 if flag { // 処理対象文字列の末尾が改行コード tmpbuf += tmpstr+new_crlf } else { tmpbuf += tmpstr } break } else { tmpbuf += tmpstr+new_crlf } loop buf_to_conv = tmpbuf return /**********************************************************/ // 改行コードを削除 /**********************************************************/ #deffunc rm_crlf var buf_to_rm /* getstr検索用改行コード */ crlfs = 0,CODE_CR,CODE_LF // CRLFは必要なし /* 改行コードを種類ごとに削除 */ repeat NUM_TYPE_CRLF crlftype = cnt i = 0 tmpbuf = "" len = strlen(buf_to_rm) /* getstrで改行コードの手前まで取得した文字列を別のバッファ にためていき最後にまとめて元のバッファに戻す */ repeat if i>=len { break } getstr tmpstr,buf_to_rm,i,crlfs(crlftype) i += strsize tmpbuf += tmpstr loop buf_to_rm = tmpbuf loop return /**********************************************************/ #global