文字数をカウントする

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
メッセージ
作成者
水波形
記事: 106
登録日時: 2009年3月29日(日) 15:45

文字数をカウントする

#1 投稿記事 by 水波形 »

文字数のByte数は取得出来ますが、
文字数をカウントする方法が無さそうだったので作ってみました。
一応、半角全角を対応させています。
半角のカタカナは、2つで1文字とカウントされるっぽいですが……

GetTextCount関数として定義してます。

戻り値に文字数、
引数にカウントさせるテキストデータ(BytePtr型)
TextNum = GetTextCount(buf)

▽使用例▽
▽これをコピペしてください▽
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/
HSABP

Re: 文字数をカウントする

#2 投稿記事 by HSABP »

コード: 全て選択

'全角チェック(Shift_JIS)
Function isZenkaku(c As Byte) As Long
	If (c > &h80 And c < &hA0) Or (c > &hCF And c < &hF0) Then isZenkaku = 1
End Function

'文字数カウント(Shift_JIS)
Function GetTextCount(Text As BytePtr) As Long
	Dim i As Long

	While Text
		If isZenkaku(Text) Then i++'文字が全角文字のとき
		i++
		GetTextCount++
	Wend

End Function
たかせ
記事: 217
登録日時: 2006年2月05日(日) 17:10
お住まい: 東京都

Re: 文字数をカウントする

#3 投稿記事 by たかせ »

ISCharAlphaNumeric関数からIsDBCSLeadByte関数に変更するだけでよいと思います。
ただし判定方法は <> FALSEとなります。
HSABP

Re: 文字数をカウントする

#4 投稿記事 by HSABP »

コード: 全て選択

Declare Function GetTextCount CDECL lib "msvcrt" Alias "_mbslen" (str As *Byte) As Dword
これで良い