現在ハンディターミナル(HT)とPCとの通信を行うプログラム(VB6.0)を作成しています。
このプログラムは元々VB2.0で作成されたものをベースとしてVB6.0で再作成しているものです。
プログラムの中でHTとPCとの通信エラーを防ぐため、データ行のBCCを計算しHTに送信している
部分があります。VB6.0ソースを下に表示します。
(実際は、計算したBCCをデータ(下のCheckString変数)の最終行にくっつけてHTに送信していますが、ここではBCCのみ送信しています)
-------------------------------------------------○VB6.0
/* 最初にBCCを計算して返し、HT側へ送信している */ /* BCCはstring */
Dim i As Integer, aa As Integer,BCC as String
aa = 0
For i = 1 To Len(CheckString)
aa = aa Xor Asc(Mid(CheckString, i, 1))
Next
BCC = Chr$(aa)
frmMain.MSComm1.InBufferCount = 0
frmMain.MSComm1.Output = BCC
------------------------------------------------
VB2.0ではAscB,LenB,MidBのところをVB6.0ではAscB,LenB,MidBをAsc,Len,Midへ変更しています。通常はこれで問題ありませんでしたが、BCCの計算の結果aa = 226となった場合にBCCに文字化けした"r"のような文字がはいっていました。プログラムの中でBCC変数をテキストへ吐き出し、バイナリエディタで確認しましたが"E2"となるところに"00"と空白となっており、これが原因でHTとPC間での通信が完了しません。
(テキスト送信時にStringのため文字化けが原因?)
前回の質問でSTRING型を使用せずにバイナリ型配列で処理する事や、いままで暗黙のうちにUnicode⇔SJIS変換を行ってくれていた部分をStrconvを使用し自前で処理しなければいけないというご指摘を受けたのですが、上のプログラムではどのように修正が必要なのでしょうか?どなたかご教授の程宜しくお願い致します。
No.1
- 回答日時:
BCCをStringで宣言しているのはダメです。
BCCの計算結果は0~255の範囲の全ての値になる可能性がありますが、
String型変数には、文字コードとして有効な文字しか入りません。
無効な文字コードをChr$()で与えてもChar$(0)に置き換えられてしまいます。
関連情報として、UBound、Redimあたりを調べると良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- その他(メールソフト・メールサービス) thunderbird BCCが来なくなった 1 2023/04/07 13:30
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Gmail Aさんが、BさんとCさんをbccに入れて送信したメールを、 Bさんが、Dさんに転送した場合。 Dさん 4 2022/11/28 22:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Gmail メーラーのThunderbirdの送信機能に関する質問です 3 2022/07/10 10:58
- 化学 金属の同素変態の生じる温度と結晶構造の変化を調べるているのですがなかなか見つかりません。 鉄(Fe) 1 2022/04/22 19:10
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
排他的論理和 BCC(水平パリテ...
-
アドオン利率を実質年率に変換
-
lexとyaccでのプログラミング
-
C言語で電卓を作成する。修正お...
-
CRCについて教えてください
-
CCurの引値を文字列にする時と...
-
Visual C++でdebugとreleaseで...
-
Java 電卓の連続計算
-
サインカーブを計算したい
-
C言語についてです。 再帰を使...
-
0x0000ffffLの"L"って・・・
-
再帰呼び出しの計算量
-
入射角反射角
-
matlabで計算終了
-
prolog言語で積分計算
-
順列のプログラムについて(VB)
-
VBとVBAの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
VBAで関数をつくる
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
EXCELなどで「返す」という表現
-
数値計算の高速化 (cos, sin, exp)
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
matlab計算での進捗状況を知りたい
-
Excel VBAにてFFT
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
-
アドオン利率を実質年率に変換
-
エクセルで特定のセルのみを任...
-
電卓でmodの計算
-
引き放し法による除算アルゴリ...
-
y=(x^2 +3x+1)^4を微分の定義を...
おすすめ情報