FUJIさんのご指摘を受けて、HSP標準のnotemaxとほぼ同等の動作をするモジュール。
参考:複数行文字列の行数を取得する// 行数取得モジュール
// 変数の型チェックは行っていないので注意
#module
// instr()を利用した行数の取得
#defcfunc get_lines_num1 var p1
result = 0
repeat strlen(p1)
result++
ins = instr(p1, cnt, "\n")
if ins == -1 : break
continue cnt + ins + 2
loop
return result
// 正規表現を利用した行数の取得
#defcfunc get_lines_num2 var p1
if vartype(com_regexp) != vartype("comobj") {
// comオブジェクト型変数の初期化
newcom com_regexp, "VBScript.RegExp"
comres com_result
com_regexp("Pattern") = "\\r\\n"
com_regexp("Global") = 1
}
com_regexp->"Execute" p1
result = com_result("Count") + 1 // 行数 = 改行の個数 + 1
s = strmid(p1, -1, 2)
if s == "\n" | s == "" : result-- // 最後が空行ならその行をカウントしない
return result
// notemaxを利用した行数の取得
#defcfunc get_lines_num3 var p1
notesel p1
result = notemax
noteunsel
return result
#global
sdim s, 32, 3
s(0) = "Hot\nSoup\nProcessor"
s(1) = "sample\nstrings\n"
s(2) = ""
foreach s
mes get_lines_num1(s(cnt))
mes get_lines_num2(s(cnt))
mes get_lines_num3(s(cnt))
mes "***"
loop
stop
2008年1月24日木曜日
複数行文字列の行数を取得する(2)
登録:
コメントの投稿 (Atom)
4 件のコメント:
はじめまして hiroと申します。
HSPメモ帳のリンクありがとうございます。
エントリーと関係の無いことで、すいませんが、当ブログでellerさんのブログをリンクしてもいいでしょうか?
# 先ほどコメントをしたのですが、投稿失敗したようなので再投稿します。
# 重複でしたら、すいません。
HSPメモ帳のリンクありがとうございます。
こちらでも、リンクしたいのですがよろしいでしょうか?
hiroさん、はじめまして。ellerと申します。
リンクの件、ありがとうございます。
当サイトはリンクフリー&アンリンクフリーですので、ご自由にどうぞ。
こちらから張る時に連絡せずにすみませんでした。
ありがとうございます。
こちらもリンクフリーですので、連絡無しでOKです。
コメントを投稿