くだすれVisual C++(超初心者用)

このエントリーをはてなブックマークに追加
952910:2006/02/26(日) 09:44:39
すんません括弧忘れてました、
それから
× 入力だれたら
○ 入力されたらです
for(int i=0; i<Text->Length; i++){
  //MessageBox::Show(e->ToString());
    if(i<3)
      MessageBox::Show("文字数が少ない");
    else if(i>5)
      MessageBox::Show("文字数が多い");
  }
953デフォルトの名無しさん:2006/02/26(日) 09:45:26
>>949
  for(int i=0; i<Text->Length; i++)
    if(i<16)
      MessageBox::Show("文字数が少ない");
    else if(i>16)
      MessageBox::Show("文字数が多い");

じゃなくて、

    if(Text->Length < 16)
      MessageBox::Show("文字数が少ない");
    else if(i>16)
      MessageBox::Show("文字数が多い");

じゃないの?

あと、>>923 ベースでもわるくはないと思うけど、
>>918 ベースの方が安全かもしれない。というのは
例外で抜けたときに FreeCoTaskMem が呼ばれないかもしれないから。
954949:2006/02/26(日) 09:47:46
>>950
現在過去のプログラムを改変する作業なのですが、過去のプログラムはメインで
double hoge[5]; こんな感じでして、*hogeじゃないと動作しませんでした。
説明不足ですみませんでした
955910:2006/02/26(日) 09:59:11
>>953さんありがとうございます
Text->Lengthに着目したのは間違いでは無かったようなので
少しは嬉しかったです、しかし
>>953さんのコードに入れ替えてコンパイルしてみたのですが
16桁以上入力して、実行しても
MessageBox::Show("文字数が少ない");
が実行されてしまいます。
956デフォルトの名無しさん:2006/02/26(日) 10:16:09
>>955 まちがえてた。
if(textBox1->Text->Length > 16)
だった。
957デフォルトの名無しさん:2006/02/26(日) 10:22:19
それにしても、C++/CLI だと -> が一杯出てくるね。
958944:2006/02/26(日) 10:23:15
>>947
>>951

ありがとうございます。
早速試してみます。
959デフォルトの名無しさん:2006/02/26(日) 10:25:54
>>954
横レス。
プロトタイプ宣言のところはちゃんと書き換えた?
おそらくヘッダーのほうに書いてるんだろうけど。

960949:2006/02/26(日) 10:32:48
>>959
ありがとうございます
おもいきり忘れてました
コンパイル通りました
961910:2006/02/26(日) 10:36:34
>>956さん
ありがとうございます
巧くいきました、
textBox1->Text->Lengthに気づかなかった自分が情けないです
(;´д`)トホホ…
>>918 ベースの方が安全かもしれない。というのは
>>例外で抜けたときに FreeCoTaskMem が呼ばれないかもしれないから。

自分も>>918のコードの方がとっつき易く思えたのですが、
実行するとhoge.txtに入力した文字ではなく桁数が異なる、
ランダムな数字が入ってしまって、原因が分からないので
(´・ω・`)ガッカリ…なとこなんです。
962デフォルトの名無しさん:2006/02/26(日) 10:40:49
>>961 え〜
wchar_t がらみだとは思うけど、
ちゃんと wofstream とか、ワイド文字版にしてる?
963949:2006/02/26(日) 10:41:22
動作確認しました
スレ汚しすみませんでした
また 付き合ってくれた皆様ありがとうございました
964910:2006/02/26(日) 11:07:24
>>962さん
どうもです
ワイド文字版で具具ってみましたが
意味は分かったものの具体的にどうしたらよいのかわかんないので
コンパイルオプションを
プロジェクトのプロパティーの全般タグで
文字セットを「Uniucode 文字セットを使う」から
「マルチバイト文字セットを仕様する」に変更してコンパイルし直しましたが
変わりません・・・
wofstreamは多分ここの部分だと思いますが同じようにしています

