Jw_cad 情報交換室−その3New

 JWW についての情報交換の場としてお使いください
初心者の方などのご相談は Jw_cad 相談 室−その2をご利用ください
なお、情報交換室と相談室の両方に同じ内容を投稿するのはご遠慮ください

2009年9月以前の発言過去ログのページからご覧ください。

それ以降の過去ログは消失しています。
申し訳ありませんが、復活の予定はありません。


新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
1048 / 1492     ←次へ | 前へ→

Re:文字列の長さを実寸で知る
 英人 E-MAIL  - 21/8/18(水) 13:33 -
ご迷惑をおかけしました。

以前 Visual Studio 2005で使用していた、文字の長さを取得する関数です。
Private Function m_len(ByVal str, ByVal mW, ByVal md) As Double
Dim i As Integer
Dim m As Integer
' str:文字列 mw:jwis全角文字幅 md:jw文字間隔 curScale:書き込みレイヤスケール
For i = 1 To Len(str)
m = Len(StrConv(Mid(str, i, 1), VbStrConv.Narrow))
If m = 1 Then '半角の場合
m_len = m_len + mW / 2 '半角文字の幅を加えて
If i <> Len(str) Then m_len = m_len + md / 2 &#39;文字間隔の半分を加える
End If

If m = 2 Then &#39;全角の場合
m_len = m_len + mW &#39;is全角文字の幅を加えて
If i <> Len(str) Then m_len = m_len + md &#39;文字間隔を加える
End If
Next i
m_len = m_len * curScale
End Function

これがうまくいかなくて、いろいろ調べて先ほど変更した Visual Studio 2019用のものが
以下となります。

Public Function m_len(ByVal str As String, ByVal mW As Double, ByVal md As Double) As Double
Dim i As Integer
Dim m As Integer
&#39; str:文字列 mw:jwis全角文字幅 md:jw文字間隔 curScale:書き込みレイヤスケール
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
For i = 1 To Len(str)
&#39;"Shift_JIS"の使えるEncodingにセットして
Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS")
&#39;そのEncodingでの文字のバイト数を得る 全角ならば2が、半角ならば1が得られる
m = sjisEnc.GetByteCount(Mid(str, i, 1))
If m = 1 Then &#39;半角の場合
m_len = m_len + mW / 2 &#39;半角文字の幅を加えて
If i <> Len(str) Then m_len = m_len + md / 2 &#39;文字間隔の半分を加える
End If

If m = 2 Then &#39;全角の場合
m_len = m_len + mW &#39;is全角文字の幅を加えて
If i <> Len(str) Then m_len = m_len + md &#39;文字間隔を加える
End If
Next i
m_len = m_len * curScale
End Function

"Shift_JIS"の使えるEncodingを意識して使用しないといけないということのようでした。


引用なし

パスワード


<Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0@pl39246.ag2525.nttpc.ne.jp>
・ツリー全体表示

文字列の長さを実寸で知る 英人 21/8/10(火) 14:15
Re:文字列の長さを実寸で知る somem 21/8/10(火) 21:51
Re:文字列の長さを実寸で知る 英人 21/8/18(水) 12:53
Re:文字列の長さを実寸で知る kojima 21/8/11(水) 13:45
Re:文字列の長さを実寸で知る 英人 21/8/18(水) 13:11
Re:文字列の長さを実寸で知る 英人 21/8/18(水) 13:33

1048 / 1492     ←次へ | 前へ→
新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃過去ログ ┃ホーム
 1473628
ページ:  ┃  記事番号:  

C-BOARD Moyuku v1.03b5
Jw_cad Copyright (C)1997-2021 Jiro Shimizu & Yoshifumi Tanaka