
VB6.0にて、あるデータ項目の内容を、画面上の2つの表示領域に分割して
セットする方法を教えて下さい。
あるファイルの項目として、「住所」という項目があるとします。
このデータを取得し、画面に表示する際に、「住所1」「住所2」とに分割して、
セットします。
この場合、ファイル上の「住所」は、キャラクタタイプで40バイトと定義されており、
”半角/全角文字混在”でデータが格納されています。
画面上の、「住所1」「住所2」はそれぞれ、20バイトとします。
この様な条件で、単純に取得したデータを2分割すると、
取得したデータが、全て半角か全角なら問題はないのですが、
例えば、1文字目が半角で、以降が全て全角文字だった場合に、
最後の全角文字がぴったり収まらなくなり、うまく表示できないように思います。
また、文字を取得する際に、使用している、Mid(MidB)関数やLen(LenB)関数も、
うまく利用できていないようです。(コード体系の違いでしょうか?)
どなたかご教授下さい。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
#1で回答した者です。
#1で示したソースプログラムで理解されると思いますが
念のため補足を致します。
ソースプログラムを実行するとシフトJISコード換算で
住所の21バイト目が全角の2バイト目にあたる場合、
address1には19バイト分の文字列、address2には
20バイト目(全角の1バイト目)以降の文字列が格納されます。
例)
"123456789全角456789全角・・・" → address1="123456789全角456789"
├─ LenB(work)=21 ─┤ address2="全角・・・"
1つめに頂いたご回答とあわせて、ありがとうございました。
サンプルコードまでご提供頂き大変助かりました。
今後もなにかあればまたよろしくお願い致します。
No.2
- 回答日時:
シフトJISに変換して分割した後に、分割した部分が漢字の第一バイトと第二バイトの間かどうかをチェックしておいた方が良いでしょうね。
単純にバイト数で切ると、文字化けになる可能性があります。
No.1
- 回答日時:
Mid関数やLen関数は文字単位で処理されますので
全角も半角もそれぞれ1文字として扱われます。
また、MidB関数やLenB関数はバイト単位で処理されますが
VB内部ではUnicode仕様になっていて全角も半角もそれぞれ
2バイトとして扱われます。
ですので、次のようにStrConv関数を使って文字列をUnicodeでなく
システムの既定のコード体系(通常はSHIFT-JIS)に変換して処理すれば
うまく表示することが出来ると思います。
Dim address1 As String, address2 As String
Dim work As String
Dim ii As Integer
For ii = 1 To Len(address) '住所の文字数分繰り返す
work = Left(address, ii) '1文字,2文字・・・と順番に住所を切り出す
work = StrConv(work, vbFromUnicode) 'Unicodeからシステムの既定のコードに変換
If (LenB(work) > 20) Then '20バイトを超えたらEXIT
Exit For 'EXITするとaddress2の先頭文字位置がiiに格納される
End If
Next ii
address1 = Left(address,ii-1) '住所1
address2 = Mid(address,ii) '住所2
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
全角英数字の必要性が理解できない
-
ダブルコーテーションの置換
-
Accessでのグループ化で全角・...
-
IEからEdgeへの移行に伴うIMEの...
-
全角入力
-
メモ帳の段落の揃え方
-
ACCESS:半角、全角空白スペース...
-
Accessで日付や数値を全角で表...
-
char型全角数字から、int型半角...
-
VBAの文字列の中に”(全角のダブ...
-
アクセスで文字列中の空白を削...
-
バッチファイルでデスクトップ...
-
ACCESS97 : レコードが長いファ...
-
Webフォームにおける数字入力時...
-
Excel VBAでオートシェイプ内の...
-
全角スペース
-
HTMLを作る際、%パーセントは...
-
word差し込み印刷 半角カタカ...
-
全角文字だけ抜き出したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
COBOL・全角判定
-
word差し込み印刷 半角カタカ...
-
VB.net、テキストボックス入力...
-
char型全角数字から、int型半角...
-
プログラミングでは、半角括弧...
-
メモ帳の段落の揃え方
-
エクセルにMicrosoft Barcode C...
-
エクセルの検索が正しくできな...
-
封筒の宛先で縦書きの書き方
-
エクセルでの”々”の扱い
-
全角/半角キーをSendkeys関数で...
-
.NET3.5におけるキーボードの「...
-
VBで、String型のデータが、...
-
Accessで日付や数値を全角で表...
-
明細書の英数字の全角・半角に...
おすすめ情報