アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6で測定器からデータを読み取っているのですが、
データの後ろに"r"みたいな文字が返ってきます。
この文字を取りたいのですが、どうすれば良いのでしょうか?
Trim()をしてもエラーになります。
調べると改行コードのようですが、よく分かりません。

A 回答 (5件)

以下のプログラムを実行してみましょう。



dim data as string
dim datastr as string
dim i as integer

data = 受信データ

datastr = ""
for i = 1 to len(data)
datastr = datastr & str(asc(mid(data,i,1))) & ","
next i

msgbox datastr

結果は、以下のようになるでしょう。

65,84,65,77,56,78,3,13,10,

これは「ATAM8N<STX><CR><LF>」を受信した場合です。

表示される数字が「32より小さい場合(0~31の場合)」は、そこにある文字は「制御文字」です。

質問者さんのケースでは、制御文字の1つが「rみたいな文字」になって見えているのですが、制御文字は「末尾に1つだけ」とは限りません。

複数の制御文字が何文字も付加されているけど「見えているのはrみたいなの1文字だけで、他の制御文字は見えないだけ」なのかも知れません。

上記の結果例では、データ末尾に「STX」「CR」「LF」の3文字が付加されたデータを受信していますが、これを文字列のまま表示すると、CRとLFは「見えない」ので、「STXしか付いてないように見えてしまう」ので「末尾の1文字だけを削る」では失敗します。「見えないCRとLFも含めて、3文字削らないと、うまくいかない」ですからね。

見えないデータを確かめるには、データをそのまま表示するのではなく、上記のようなプログラムを用いて「文字コードを数値化して、数字で表示してみる」と言う「可視化」が必要になります。

「データの中身が良く判らなかったら、判る形式で表示してみろ」って事です。
    • good
    • 0

恐らく測定器から DATA + ETX + Cr + LF 等の形式で送信されている物と思われます。


このあたりは測定器のマニュアルなどを見れば判りますね。
ETXの文字コード(03h)がPCでは罫線の左上隅 (┌)で表示されることがあります。

必ず入っているのなら末尾の1文字を削除すれば良いだけですね。
    • good
    • 0

> rみたいな文字は改行コードで正しいのでしょうか?


> それもあまり自信がありません。

知りません。
対象文字をAsc()で見てみれば文字コードがいくつか
分かるでしょう。
その文字コードが何なのか調べれば済むことです。
http://e-words.jp/p/r-ascii.html

因みに改行コードはVB6はvbCrLfでも指定可能です。
    • good
    • 0

Replace(hoge, Chr(13) & Chr(10), "")



改行コードがラインフィードだけなら
Replace(hoge, Chr(10), "")
    • good
    • 0
この回答へのお礼

rみたいな文字は改行コードで正しいのでしょうか?
それもあまり自信がありません。

お礼日時:2012/10/01 10:52

dim data as string


...
data = データ文字列
...
'文字列の最後の文字の文字コードが???だったら、それを取り除く
if asc(right(data,1)) = ??? then
data = left(data,len(data) - 1)
end if
    • good
    • 0
この回答へのお礼

ありがとうございます。
rみたいな文字列のコードがわかりません。

お礼日時:2012/10/01 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!