std::wofstream wofs("hoge.txt");
965デフォルトの名無しさん:2006/02/26(日) 12:20:57
普段はMFC使ってるので、Windows API 直での
GUIの勉強もしてみようと思って
http://www.kumei.ne.jp/c_lang/
で勉強してるんだけど、

「当ホーム・ページの一部または全部を無断で
複写、複製、転載あるいはコンピュータ等の
ファイルに保存することを禁じます」

って・・・・ファイルに保存できないなんて、
サンプルプログラムどうやって試せばいいんだろう。
って、悩んでます。
966デフォルトの名無しさん:2006/02/26(日) 12:46:00
>>965
メールでも出して許可もらえばいいんじゃね?
967デフォルトの名無しさん:2006/02/26(日) 12:46:26
サンプルを自分のPCで試す程度なら私的利用の範囲内
968デフォルトの名無しさん:2006/02/26(日) 12:55:06
>>966
そうします。
閲覧時にキャッシュしてるのはどうしたらいいんだろう・・・
969913:2006/02/26(日) 13:33:25
>>917
あのコードはコンパイルして確かめずに書いた、すまん。たしかになんか数値が書き込まれているな。
こうしたらちゃんと書き出せた。
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
std::wofstream ofs("h:\\hoge.txt");
ofs << static_cast<const wchar_t*>(text) << std::flush;
970デフォルトの名無しさん:2006/02/26(日) 14:19:04
VC++2005の std::fstream で日本語名のファイルが開けないんだけど、俺だけ?
971910:2006/02/26(日) 14:31:05
>>969さん
どうもです
ここで
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);

