1 名前:デフォルトの名無しさん [2007/06/03(日) 22:33:55 ] エスケープシーケンスやWin32APIなどの環境依存な物でもOK。 ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です。 【前スレ】 【初心者歓迎】C/C++室 Ver.37【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1178432985/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
231 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:10:49 ] >>230 ちゃんとコピペしてやってみたのかよ そもそも、これがおかしいんだよ→ c:/java/HelloWordl ここはファイルを指定するんじゃなくてクラス名を指定するの パス名がクラスの階層を表してはいるけどな >system("dir");を実行しただけでエラーが・・・。 ふーん
232 名前:178 mailto:sage [2007/06/08(金) 14:18:29 ] >>231 ちゃんとコピペしてやりました。HelloWorldがクラス名なのも理解しています。
233 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:32:47 ] わかった。もうキミには言うことは無い うちでは動いてるけど、君のトコでは動かないんだね
234 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:44:31 ] >>230 どこか壊してるんでしょう。 dirPassはちゃんと文字列を置ける所を指してる? (argv[0]って自分の名前なんだけど、それで何するんだろ?)
235 名前:178 mailto:sage [2007/06/08(金) 15:16:42 ] >>233 そういう次元でもないような・・・。 >>234 dirPassをprintfで表示させたらちゃんと目的のものを表示してくれました。 とりあえず手法を変えて、argv[0][point]に\0を入れてstrcpyしてみたらsystem("dir")が正常に動作しました。 一体何だったのでしょう・・・。argv[0]は最終的にはargv[1]に置換する予定ですw
236 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:18:42 ] >>233 の皮肉に気づけよ
237 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:19:58 ] なんかさ、やろうとしてることがショートカット作る程度でできそうな事な感じなんだが 複数コマンドだとしてもバッチファイルで済むレベルの内容じゃないのか? 無理矢理Cで作ろうとするほうが疑問なんだが・・・
238 名前:178 mailto:sage [2007/06/08(金) 15:30:47 ] >>236 ヤバイ・・・全然皮肉が伝わってなかったらしいです;; 言われても気付けない俺はバカかもしれない・・・ まぁ、逆に考えれば幸せな人なのかもしれないから良いか(`・ω・´)ふふふ >>237 やろうとしていることは、D&Dで.javaを渡したらコンパイル、.classを渡したらそれを実行するプログラムです。 もしかしたらもっと簡単で楽な方法があるんですかね・・・。バッチファイルとか分からないので後でググッておきます。 JAVAを昨日から勉強しようと思ったのですが、いちいちコマンドプロンプトでディレクトリ移動したり javaコマンド打ったりするのが面倒だと思って・・・。↑押せば前のコマンドは出てきますけど、それさえも面倒で・・・。 というか、コマンドプロンプトでコマンド打つのが嫌いなんです;; そして、今大体プログラムは完成したっぽいです。
239 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:32:32 ] strncpy()は鬼門。積極的に使う理由がないなら、sprintf()を使え。
240 名前:デフォルトの名無しさん [2007/06/08(金) 17:32:11 ] したのようなプログラムで、今調べている位置を出力するにはどうしたら良いですか? printf("%d\n", Fd)としたら値が変化しません・・・ struct ffblk Fd; findfirst("*", &Fd, 55); do { printf("%s\n", Fd.ff_name); } while(!findnext(&Fd));
241 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:45:49 ] >>240 何も分からない
242 名前:デフォルトの名無しさん [2007/06/08(金) 17:48:57 ] >>241 再帰を使わずにディレクトリ内のファイルを出力したいのですが ディレクトリを進めたときに上ディレクトリで何処まで読んだかを記録しておきたいんです
243 名前:デフォルトの名無しさん [2007/06/08(金) 17:50:47 ] A_dir B_dir C_dir というディレクトリがあったとき、B_dirを調べ終わったとき 次にC_dirを検索するにはどのデータを保存しておけば良いんですか??
244 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:59:58 ] >>243 関数を再帰的に書けば良いじゃん
245 名前:デフォルトの名無しさん [2007/06/08(金) 18:05:38 ] >>244 再帰を使いたくないんです・・・
246 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:07:08 ] 何故?
247 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:09:33 ] Fdを保存しておけばいい
248 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:10:05 ] 末尾再帰型で書いてからループ化すれば? ttp://ja.wikipedia.org/wiki/%E6%9C%AB%E5%B0%BE%E5%86%8D%E5%B8%B0
249 名前:デフォルトの名無しさん [2007/06/08(金) 18:13:57 ] >>246 再帰は不安定になるんですよ >>247 struct ffblk Fd , Fe; としてFe = Fdと記録してみましたがた゛めでした
250 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:05 ] struct ffblk[MAX_DIR_DEPTH];
251 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:19:21 ] 再帰が不安定とは……
252 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:21:44 ] 普通にスタックに積めばいいじゃん。
253 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:23:20 ] >>249 再帰で不安定になるのは、あなたの書いたプログラムの問題。 まあ再帰使わなくても>>250 みたいなやり方でFA_DIRECでも調べれば可能かとは思うけど 100人中95人以上は、再帰の方がわかりやすく書きやすいと言うだろう。 速度なんか気にするケースじゃないしね。
254 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:28:29 ] 何が「再帰は不安定になるんですよ」だよ馬鹿もんが
255 名前:249 [2007/06/08(金) 18:29:22 ] 速度を上げる為に複数スレッドで読み込みたいんですよ 再帰だと出来ないんです・・・・
256 名前:デフォルトの名無しさん [2007/06/08(金) 18:31:38 ] ここに複数スレッドでうごいているようなソフトがあるんですけど・・・ どうやればいいんですか??? フォルダサイズ調査 『 D-Usage.exe 』 hp.vector.co.jp/authors/VA032597/Software/DirMan.html
257 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:32:30 ] ドライブ資源は1個なのに、複数スレッドでアクセスしたら、 かえって遅くなるような気がしないでもない
258 名前:デフォルトの名無しさん [2007/06/08(金) 18:35:07 ] >>250 進める前に、ディレクトリ情報を取得しておいて 自分でそこのディレクトリを設定し直せばいいってことか それでできそうかも
259 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:36:02 ] (一般的には)無駄なシークが発生して、遅くなります。
260 名前:デフォルトの名無しさん [2007/06/08(金) 18:36:15 ] >>257 実際にデータを読み込む訳ではないんですよ
261 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:37:02 ] FindFirstFile()が返してきたハンドルをスタックとして もっとけばいいだけじゃないの? そのハンドル持っとけば、次にFindNextFile()呼んだらちゃんと 続きから返ってこないか?
262 名前:257 mailto:sage [2007/06/08(金) 18:39:04 ] >>260 俺は >>259 のことを想定して書いた。 余計なシーク発生するから遅くなるんじゃね? ってこと
263 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:42:22 ] >>256 そのアプリなら、2スレッドしか動かしていないよ。 恐らくは、GUIスレッドと調査スレッドか。 動きを見ていても、とても複数スレッドでやっているようには見えない。 調べもしないで想像で語る愚に填まったね。
264 名前:249 [2007/06/08(金) 18:46:10 ] 複数の方が早いですよ 複数スレッド D-Usage. 36s hp.vector.co.jp/authors/VA032597/Software/index.html 単一スレッド VCDCASE 45s www.hi-ho.ne.jp/hiro30/
265 名前:デフォルトの名無しさん [2007/06/08(金) 18:49:33 ] C言語なんですが 自作関数で実引数で文字列を返す事は可能ですか?
266 名前:257 mailto:sage [2007/06/08(金) 18:49:52 ] >>264 どうやって HDDアクセスが複数スレッドで走っているのを確認したのか教えて欲しい
267 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:50:33 ] >>264 >263
268 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 18:54:11 ] スレッド1個でも動くものができないのに
269 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:00:58 ] しかし、どうでもいいけどD-Usageとかいうソフト、速いのかも知れないけど使い難いなぁ。 作者本人は悦に入っているようだから別にいいけど。 つーか、VCDCASEは目的が違うじゃん。違う目的のソフトを比較して速度云々って>249はどこまで阿呆を晒せば気が済むんだ?
270 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:09:05 ] >>265 できます
271 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 20:52:54 ] >>249 A_dir - file1 - file2 B_dir - file3 とあった場合に欲しい結果は以下のどっち? 1) A_dir B_dir 2) A_dir file1 file2 B_dir file3 1)ならFdを保存すればOK。
272 名前:デフォルトの名無しさん [2007/06/09(土) 01:52:08 ] windows環境でTCHARに対応した標準出力へのiostreamを使いわけるようにしたいわけですが #ifdef UNICODE #define tcout wcout #define tcin wcin #define tcerr wcerr #define tclog wclog #endif #ifdef _MBCS #define tcout cout #define tcin wcin #define tcerr wcerr #define tclog wclog #endif のようにtc*を定義するのは良くないんでしょうか? もしそうであるならば、大体案としてはどのようなものがありますか?
273 名前:デフォルトの名無しさん [2007/06/09(土) 01:55:20 ] 大体案は代替案のtypoですorz
274 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:56:39 ] #ifdef _UNICODE iostream& tcin = cin; (ry
275 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:57:45 ] >>272 とりあえず、_MBCS ブロック内のヤツは cin, cerr, clog にしたほうがいいと思うよ。
276 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:57:52 ] >>272 おそらく、個人・環境等で意見は様々だと思う。 個人的には、4つや5つなら許せるが、こんなことしなくても問題ないようなモノにしたい。 で、その書き方なんだがUNICODEと_MBCSが万が一両方定義されていた場合のことも 考えて、#if-#else-#endifのほうがいいかと。 もしくは、両方定義されていたらコンパイルエラーにするとか。
277 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:01:44 ] >>274 cin の型は iostream じゃなくて istream やね。 そして、_UNICODE の場合は wistream 。
278 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:05:01 ] >>272 実際困っちゃうんだよね、それ。 自分も似たようなコトしてるし、多分大丈夫だと思いますよ。
279 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 02:29:52 ] 回答ありがとうございました。 皆様の意見を参考にこのようにしました。 #ifdef UNICODE #ifdef _MBCS #error define either only UNICODE or _MBCS. #else std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::wcin; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcout = std::wcout; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcerr = std::wcerr; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tclog = std::wclog; #endif #else #ifdef _MBCS std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::cin; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcout = std::cout; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tcerr = std::cerr; std::basic_ostream<TCHAR, std::char_traits<TCHAR> >& Tclog = std::clog; #else #error define either only UNICODE or _MBCS. #endif #endif 軽く使っただけなんで不具合は分かりませんが、 iostreamやiosfwdでの定義から考えればこれでいけそうに思えます。 _INC_TCHARの定義を必要とするようにとかまだ色々付け加えるべきことはあるとはおもいますが
280 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:17:18 ] fopen("test.txt", "w"); でファイルをオープンしようとしたのですが、どうやら実行ファイルの場所ではなく、 C:\C:\Documents and Settings\ユーザ名 のディレクトリが対象となっているっぽいです。どうにか対象を実行ファイルのある場所にしたいのですが、 どうすればいいのでしょうか?というよりも、普通実行ファイルの場所が対象になると思うのですが、、、
281 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:24:21 ] >>280 >普通実行ファイルの場所が対象になると思うのですが、、、 そんな「普通」はあなたの脳内にしかありません。 大人しく絶対パス指定するなりユーザに設定してもらうなりインストーラで設定するなり アプリケーションの在り処を検索するなりしてください。
282 名前:534 mailto:sage [2007/06/09(土) 03:49:25 ] >>280 これ使ってください>< int getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) { size_t i = 0; size_t len; len = strlen(argv[0]); while (i < len) { printf("argv[0][%d]:%c\n", len-i, argv[0][len-i]); if (argv[0][len-i] == '\\') break; ++i; } if (dest_sz < len-i +2) return -1; strncpy(dest, argv[0], len-i+1); dest[len-i+1] = '\0'; return 0; } argvはmain(int argc, char* argv[])のargvで destは出力先の文字列の先頭ポインタ dest_szはsizeof(dest)です>< ちなみにこれC++のSTL使うと4行程でできちゃいます><
283 名前:534 mailto:sage [2007/06/09(土) 04:20:39 ] 改良しました>< // コマンドライン引数配列から実行されたディレクトリを取得する int getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) { size_t i; size_t len; i = len = strlen(argv[0]); while (i > 0) { if (argv[0][i-1] == '\\') break; --i; } if (dest_sz < i +2 || i == 0) return -1; strncpy_s(dest, dest_sz, argv[0], i); dest[i] = '\0'; return (int)i; }
284 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 04:36:26 ] >>281 そんなアプリケーション見たことねえw
285 名前:534 mailto:sage [2007/06/09(土) 04:48:38 ] まだ直すところありました(^^ // コマンドライン引数配列から実行されたディレクトリを取得する size_t getExecutedDirectory(const char* argv[], char* dest, size_t dest_sz) { size_t i; size_t len; i = len = strlen(argv[0]); while (i > 0) { if (argv[0][i-1] == '\\') break; --i; } if (dest_sz < i +1 || i == 0) return -1; strncpy_s(dest, dest_sz, argv[0], i); dest[i] = '\0'; return i; }
286 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 05:58:26 ] コマンドライン引き数から実行モジュールの場所が得られると思ったら大間違い。
287 名前:534 mailto:sage [2007/06/09(土) 06:31:11 ] 詳しく^^
288 名前:534 mailto:sage [2007/06/09(土) 06:49:51 ] 自己解決しました^^ フルパスじゃないと取得できないので windowsだとGetModuleFileName()を使うのですね^^ この辺は環境依存になるので注意が必要ですね^^ 勉強になりました^^^^;;
289 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 06:51:34 ] system()関数って凄く謎なのですが・・・。 printf("aaa\n");をコメントアウトするだけで、エラーが出てしまいます。 これは俺が、system()で使う領域を侵してると考えていいのでしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 06:51:36 ] 1.Unix系はarg[0]にパスが入らないんじゃなかったかな。 2.バッファオーバーランしかけたらエラー処理してくれ 3.Shift-JISだとそのコードはまずくね?「c:\ソ.exeとか」 4.const char* argv[]じゃなくてchar const *const argv[]な
291 名前:534 mailto:sage [2007/06/09(土) 08:06:37 ] これでどうでしょう? もうWindows特化ですが(というかUNIXの実行環境が無い(´・ω・`) ) // コマンドライン引数配列から実行されたディレクトリを取得する size_t getExecutedDirectory(TCHAR* dest, size_t dest_sz) { _locale_t loc; size_t len; // 実行ファイルのフルパスを取得 TCHAR fullpath[4096]; GetModuleFileName(NULL, fullpath, sizeof(fullpath)); // ロケール設定 loc =_create_locale(LC_CTYPE, "japanese"); // 最後の\を見つけて、コピー範囲[fullpath,len)が適用できるようなlenを生成 TCHAR* last_slash = _tcsrchr(fullpath, '\\'); len = last_slash - fullpath +1; // 出力先の容量が不足ならエラーで-1を返す if (len-1 == 0 || dest_sz < len) { if (dest_sz > 0) dest[0] = '\0'; return -1; } // コピーして終端に0 _tcsncpy_l(dest, fullpath, len, loc); dest[len] = '\0'; return len-1; }
292 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 08:17:05 ] >>289 その周辺を晒してくれないとなんとも言えないのだが。
293 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 08:34:05 ] >>279 std::basic_istream<TCHAR, std::char_traits<TCHAR> >& Tcin = std::wcin; とかって、ここで TCHAR 使っても意味ない気が。 右辺が明らかに wistream 型だし、 wistream と書いた方がすっきりしていいと思うぜ。
294 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:21:55 ] 1.sizeof(fullpath) → sizeof fullpath / sizeof *fullpath 2._tcsrchr(fullpath, '\\')→ _T('\\') 3._tcsrchr(fullpath, '\\') _UNICDEかMBCSが定義されてないとShift-JISは問題起こす(たぶん) 4.dest[0] = '\0'→_T('\0') 5.return -1→return static_cast<size_t>(-1)とか ↓ これで我慢しろ。(UNCパスだと問題あるかも) std::basic_string<TCHAR> getExePath() { TCHAR exe_path[MAX_PATH]; DWORD r = ::GetModuleFileName(NULL, exe_path, sizeof exe_path / sizeof *exe_path); if( r == 0 || r == sizeof exe_path / sizeof *exe_path ) throw std::runtime_error("うぎゃあ"); TCHAR drive[_MAX_DRIVE], path[_MAX_PATH]; _tsplitpath(exe_path, drive, path, NULL, NULL); return std::basic_string<TCHAR>(drive) + path; }
295 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:27:16 ] >>294 sizeof(fullpath)じゃなんであかんのんですか?
296 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 09:54:28 ] >>294 だけど、 GetModuleFileNameの第3引数はバイト単位のサイズでなく配列要素数を 指定する。Unicodeビルドの時はsizeof(TCHAR)が2なので、TCHAR buf[10]は sizeof buf = 20 sizeof buf / sizeof *buf = 10 違ってたらごめん
297 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 10:05:43 ] >>296 嘘つくな。氏ね
298 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 10:46:05 ] >>297 ttp://msdn2.microsoft.com/en-us/library/ms683197.aspx > The size of the lpFilename buffer, in TCHARs. だから>>296 であってる
299 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:45:36 ] ヘッダーファイルで class temp{ public: int *func(); }; と書いた場合、funcの定義はどう書き始めればいいですか int temp::*func() int temp::(*func()) int *temp::func()
300 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:59:13 ] 一番下じゃないとVSのインテリセンスが効かなかったので一番下
301 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:05:51 ] >>299 コンパイルできるのは一つだけしかないだろ?
302 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:16:44 ] >>299 int* func();
303 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 19:58:45 ] >>279 テンプレートデフォルト引数があるんだから std::char_traits<TCHAR>まで律儀に指定しなくてもいいと思う
304 名前:デフォルトの名無しさん [2007/06/10(日) 00:26:59 ] ちょっと相談。 CSV形式のテキストファイルを採用することになったんだけど、 エスケープの方法など、細かい仕様について悩んでる。 この辺の定番仕様ってどんな感じかな。 専用の入力ツールを用意しない場合、やっぱりExcelあたりに合わせるのがベターだろうか。 で、その定番仕様に対応したCまたはC++のライブラリがあればお願いします。
305 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:30:56 ] csvってRFCできてなかったっけ
306 名前:304 mailto:sage [2007/06/10(日) 00:59:15 ] RFCあるのか……ありがとう、ちょっと探してみる
307 名前:デフォルトの名無しさん [2007/06/10(日) 02:42:21 ] C++で自分で作ったクラスのVectorを使ってVector aを宣言して -aを使いたいのですがどのようにすればよいでしょうか よろしくおねがいします
308 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:44:07 ] >>307 まず服を脱ぎます。
309 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:46:32 ] ええとよくわからんけど -演算子をオーバーロード?
310 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 02:46:58 ] 単項演算子を使いたいってこと? 2次元ベクトルの例だと、Vectorのメンバに Vector operator - () const {return Vector(-x, -y);} みたいな感じか?
311 名前:307 mailto:sage [2007/06/10(日) 02:54:52 ] 解決しましたありがとうございました
312 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 04:01:52 ] linuxで標準ライブラリをインストールしたいのですが glibc-2.5.0-0exp1 glibc-2.5.0-0exp2 の違いってなんですか?
313 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 07:16:07 ] 1と2
314 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 11:47:50 ] >>312 そのパッケージは Ubuntu にしか無いっぽいな、 俺はFedora使いだからよくわからん Ubuntu系のスレにでも行ったほうがよさげだ
315 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:20:40 ] ファイル情報の取得の仕方教えて。
316 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:24:06 ] stat
317 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 13:30:01 ] file
318 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 14:10:54 ] Windows環境で,任意のファイルが変更された時に, 変更の種類(作成,更新,削除等)と,変更を与えたプロセスを 出力するプログラムを作成しようと思っています. 変更の検知とその種類に関しては,Win32APIのReadDirectoryChangesWで 取得できるのですが,変更を与えたプロセスの取得方法が Win32APIや.NETを探しても分かりません. 何か方法があれば教えていただけませんか?
319 名前:318 mailto:sage [2007/06/10(日) 14:11:45 ] すみません, Windows環境 → WindowsXP環境 です
320 名前:デフォルトの名無しさん [2007/06/10(日) 14:56:21 ] VB.NETとC#.NETで、大きく異なる点とは、どういうとこでしょう? 考えたかとか、コーディングの仕方で教えてください。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:09:24 ] 元が VB か C/C++ か、の差
322 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:11:46 ] #include <iostream> struct A { A(){ std::cout << "A" << std::endl; } ~A() { std::cout << "~A" << std::endl; } template<class T> static void func() { std::cout << "func" << std::endl; } }; int main() { A().func<int>(); return 0; } 以上のプログラムを実行すると vc, gccでは A func ~A と出力され、bccでは func ~A と表示されました。 コンストラクタが呼ばれないのはbccのバグでしょうか? ちなみにメンバ関数にtemplateを使わなかったりstaticでなければ問題なくコンストラクタは呼ばれるようです。
323 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:19:03 ] >>322 バグだね。 bcc なんて使わなけりゃいい。
324 名前:320 [2007/06/10(日) 15:24:40 ] メモリーの考え方とか、大きく違ったりしませんか? 定数、変数のきり方とか・・・・ インスタンスの方法とか、考え方とか・・・ 単に、方言が違うだけ?
325 名前:322 mailto:sage [2007/06/10(日) 15:38:39 ] >>323 レスどうもです。 やはりバグですか。 bccはコンパイル速度しか売りがないのかなと感じる今日この頃。
326 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:39:27 ] >>324 .NETスレは他にあるだろ。なんでここで聞くんだ? どのくらい違うかの位置関係はこんな感じで、 VB6−−−−−−VB.NET−C# メモリーの考え方とかインスタンスの考え方はVB6から大きく変更になってる。
327 名前:320 [2007/06/10(日) 15:55:44 ] ごめん。 C#スレと勘違いしてた。
328 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:12:08 ] あれだけ#の種類を変えて頑張っているのにw
329 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:01:15 ] 構造体/クラスを関数に渡すときは、ポインタか参照が使われることが一般的のようですが、 戻り値が構造体/クラスなのは普通ですか?
330 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:08:14 ] >>329 コピーが重い場合には避けられるけど、単純にポインタや参照にして 置き換えられないこともあるので、引数に比べれば使われる機会は多いでしょう。
331 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:21:23 ] ttp://www.cs.bme.hu/~bodon/en/apriori/ ↑のサイトのプログラムを落として makeしてみたらエラーがでて、makeできませんでした。 どのようにしたらmakeできますか? 実行はCygwin上で行ってます。 エラー内容は $ make g++ Input_Output_Manager.o Apriori.o Trie.o Apriori_Trie.o main.o -o ../apriori Input_Output_Manager.o: In function `_ZN20Input_Output_ManagerC2ERSt14basic_ifstreamIcSt11char_traitsIcEEPKc': Input_Output_Manager.cpp:(.text+0x2f): undefined reference to `_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E' Input_Output_Manager.cpp:(.text+0x4a): undefined reference to `_ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev' ・ ・ ・ Input_Output_Manager.o:(.gnu.linkonce.r._ZTI20Input_Output_Manager+0x0): undefin ed reference to `_ZTVN10__cxxabiv120__si_class_type_infoE' Input_Output_Manager.o:(.gnu.linkonce.r._ZTI20Input_Output_Manager+0x8): undefin ed reference to `_ZTISt14basic_ofstreamIcSt11char_traitsIcEE' collect2: ld returned 1 exit status make: *** [../apriori] Error 1