

環境はVisualStdio.Net 2008のC++
Windowsフォームアプリケーションです。
C++の経験はまったくありません。
unsigned char型の配列 box[12]の中に既にアスキーコードでデータが格納されています。(例:box[0] = 48'0')
これをtextbox->textにアスキーコードではなく文字で格納し、実行時に画面で確認できるようにしたいのですが、
(char)でキャストしてもfomat()で%xや%cにしても「0」でなく「48」で出力されてしまいます。
調べたらVBにはchrという関数があるみたいなんですが、これと同じ機能を持つ関数はVC++にはないのでしょうか?
No.3ベストアンサー
- 回答日時:
むむ、1の方法でも実行時エラーならともかく、コンパイルエラーはでないような気が。
ちゃんとキャストをしなかったからですかね。
textbox->Text = System::String( ( signed char *)box);
とか、
textbox->Text = System::String( ( signed char *)box, 0, 12);
で通りそうです。上は実行時に異常になりますが。
基本的にはこの考え方でいいはずなので、あとは適当にデバッグしてください。
ありがとうございます。
コンパイルエラーはchar*でなかったからだと思います。
あと1文字ずつだったのも問題だったかもしれないです。
あとは自力でがんばります。
どうもありがとうございました。
No.2
- 回答日時:
box[12]の中身が\0で止まっているC文字列なら、
textbox->Text=String( box);
box[12]の中身が12文字のASCIIコードなら、
textbox->Text=String( box, 0, 12);
ASCIIコードが実はシフトJISコードなら、
textbox->Text=String( box, 0, 12, System::Text::Encoding::GetEncoding( "shift_jis"));
おっと、文字列じゃなくて文字でした。
例えば、
textbox->Text=String( box, 0, 1);
こんな感じでしょうか。
回答ありがとうございます。
>box[12]の中身が12文字のASCIIコードなら、
>textbox->Text=String( box, 0, 12);
これです。1番目の方法もやってみたのですがコンパイルエラーでできなかったので.CStringでtextboxに格納していました。\0がないとだめなんですね。
2番目の方法でやってみます!
No.1
- 回答日時:
もう少し実際のコードを抜粋でいいから書いた方がよいでしょう。
・box[12] に値を格納している箇所のコード
・textbox->text に値をコピー(?)している箇所のコード
・キャストしているならその箇所のコード
などなど。
unsigned char 型の変数に値 48 が格納されているなら、printf("%c",..) で「0」と印字されるはずです。
回答ありがとうございます。
実際のコードは会社のセキュリティ上データは持ち出し禁止なため今手元にありません。一部だけノートにメモって来るべきでした。またインターネットも制限があるため会社内ではここ閲覧、書き込みできないため自宅で質問しています。
やりたいことはreadボタンクリックでICカードからIDを読み込み、textboxに出力する処理です。
>・box[12] に値を格納している箇所のコード
ICカードからのデータ取得部分が丸々DLL内にあり、取得している箇所を記述できません。
IDread(hd, cmd, result); (ハンドル、コマンド設定、結果)
でresult構造体内のunsigned char 配列に値が格納されます。
それをmemorycopyで配列boxにコピーして利用しています。
>・textbox->text に値をコピー(?)している箇所のコード
textbox->text = textbox->text + box[i].CString();
これをfor文でまわして12文字格納しています。
>・キャストしているならその箇所のコード
textbox->text = (char)boxi[i];
>unsigned char 型の変数に値 48 が格納されているなら、printf("%c",..) で「0」と印字されるはずです。
ネットで調べるとほとんどがprintfかcoutでの出力したサンプルプログラムだったのでそれは知っているんですが、textboxに出力する場合もprintfで可能なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
access2021 VBA メソッドまたは...
-
ACCESSユニオンクエリでORDER B...
-
COBOLの文法
-
特定行の背景色を変えたいのですが
-
Excelシート上で右クリックがで...
-
Nullの使い方が不正です。
-
access2003 クエリSQL文に...
-
JavaScriptの定数名が取り消し...
-
ACCESS VBA ヘッダなしCSVの入...
-
PreviewKeyDownイベントが2回...
-
VBA リストボックス(複数条件...
-
Excel VBAでOpenTextのFieldInf...
-
ランタイムのいらないプログラ...
-
Exel VBA 別ブックから該当デ...
-
エクセルVBA ユーザーフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
C# コードビハインドについて
-
Excelシート上で右クリックがで...
-
木偏に「久」
おすすめ情報