★初心者にVisual C++を教えるスレ★ Part38
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/11/03(木) 00:54:48.61お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
【過去スレ】
Part37 http://hibari.2ch.net/test/read.cgi/tech/1299982561/
Part36 ttp://hibari.2ch.net/test/read.cgi/tech/1273939582/
Part35 ttp://pc12.2ch.net/test/read.cgi/tech/1256645713/
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
0928デフォルトの名無しさん
2013/05/17(金) 23:02:29.59ホイ
http://stat.ameba.jp/user_images/20111009/17/wwww0628/e9/e6/j/o0350034511535747985.jpg
0929デフォルトの名無しさん
2013/05/18(土) 11:06:55.100930デフォルトの名無しさん
2013/05/20(月) 20:49:35.79_popen()で開いた子プロセスに対して,コマンドを投げて,その結果をもらって,また次のコマンドを投げて・・・
ということをやりたい。
条件として,子プロセスに対して,改変を加えるのはなしの方向で。
Linux上ではできるみたいだが,Windows上ではできるのだろうか。
どなたか教えてください。
[環境]
Visual C++ 2010
Windows 7/8
0931デフォルトの名無しさん
2013/05/20(月) 21:12:17.37可能でしょうか?
その場合、参考となるAPIを1つでいいので教えてください。
(それをもとに検索して他にも色々調べます)
0932デフォルトの名無しさん
2013/05/20(月) 21:17:12.100934片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/20(月) 23:48:16.04CreateProcessとパイプ
0936デフォルトの名無しさん
2013/05/24(金) 09:53:35.870937デフォルトの名無しさん
2013/05/24(金) 12:30:27.480938936
2013/05/24(金) 15:02:37.67久々にVCいじってみたら綺麗に忘れてる。
なんか勘違いしてるのかも。
0939デフォルトの名無しさん
2013/05/24(金) 17:08:04.500941デフォルトの名無しさん
2013/05/26(日) 04:59:13.131,
TODOコメントを入れる時に日付とか名前を自動で入れられるようにできないですか?
要するにTODOコメントのテンプレを作りたいってことです
2,
switchとかclass(アクセス指定子)とかのインデントを個別に設定出来ませんか?
0942デフォルトの名無しさん
2013/05/28(火) 23:26:59.24うまくいきません。
苗字とクラスをコンボボックスから選んで、該当する組み合わせがあれば
コピー専用のテキストボックスに所属している部活動名が表示されるプログラムです。
if文を使って処理をしようと思っているのですが、項目の編集で登録した
苗字、クラス名の要素をどうやって取得していいのかわかりません。
どうすれば、AddRange(gcnew cli:: array< System::Object^ >(数値) {}); から要素を取得し、
仕様通りに動くプログラムを作ることができるのでしょうか?
作りかけのプロジェクトを置いておきます。
http://kie.nu/11at
0943デフォルトの名無しさん
2013/05/29(水) 01:01:47.38そもそもどうやって、名字とクラスと部活を結びつけようとしてんの? どこにもなさそうなんだが。
簡単な方法としては、上の3つを要素として持つクラスを作成して、その配列に生徒?を登録。
条件を入力されたら、上の配列の名字とクラス名とで照らし合わせて一致してれば
その同じ要素にある部活名を表示でいいんじゃね。
検索の方法は、for ループで配列をまわして if でチェックでもいいし、LINQ が使えるならそれ使ってもいいし。
あと、ここで言うのもなんだが。その内容なら C# でやった方が。。。
0944デフォルトの名無しさん
2013/05/29(水) 21:16:22.37_tmainのコンソールアプリのプロジェクトでMFCのクラスを使いたいのですが、
この場合はどのようにするのでしょうか?MFCのアプリだと派生クラスで定義しているのは
参考にしているプロジェクトで分かるのですが、コンソールアプリだとどうしたらよいのでしょうか
0945デフォルトの名無しさん
2013/05/29(水) 21:18:34.590946デフォルトの名無しさん
2013/05/29(水) 21:36:39.30すみません説明不足でした。
参考にしているMFCアプリのソースがありまして、それは派生クラスを使って、外部のクラスを呼び出しているところまでは分かりました。
コンソールアプリでMFCのチェックを入れれば、とりあえず、同じ外部のクラスを読み込ませることはできたのですが、
読み込ませただけで、どのようにしたら使えるようになるのかがわかりません。
_tmainの場合とMFCの派生させて使う場合の使いわけが、混乱しています。
0947デフォルトの名無しさん
2013/05/29(水) 21:45:41.87それはエスパーじゃないと答えれないな
0948デフォルトの名無しさん
2013/05/30(木) 08:33:58.880949デフォルトの名無しさん
2013/06/08(土) 21:21:20.98にて下記のようにエラーが出力されます。
----
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
0xC0000005: 場所 0xcdcdcdc9 を読み込み中にアクセス違反が発生しました。
プログラム '[15796] test.exe: ネイティブ' はコード -1073741819 (0xc0000005) で終了しました。
----
▽▽▽ ソース
#include <stdio.h>
#include <atlstr.h>
int main(int argc, char* argv[])
{
CString *pstr;
pstr = (CString *)malloc(sizeof(CString) * 2);
pstr[0].Format("test0");
pstr[1].Format("test1");
printf("%s\n", (char *)(LPCTSTR)pstr[0]);
printf("%s\n", (char *)(LPCTSTR)pstr[1]);
free(pstr);
return 0;
}
△△△
CString型配列を動的に確保する方法がありましたら、
ご教示お願いします。
0950デフォルトの名無しさん
2013/06/08(土) 22:33:19.81○ pstr = new CString[2];
× pstr[0].Format("test0");
○ pstr[0].Format(_T("test0"));
×printf("%s\n", (char *)(LPCTSTR)pstr[0]);
○printf("%s\n", (CStringA)pstr[0]);
× free(pstr);
○ delete[] pstr;
0951デフォルトの名無しさん
2013/06/09(日) 02:05:10.00丁寧に教えていただきありがとうございます
0952デフォルトの名無しさん
2013/06/09(日) 02:59:48.9802: #include <atlstr.h>
03: #include <vector>
04:
05: int main(int argc, char* argv[])
06: {
07: std::vector<CStringA> vstr;
08: int bk_cnt, cnt = 0;
09:
10: bk_cnt = cnt;
11: vstr.resize(cnt + 1);
12: if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
13: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
14: vstr[ cnt++ ].Format("あああ");
15: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
16:
17: bk_cnt = cnt;
18: vstr.resize(cnt + 1);
19: if( bk_cnt == vstr.size() ) return 0; // メモリ再割り当て失敗の場合は終了する
20: printf("bk_cnt=[%d] size=[%d]\n", bk_cnt, vstr.size());
21: vstr[ cnt++ ].Format("いいい");
22: printf("vstr[%d]=[%s]\n", bk_cnt, vstr[bk_cnt]);
23:
24: return 0;
25: }
26: ----【実行結果】----
27: bk_cnt=[0] size=[1]
28: vstr[0]=[あああ]
29: bk_cnt=[1] size=[2]
30: vstr[1]=[いいい]
0953デフォルトの名無しさん
2013/06/09(日) 03:02:33.22>>952について教えて欲しいです。
VC++ 2008 の win32 console(マルチバイト文字セットを使用する)環境で実行しました。
std::vector を使い CStringA型の配列のメモリを動的に再割り当てするプログラムです。
vector::resize の成功か失敗かを知りたいのですが、この関数はvoid型なので、
戻り値がありません。
10行目、12行目にて、メモリの再割り当てが成功か失敗か判断しているつもりですが、
「成功(要素数が増加している)、失敗(要素数に変化なし)」という判断方法で、
合っていますでしょうか。
ご存じの方がいらっしゃれば、よろしくお願いします。
0954デフォルトの名無しさん
2013/06/09(日) 03:07:29.310955デフォルトの名無しさん
2013/06/09(日) 03:18:48.52すみません。あまり慣れていない手段(例外)は使いたくなかったので避けていました
>>952では失敗を検知するのは例外(try , throw , catch)を使う方法しかないのでしょうか
0956デフォルトの名無しさん
2013/06/09(日) 03:24:07.710957デフォルトの名無しさん
2013/06/09(日) 07:43:53.94ありがとうございます
了解しました
0958デフォルトの名無しさん
2013/08/06(火) NY:AN:NY.AN0959片山博文MZパンク ◆0lBZNi.Q7evd
2013/08/06(火) NY:AN:NY.ANインストールハ、オワッタカ?
0960デフォルトの名無しさん
2013/08/06(火) NY:AN:NY.AN0961デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN0962デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN0963デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN0964デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN0965デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.ANCもC++も同じだから気にするな
0966デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.ANhttp://tinqwill.blog59.fc2.com/blog-entry-68.html
0967デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN0968デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.ANって意味がよく分からん
0969デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN0970デフォルトの名無しさん
2013/08/09(金) NY:AN:NY.AN私もいますよ。
0971デフォルトの名無しさん
2013/08/09(金) NY:AN:NY.AN0972デフォルトの名無しさん
2013/08/09(金) NY:AN:NY.AN書かない、動かないのほうがやばい
0973デフォルトの名無しさん
2013/08/10(土) NY:AN:NY.ANテストパスすればいんでしょうけど、
やぱC++のfstreamとかiosとかでやりたいってのはあるよねぇ。
0974デフォルトの名無しさん
2013/08/11(日) NY:AN:NY.AN特におまえは>>959シコシココード書いてろ
0975デフォルトの名無しさん
2013/08/11(日) NY:AN:NY.AN0976デフォルトの名無しさん
2013/08/12(月) NY:AN:NY.AN0977デフォルトの名無しさん
2013/08/12(月) NY:AN:NY.AN0978デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANmainだけ?
ほかのクラスの.cppに適当に放り込んでもいいのですか?
0979デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.AN後で困らないように分けといたら?
0980デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANコードは書いてあっても
ファイル分けまで説明してない本が多くて
基礎を読んだ後いざ作ろうとするとよくわからなくなってしまいました
>ほかのクラスの.cppに適当に放り込んでもいいのですか?
これはクラスのメンバ関数とは別にそのまま呼び出せるのでしょうか
0981デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.AN0982デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANわかりました
0983デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANプロトタイプ宣言をヘッダにまとめて、使いたいとこでinclude
そのファイルでしか使わないなら、上の方にプロトタイプ宣言書けばいい。
関数定義を上に持っていく、というものぐさはあとで困るかもw
0984デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.AN0985デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANそのプロトタイプ宣言は
ヘッダにも書けるし
mainにも書けるのですね
せっかく別ファイルに書いたのにmainに書いていては意味無いですが
0986デフォルトの名無しさん
2013/08/28(水) NY:AN:NY.ANレス数が950を超えています。1000を超えると書き込みができなくなります。