Error C3861: 'PtrToStringChars': 識別子が見つかりませんでした
が出るんで、wchar_t PtrToStringCharsとかしたら、wchar_tは宣言するなとか
困憊羅が言ってきます
972デフォルトの名無しさん:2006/02/26(日) 16:14:34
PtrToStringChars って、
Visual Studio 2005 では見つからないんだけど、
もしかして .NET Framework 1.1 限定なのかな。
ってそんな下位互換性無いことはさすがにないかな。
973デフォルトの名無しさん:2006/02/26(日) 16:52:09
974デフォルトの名無しさん:2006/02/26(日) 17:10:52
>>971-972
<vcclr.h>
975910:2006/02/26(日) 18:58:45
>>972さん
>>974さん
うっかりしていました<vcclr.h>を途中から外していました、入れ直したら出来ましたが
hoge.txtの場所が変わっていたので
ここを std::wofstream ofs("h:\\hoge.txt");
std::wofstream ofs("hoge.txt");
if(!ofs.is_open() || ofs.fail())
最初のように元に戻したらばっちりでした
後、一箇所16進数の入力チェックなのですが
if(textBox1->Text->ToCharArray != ('1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'A' | 'B' |'C' |'D' |'E' |'F'))
MessageBox::Show("HEXコードを入力してね");
普通に書いたつもりなんですけど、ABC入れてもabc入れても弾かれて
「HEXコードを入力してね」が出てしまうのですが、正規表現の書き方間違ってますか?
976デフォルトの名無しさん:2006/02/26(日) 19:12:41
その右辺はどーみても単なるCの式だろ。
977910:2006/02/26(日) 19:24:04
>>976さん
そうなんですか、やっぱりCとは違うんですね
978デフォルトの名無しさん:2006/02/26(日) 19:50:43
>>975
チェックするということはどうせ16進法として数値へ変換するんだろ。
俺ならstd::strtoulで変換すると同時に変換できたかどうかチェックする。
979デフォルトの名無しさん:2006/02/26(日) 21:07:02
VC6でEditBoxからint値を取得する関数は何でしょうか?
980デフォルトの名無しさん:2006/02/26(日) 21:24:19
>>979
関数つうかapiだけどSendMessage
981デフォルトの名無しさん:2006/02/26(日) 21:37:42
APIの関数でGetDlgItemIntはどうだ。
982910:2006/02/26(日) 23:53:34
>>978さん
std::strtoul(PtrToSrtringChars(textBox1->Text), *PtrToSrtringChars(textBox1->Text), 16);
取りあえず、エラーチェックは後に置いといて、これで変換出来ると思ったのですが
error C2664: 'strtoul' : 1 番目の引数を 'cli::interior_ptr<Type>' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)
となり、
strtoul→wcstoulにうしても
error C2664: 'wcstoul' : 1 番目の引数を 'cli::interior_ptr<Type>' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
になっちゃうんだよね( ゚д゚)ポカーン
983デフォルトの名無しさん:2006/02/27(月) 00:31:41
>>982
pin_ptrで固定させないと。
984910:2006/02/27(月) 01:16:46
>>983さん
どうもです
前段で、教えて貰ったように
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
を入れて入るんですが・・・
985デフォルトの名無しさん:2006/02/27(月) 10:21:28
しかし超初心者用の話題とかなり上級者
(C++/CLI使うやつは上級者だろ?という先入観あり)
の話題がごっちゃになってるな(笑
986デフォルトの名無しさん:2006/02/27(月) 13:05:21
どういうわけか、実際そうなんだよね。DLLインジェクションとか超初心者しないだろ(笑)
って話から、コンパイラ通りませんまで。気楽に聞きやすいせいかな?
987デフォルトの名無しさん:2006/02/27(月) 13:52:05
過疎スレで質問しても人がいないから
みんな初心者スレに来るのでは?

初心者スレ2つもあってもしょうがないと思うけど
988デフォルトの名無しさん:2006/02/27(月) 17:37:48
>>984
こうだろ。
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
wchar_t* pEnd;
unsigned long ul = std::wcstoul(text, &pEnd, 16);
989デフォルトの名無しさん:2006/02/27(月) 18:03:11
拡張子がcのファイルをC++としてコンパイルする方法はないでしょうか?
事情があって拡張子をcppなどに変更することができません。
990デフォルトの名無しさん:2006/02/27(月) 18:09:27
cppのファイルを作成して.cのファイルをインクルードする。とか、嫌がらせのようなことを言ってみる。
991デフォルトの名無しさん:2006/02/27(月) 18:11:48
>>989
・IDEから
 プロジェクトのプロパティ → C++ → 詳細 → コンパイル言語の選択

・プロンプトから
 /TP すべてのファイルを .cpp としてコンパイルする
 /Tp<source file> ファイルを .cpp としてコンパイルする
992デフォルトの名無しさん:2006/02/27(月) 18:16:04
>>990-991
ありがとうございます
993デフォルトの名無しさん:2006/02/27(月) 18:36:45
次はPart3なんで立てる人よろしく
994デフォルトの名無しさん:2006/02/27(月) 23:31:13
VisualC++6.0 で、エディタのフォントを変えるにはどうしたら良いのでしょうか。

もう3日悩んでます。
995デフォルトの名無しさん:2006/02/27(月) 23:35:06
秘密
996デフォルトの名無しさん:2006/02/27(月) 23:41:57
>>994
メニュー「ツール」→「オプション」で最後のタブに「書式」ってあるんじゃね。
997デフォルトの名無しさん:2006/02/27(月) 23:43:38
>>994
そのうちの「ソースウインドウ」のフォントを変える
998993:2006/02/27(月) 23:44:42
>>996
ガーン…スクロールできるなんて知りませんでした。。。
なぜか最近になって6.0を使うハメになり、ここで死んでました。。。
ありがとうございました!!!
999デフォルトの名無しさん:2006/02/27(月) 23:50:36
>>998
フォントはHGゴシックE サイズ12だ忘れるなよ
1000デフォルトの名無しさん:2006/02/27(月) 23:54:11
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。