VB6.0にてShift-Jisコードで格納されている300バイト以内のレコードを対象として、以下のことを実行しようと思います。
・ファイルを1レコードずつ読み、もし、300バイト未満だったら、
そのレコードの最終文字から300バイトまで半角空白を埋める。
300バイト未満かどうかのチェックは実行できたのですが、上記のロジックを
どのように組めばよいのか分からない状態です。
Shift-Jisコード ⇒ Unicodeへの変換をAsc関数で行ない、300バイト未満で且つ、
文字列の最後まできたら、Unicodeの半角空白コードを300バイトまで埋めるという
やり方になるのでしょうか?
もしそうなら、半角空白のUnicodeの文字コードを教えてください。
また、他に簡単なやり方があるのでしたら、教えてください。
宜しくお願い致します。
strhoge = Left(strhoge & Space(300),300)
としてから、Asc関数とか
sasaさんどうもありがとうございます。
誠に申し訳ないのですが、訂正がございます。
VB6.0ではなく、VB.NETで作成することになりました。
そこで、全体の概要を説明いたしますと、
①テキストファイルを1件読む
②対象のレコードが300バイト未満であれば、最後の文字列から300バイトまで半角空白を埋める。
(ただし、対象のレコード内の文字列は全角もあれば半角もあります。)
③次のテキストファイルを読み、テキストファイルの最終レコードまで繰返す。
上記の内容でPGを作成しようと思うのですが、不明な点は②の箇所です。
VB6.0ではAscB関数等を用いて全体をバイト数で返すことができたと思うのですが、
VB.NETでは全角半角交じりのレコードのバイト数を返すということが難しいと聞きました。
そこで、何かアドバイス、もしくは、VB.NETで全角半角交じりのレコードのバイト数を返す方法が参考で記載してある
アドレスを教えていただけないでしょうか?
ちなみにレコードのバイト数が判明したら、PadRight関数で300バイトまで半角スペースを埋めようと考えています。
宜しくお願い致します。
> バイト数を返す方法
System.Text.Encoding クラスを使えば解決できるでしょう。
> Unicodeの半角空白コードを300バイトまで埋めるという
Unicode といっても、エンコード方法は一種類ではありませんよね。
それぞれの文字とバイト数の関係は、
文字 … SJIS, UTF-8, UTF-16
--------------
"A" … 1, 1, 2
"α" … 2, 2, 2
"あ" … 2, 3, 2
というように、どのエンコードなのかによって異なりますし。
ツイート | ![]() |