VC++6.0にて勉強中の初心者です。
現在、テキストエディタ1(例:"H")とテキストエディタ2("0001")に入力した文字列を16進変換し、テーブル(例:cmd)に格納し、テキストエディタ3には、1,2で入力した文字列を表示したいのですが、どのようにすればよいでしょうか?
下記のように考えてみましたが、ご指導お願い致します。
void CMogiver1Dlg::OnOK()
{
int cmd;
UpdateData(TRUE);
if(( m_text1 == _T("H") ) && (m_text2 == _T("0001"))){
cmd = atoi(m_text1);
cmd = 0x38; //テキストエディタ1.2の条件が合えば、8を表示する。
m_text3 = cmd;
}
UpdateData(FALSE);
No.4ベストアンサー
- 回答日時:
>ちなみにcmd = 0A, と入力した場合にm_text3を、 10と表示させる時はどうすれば良いでしょうか?
ですからぁ、入れるところはcmdではなくm_text2では?
cmd = 0A;
これじゃコンパイル通りません。
で、基数変換にはstrtolを使います。
http://www.microsoft.com/JAPAN/developer/library …
char * stopstring;
m_text3.Format("%ld", strtol(m_text2, &stopstring, 16));
こんな感じですかね。
何度もすみませんでした。
確かにコンパイルは通りませんね。
char * stopstring;
m_text3.Format("%ld", strtol(m_text2, &stopstring, 16));
ご教示頂きました、ソースを動かしました。strtol関数は考えたのですが、型宣言で*は全く思いつきませんでした。
ありがとうございます。
No.3
- 回答日時:
>テキストボックス1には"H"・"I"・"J"その他の文字列を入力し、
>テキストボックス2の"0001"・"0015"その他の文字列を入力後、
>ボタン押下後、条件が合致した時にテキストボックス3に
>16進変換表示をするので、必要です。
って、ちゃんと#1の補足に先に書いておいてくださいね。
ということであれば、
cmd = atoi(m_text2);
//m_text3 = cmd;
m_text3.Format("%x", cmd);
のようにFormatメソッドで数値を文字列に変換可能です。
http://www.microsoft.com/japan/msdn/library/defa …
Formatメソッドの書式文字列は、printfの書式文字列と同じです。
http://www.microsoft.com/japan/msdn/library/defa …
http://www.microsoft.com/japan/msdn/library/defa …
上の例では、cmd = 1, 書式が%xなので、
m_text3は
1
となります。
もし、cmd = 10, 書式が%02Xでしたら、
m_text3は、
0A
となります。
おまけ
>
の記号ですが、引用の意味でつけている記号なので、
YZ80さんつけ方が逆ですよ。
この回答への補足
ありがとうございます。実行しましたところ、間違いなく動作しました。
ちなみにcmd = 0A, と入力した場合にm_text3を、 10と表示させる時はどうすれば良いでしょうか?
記号のつけ方今後は気をつけます。
No.2
- 回答日時:
>まずはテキストボックス2の値をcmdに格納された時に、文字列"0001"が16進変換できるようにしたいと思います。
ですから・・・
説明をしっかりとしてくださいね。
・テキストボックス2の値をcmdに入れるのは誰ですか?
OKボタンを押したときに処理の中で自分で入れるんですよね。
・"0001"は16進数に変換できますよ。「できるようにしたい」ではなく、
「変換する」ですよね?
「OKボタンが押されたときに、テキストボックス2の値を数値にしてcmdに格納し、
文字列"0001"を16進に変換したい」ってこと?
???
これでも情報が欠如してる・・・・
もう一度、正しく説明してください。
あと、説明からも、ソースからも以下の点が読み取れません。
・16進数に変換したいものは結局どの値?
・変換した結果はどこ出力したい?
・"0001"がソース中に記述されているがなぜ?
・"H"がソース中にいますけど、まだ使いますか?
こちも補足をお願いします
この回答への補足
何度も説明が出来なくてすみません。
・テキストボックス2の値をcmdに入れるのは誰ですか?
OKボタンを押したときに処理の中で自分で入れるんですよね。
>そうです。ボタンが押された時に処理の中で格納します。
・"0001"は16進数に変換できますよ。「できるようにしたい」ではなく、
「変換する」ですよね?
>はい。「変換する」です。
「OKボタンが押されたときに、テキストボックス2の値を数値にしてcmdに格納し、
文字列"0001"を16進に変換したい」ってこと?
???
これでも情報が欠如してる・・・・
もう一度、正しく説明してください。
あと、説明からも、ソースからも以下の点が読み取れません。
・16進数に変換したいものは結局どの値?
>テキストボックス2に文字列で入力された値です。
・変換した結果はどこ出力したい?
>テキストボックス3です。
・"0001"がソース中に記述されているがなぜ?
・"H"がソース中にいますけど、まだ使いますか?
>テキストボックス1には"H"・"I"・"J"その他の文字列を入力し、テキストボックス2の"0001"・"0015"その他の文字列を入力後、ボタン押下後、条件が合致した時にテキストボックス3に16進変換表示をするので、必要です。
No.1
- 回答日時:
>VC++6.0にて勉強中の初心者です。
がんばってください。
ぜひ、正しい用語を覚えてください。
×テキストエディタ
○エディットコントロール or テキストボックス
テキストエディタは、メモ帳のようなアプリケーションを指します。
>現在、テキストエディタ1(例:"H")とテキストエディタ2("0001")に入力した文字列を16進変換し、
エディット1にH、エディット2に0001と入力されたときに文字列を16進変換し
ということですか?
少なくとも"H"は16進数に変換できません。
>cmd = atoi(m_text1);
>cmd = 0x38; //テキストエディタ1.2の条件が合えば、8を表示する。
m_text1の内容をせっかくcmdに入れているのに0x38で上書きしている意図は何でしょうか?
>テキストエディタ3には、1,2で入力した文字列を表示したいのですが、
>cmd = 0x38; //テキストエディタ1.2の条件が合えば、8を表示する。
>m_text3 = cmd;
8を表示させようとしているように見えるのですが、何を表示させたいのでしょうか?
ということで、質問内容をもう一度見直し、回答者の人たちが意図を読み取れるような文章にしていただかないと、これでは誰も答えられないかと。
この回答への補足
早速のアドバイスありがとうございます。
すみませんでした。確かに"H"は16進変換できません。
16進変換したいのはテキストボックス2入力される、文字列です。
それから、0x38は"H"の場合、8をテキストボックス3にさせたかったのですが、先にテキストボックス1で16進変換は出来ませんので、この処理も無効とさせて頂きます。
まずはテキストボックス2の値をcmdに格納された時に、文字列"0001"が16進変換できるようにしたいと思います。
void CMogiver1Dlg::OnOK()
{
int cmd;
UpdateData(TRUE);
if(( m_text1 == _T("H") ) && (m_text2 == _T("0001"))){
cmd = atoi(m_text2);
m_text3 = cmd;
}
UpdateData(FALSE);
説明が下手ですみません。よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でテキストボックスに入力し...
-
RGBとHSLを相互変換する際の端...
-
VC++ std::stringからLPCWSTRに...
-
Fortranの変数
-
VBAのstrConv関数のUNICODE変換...
-
XMLでデータとして画像を指定す...
-
VBA 変数名に変数を使用したい。
-
VB2005でACCESSの処理
-
Access2007でアプリケーション...
-
VBSでADOを使ってaccessのテー...
-
VBA(メモリ展開)
-
アクセス ステータスバーの文...
-
グラフの「項目軸ラベルに使用...
-
ACCESSで日別集計をする場合
-
構造体配列の安定なソート
-
アクセスでウェブ上のデータを...
-
コンボボックスのインデックス...
-
VB.NETでのAccessテーブルリンク
-
Access 2010で実行時エラー3061
-
配列をランダムに並び替えても...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6.0の「vbFromUnicode」はVB....
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
16進をASCIIコードに変換する...
-
WORD型をCString型に変換する方法
-
C#で文字列を数値に変換する方法
-
【C++/CLI】int型からString型...
-
バイト型のデータをLong型に変換
-
VB6.0 String型→Long型変換方法...
-
C++ 文字列変数と16進数の比較
-
C#でListとDictionaryの判別方法
-
2の補数の計算について
-
Boolean型変数の値を反転する方法
-
数字→漢数字変換
-
16進コード文字列を文字列に変換
-
10進数を2進数
-
ASPでVBのFormat関数のような機...
-
エクセルでメールヘッダーを解...
-
VC++ std::stringからLPCWSTRに...
-
対数変換のついて
-
textbox.textやlabel.captionの...
おすすめ情報