952 :
910: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("文字数が多い");
}
>>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 が呼ばれないかもしれないから。
954 :
949:2006/02/26(日) 09:47:46
>>950 現在過去のプログラムを改変する作業なのですが、過去のプログラムはメインで
double hoge[5]; こんな感じでして、*hogeじゃないと動作しませんでした。
説明不足ですみませんでした
955 :
910:2006/02/26(日) 09:59:11
>>953さんありがとうございます
Text->Lengthに着目したのは間違いでは無かったようなので
少しは嬉しかったです、しかし
>>953さんのコードに入れ替えてコンパイルしてみたのですが
16桁以上入力して、実行しても
MessageBox::Show("文字数が少ない");
が実行されてしまいます。
>>955 まちがえてた。
if(textBox1->Text->Length > 16)
だった。
それにしても、C++/CLI だと -> が一杯出てくるね。
958 :
944:2006/02/26(日) 10:23:15
>>954 横レス。
プロトタイプ宣言のところはちゃんと書き換えた?
おそらくヘッダーのほうに書いてるんだろうけど。
960 :
949:2006/02/26(日) 10:32:48
>>959 ありがとうございます
おもいきり忘れてました
コンパイル通りました
961 :
910:2006/02/26(日) 10:36:34
>>956さん
ありがとうございます
巧くいきました、
textBox1->Text->Lengthに気づかなかった自分が情けないです
(;´д`)トホホ…
>>918 ベースの方が安全かもしれない。というのは
>>例外で抜けたときに FreeCoTaskMem が呼ばれないかもしれないから。
自分も
>>918のコードの方がとっつき易く思えたのですが、
実行するとhoge.txtに入力した文字ではなく桁数が異なる、
ランダムな数字が入ってしまって、原因が分からないので
(´・ω・`)ガッカリ…なとこなんです。
>>961 え〜
wchar_t がらみだとは思うけど、
ちゃんと wofstream とか、ワイド文字版にしてる?
963 :
949:2006/02/26(日) 10:41:22
動作確認しました
スレ汚しすみませんでした
また 付き合ってくれた皆様ありがとうございました
964 :
910:2006/02/26(日) 11:07:24
>>962さん
どうもです
ワイド文字版で具具ってみましたが
意味は分かったものの具体的にどうしたらよいのかわかんないので
コンパイルオプションを
プロジェクトのプロパティーの全般タグで
文字セットを「Uniucode 文字セットを使う」から
「マルチバイト文字セットを仕様する」に変更してコンパイルし直しましたが
変わりません・・・
wofstreamは多分ここの部分だと思いますが同じようにしています
↓
std::wofstream wofs("hoge.txt");
普段はMFC使ってるので、Windows API 直での
GUIの勉強もしてみようと思って
http://www.kumei.ne.jp/c_lang/ で勉強してるんだけど、
「当ホーム・ページの一部または全部を無断で
複写、複製、転載あるいはコンピュータ等の
ファイルに保存することを禁じます」
って・・・・ファイルに保存できないなんて、
サンプルプログラムどうやって試せばいいんだろう。
って、悩んでます。
>>965 メールでも出して許可もらえばいいんじゃね?
サンプルを自分のPCで試す程度なら私的利用の範囲内
>>966 そうします。
閲覧時にキャッシュしてるのはどうしたらいいんだろう・・・
969 :
913: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 で日本語名のファイルが開けないんだけど、俺だけ?
971 :
910:2006/02/26(日) 14:31:05
>>969さん
どうもです
ここで
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
↓
Error C3861: 'PtrToStringChars': 識別子が見つかりませんでした
が出るんで、wchar_t PtrToStringCharsとかしたら、wchar_tは宣言するなとか
困憊羅が言ってきます
PtrToStringChars って、
Visual Studio 2005 では見つからないんだけど、
もしかして .NET Framework 1.1 限定なのかな。
ってそんな下位互換性無いことはさすがにないかな。
975 :
910: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コードを入力してね」が出てしまうのですが、正規表現の書き方間違ってますか?
その右辺はどーみても単なるCの式だろ。
977 :
910:2006/02/26(日) 19:24:04
>>976さん
そうなんですか、やっぱりCとは違うんですね
>>975 チェックするということはどうせ16進法として数値へ変換するんだろ。
俺ならstd::strtoulで変換すると同時に変換できたかどうかチェックする。
979 :
デフォルトの名無しさん:2006/02/26(日) 21:07:02
VC6でEditBoxからint値を取得する関数は何でしょうか?
>>979 関数つうかapiだけどSendMessage
APIの関数でGetDlgItemIntはどうだ。
982 :
910: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 *' に変換できません。(新しい機能 ; ヘルプを参照)
になっちゃうんだよね( ゚д゚)ポカーン
984 :
910:2006/02/27(月) 01:16:46
>>983さん
どうもです
前段で、教えて貰ったように
pin_ptr<const wchar_t> text = PtrToStringChars(textBox1->Text);
を入れて入るんですが・・・
しかし超初心者用の話題とかなり上級者
(C++/CLI使うやつは上級者だろ?という先入観あり)
の話題がごっちゃになってるな(笑
どういうわけか、実際そうなんだよね。DLLインジェクションとか超初心者しないだろ(笑)
って話から、コンパイラ通りませんまで。気楽に聞きやすいせいかな?
過疎スレで質問しても人がいないから
みんな初心者スレに来るのでは?
初心者スレ2つもあってもしょうがないと思うけど
>>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などに変更することができません。
cppのファイルを作成して.cのファイルをインクルードする。とか、嫌がらせのようなことを言ってみる。
>>989 ・IDEから
プロジェクトのプロパティ → C++ → 詳細 → コンパイル言語の選択
・プロンプトから
/TP すべてのファイルを .cpp としてコンパイルする
/Tp<source file> ファイルを .cpp としてコンパイルする
次はPart3なんで立てる人よろしく
994 :
デフォルトの名無しさん:2006/02/27(月) 23:31:13
VisualC++6.0 で、エディタのフォントを変えるにはどうしたら良いのでしょうか。
もう3日悩んでます。
秘密
>>994 メニュー「ツール」→「オプション」で最後のタブに「書式」ってあるんじゃね。
>>994 そのうちの「ソースウインドウ」のフォントを変える
998 :
993:2006/02/27(月) 23:44:42
>>996 ガーン…スクロールできるなんて知りませんでした。。。
なぜか最近になって6.0を使うハメになり、ここで死んでました。。。
ありがとうございました!!!
>>998 フォントはHGゴシックE サイズ12だ忘れるなよ
1000
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。