始めまして。初歩的な質問ですがよろしくお願いします。
環境はVB6.0です。
サイズが決まっているラベルオブジェクトで
labelのキャプションにプログラムの中でセットするんですが
半角英数を入れた場合は改行されずに表示文字が切れてしまいます。
全角文字が入る場合もありますので文字数を判定して改行コード
を入れると半角文字の場合見た目の長さが全角の半分になってしまって、
バイト数だとは半角でも2バイト文字で扱われるんでうまくいかないんです。
わかる方がいましたらおねがいします。
泣き別れ処理を考慮する必要があるかと思います。
>バイト数だとは半角でも2バイト文字で扱われるんでうまくいかないんです。
VBの内部文字コードはUNICODEなので、そのままLenB関数を使っても全角半角のバイト数は同じです。
なので、以下のようにしてみて下さい。
LenB(StrConv("TEST", vbFromUnicode)) → 4が返される
LenB("TEST") → 8が返される
序でに、
"てすとTESTてすと"文字列から"TEST"を取り出したいとすると
StrConv(MidB(StrConv("てすとTESTてすと", vbFromUnicode), 7, 4), vbUnicode) → "TEST"が返される
MidB("てすとTESTてすと", 7, 4) → "TE"が返される
はまちゃんさんありがとうございます。
しかし、StrConv()なども使っているんですが
全角半角が混ざると全角が文字化けしてしまって
使い物にならなくなります。
ラベルのサイズは決まっていて、例えば全角15文字分の
サイズの場合は
例:"テストテストテストテストテスト"
↓
[テストテストテストテストテスト(改行)] 15文字
"TestTestTestTestTestTestTestTest"
↓
[TestTestTestTestTestTestTestTe(改行)] 30文字
"テストTestテストTestテストtest"
↓
[テストTestテストTestテストtest(改行)] 21文字
こんな感じでセットしたいんですが、文字はデータベース
からでユーザーが入力するので決まった文字列ではないんです。
>全角半角が混ざると全角が文字化けしてしまって使い物にならなくなります。
どんな感じでうまくいかないのか分からないので、具体的なソースコードを公開していただけると有難いのですが…。
だから、「泣き別れ処理」を加えれ!!
無視するのはかまわないが、せめてググれ
泣き別れという言葉の意味は把握してる?
さささんの仰るとおり、Googleで検索したらありますよ。
例えば、
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9419/access/str_cut/1.html
やりたいことを
一般的なキーワードにして提示しているのに、
なぜ見つけられないのかがホントわかんねぇ〜。
検索サイトなどでキーワードに何を指定して探していたか、
教えてください。
学生のやることですから、穏便に
ツイート | ![]() |