• 締切済み

VB6で"r"みたいな文字が返ってくる。

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

みんなの回答

  • chie65535
  • ベストアンサー率43% (8508/19343)
回答No.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文字削らないと、うまくいかない」ですからね。 見えないデータを確かめるには、データをそのまま表示するのではなく、上記のようなプログラムを用いて「文字コードを数値化して、数字で表示してみる」と言う「可視化」が必要になります。 「データの中身が良く判らなかったら、判る形式で表示してみろ」って事です。

回答No.4

恐らく測定器から DATA + ETX + Cr + LF 等の形式で送信されている物と思われます。 このあたりは測定器のマニュアルなどを見れば判りますね。 ETXの文字コード(03h)がPCでは罫線の左上隅 (┌)で表示されることがあります。 必ず入っているのなら末尾の1文字を削除すれば良いだけですね。

回答No.3

> rみたいな文字は改行コードで正しいのでしょうか? > それもあまり自信がありません。 知りません。 対象文字をAsc()で見てみれば文字コードがいくつか 分かるでしょう。 その文字コードが何なのか調べれば済むことです。 http://e-words.jp/p/r-ascii.html 因みに改行コードはVB6はvbCrLfでも指定可能です。

回答No.2

Replace(hoge, Chr(13) & Chr(10), "") 改行コードがラインフィードだけなら Replace(hoge, Chr(10), "")

miya2004
質問者

お礼

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

  • chie65535
  • ベストアンサー率43% (8508/19343)
回答No.1

dim data as string ... data = データ文字列 ... '文字列の最後の文字の文字コードが???だったら、それを取り除く if asc(right(data,1)) = ??? then data = left(data,len(data) - 1) end if

miya2004
質問者

お礼

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

関連するQ&A

  • VB.NET 文字コード

    ASKII文字コードを調べるにはどうしたらいいですか? VB.NETのエンコードはweb.configでshift-jisにしてあります。 任意の文字列から一字づつよみとって改行をみつけたら<br>タグに置き換えたいです。 どうしたらいいですか? どうかお願いいたします。

  • VB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可

    VB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可能でしょうか? Label5.***文字数指定*** のようなコードがあれば助かるのですが、 どなたかご存知でしたら教えてください。 よろしくお願いいたします。 Label5.text="あいうえおかきくけこ" 【表示】 あいうえお かきくけこ

  • VB6のテキスト処理 さまざまな文字コード/改行で対応

    VB6のテキスト処理で、Open InputとLine inputを使った場合に 文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。 改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか? また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

  • 【VB】文字列操作についてお願いします。

    お世話になっております。 VB2005です。 ある文字列の最後の行の改行を取りたいのですが、何かよい方法はありますでしょうか。 あいうえお かきくけこ さしすせそ とあったら、"さしすせそ"のあとの改行をすべて取りたいのです。 よろしくお願いします。≦(._.)≧ ペコ

  • VBA・VB6.0・VB.NETの文字列型

     失礼します。  Excel97/2000のVBAの文字列型変数は、アスキーコード129-159/224-252のデータを保持できないみたいですが、これはVB6.0/VB.NETなどでもそうなのですか?  つまり、VBAでは、 Sub main()  Dim s as String  s = Chr$(130)  Sheet1.Cells(1, 1) = Asc(s) End Sub  とすると、シートのA1に「0」が表示されてしまうということです。  というのも、私はVB6.0/VB.NETを持っていないのですが、ちょっとVB2.0時代のコードを使う必要が生じたので、VBAで実行してみたところ、以上のような仕様の違いに気付いたのです。  これがVBAだけの特性なのか、最近のVBはこういう仕様になってしまったのかが知りたいのです。

  • 改行されていないテキストデータ

    改行コードがないテキストデータがあります(半角23,250文字) VB.NET2003で取込ながら、250文字で改行したいのですが、 どんな方法がありますでしょうか? 宜しくお願い致します。

  • 改行コードを取りたい

    測定器からデータを取得してエクセルに張り付けるマクロを作っているのですが、 取得したデータをそのままセルに張り付けると(例:「test」という文字列を取得した場合) 「test    」 のようにセルにAlt+Enterを押して改行された様な感じになります。 空白はtrimで除去したのですが、改行はどうやって取れば良いのでしょうか?

  • vb6 上書き方法について

    vb6にて、元々のコードの内容を変更して、 プロジェクトの上書き保存をした後、 上書きの内容のexeを作成しようとすると、 「コンパイルエラー :メソッドまたはデータメンバが見つかりません」とでます。 デバッグ開始ボタンで変更したコードが問題ないことは確認済です。 元々のコードの内容を変更せず、 exe作成で同じ名前で上書きをしようとしても上記のコンパイルエラーが表示されます。 なぜでしょうか?コンパイルエラーが出る理由をお教え願います。 GPIBやI/Oを使用しているのですが、測定機器につなげた状態で、 exe作成をしないとダメなのでしょうか??? 素人でよくわかりません。どなたかお教え願います。

  • VB6より長文INSERT文でORA1756単一引用符が閉じられていないが発生する

    初めまして。 VB6、ORACLE8iでダイナセットを使用しテーブルに対してINSERT文を 発行していますが、INSERT文が長文になると”単一引用符が閉じられていません” とエラーが返ってきます。このSQL文と同一のものをPLUSにて実行させても 同一のエラーが発生するのですが、メモ帳等で改行して一行を短くすると 正常にINSERTされます。 それならと思い、SQL文作成コード内に改行コードを挿入したのですが VB上からは同じようにエラーが返ってきます。改行コード入りのSQL文を イミディエイトより取り込みPLUSにて実行させると正常に動作します。 どうすればVB上から正常実行できるのでしょうか? 初心者ゆえどうすればよいかさっぱりわからなくなりました。 VB上からは何か制約があるのでしょうか? どなたかご存知の方ご教授願います。 長文失礼しました。

  • StringTokenizerを使用して、連続した区切り文字を見分ける方法

    文字列を改行コードごとに区切り、Vectorに格納していきたいと思っています。 例) あ\r\nい\r\nう\r\nえ\r\nお\r\n という文字列を 「あ・い・う・え・お」と分けてVectorに格納する。 そこで、改行コードが連続してきた場合に「連続して改行コードがきた!!」ということが分かるようにVectorに格納したいと思っています。 例) あ\r\nい\r\nう\r\nえ\r\n\r\nお\r\n という文字列が来たら、「あ・い・う・え・☆・お」のような感じで、 連続して改行コードが来たら、何か特定の文字を詰めるなど。 どなたかいい方法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java