( ゚Д゚)ノ ギコ猫のプログラム相談室part4
1 :
新米ギコ@いいかげん :
2000/10/13(金) 23:20
2 :
名無しさん@お腹いっぱい。 :2000/10/13(金) 23:33
常に計算量が(n log n)であるようなソートが 新しくできたって聞いたんですが、どんなのですか? # ヒープソートも(n log n)固定ですが # オーバーヘッドが大きすぎて # 誰も使わないみたいですね
3 :
渡りに船です :2000/10/13(金) 23:38
今は全くの初心者なんですが、趣味としてこれから プログラミングを楽しんでみたいなあと思っています。 きめの細かい言語をこつこつと勉強していくには どの言語が最適ですか?
どーもいやな予感がする
>>3 に答える人はその言語のメリット・デメリットを
ちゃんと説明するよーに
5 :
新米ギコ@いいかげん :2000/10/14(土) 00:08
∧ ∧
( ゚Д゚) <
>>2 計算量の書き方は、O(n log n )だ! Oを忘れるな!
|∪ |つ∀ ~~
| |
U U
∧ ∧
( ゚Д゚) <
>>3 CかC++だ! いろいろなぷらっとふぉーむで使える強みがあるぞ!
|∪ |つ∀
| |
U U
∧ ∧
( ゚Д゚) <
>>4 教えてもらいたいのならもっと素直になれ!
|∪ |つ∀
| |
U U
あっ、ごめんなさい4≠3です。 某スレの悪夢を思い出してしまったもので...
7 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 01:19
MFCで、ボタンコントロールを無効にするにはどうすればいいですか?
8 :
>7 :2000/10/14(土) 01:44
button.EnableWindow(FALSE);
9 :
渡りに船です :2000/10/14(土) 09:28
ありがとう新米ぎこ。
10 :
魁!名無しさん :2000/10/14(土) 10:19
CからC++覚えるのにフリーのBCC使ってアプリ組んでみようかと思うんですが、 BCBやVCと比べるとどの辺りに気を付け他方がいいですか。
二進数を指で数えることがどういうものなのか今分かった。 面白れえい。
12 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 12:36
cshやりたいんですけど : Command not found. : Command not found. /usr/sbin/vidtomem: Command not found. : Command not found. ってまったく実行できないなぜなんでしょうか・・・ csh ファイル名 で実行してるからパスがとおってないってことも無いと思うんですが・・・
13 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 14:04
>>5 Ο ってのはなにも計算量を表す記号じゃないよ。
計算量は Ω で表すときもあるし Θで表すときもある。
まあほとんどの場合は Ο がふつうだけど。
14 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 15:46
外字をJavaで使わなければいけなくなり 文字コードを Cp943C にしたいのです。 コンパイルは javac -encoding Cp943C Test.java として、実行時 javac -Dfile.encoding=Cp943C Test で行けるかなと思ったのですが、どうも、うまくいきません。 System.out.println(sun.io.CharToByteConverter.getDefault()); を実行すると、 CharToByteConverter: MS932 と出力されます。 # java version "1.2" # Classic VM (build JDK-1.2-V, native threads) システムプロパティの設定が違っている? それともそもそもなんか違う?
15 :
dd s :2000/10/14(土) 18:46
初心者向けのホームページあったらおしえて?
16 :
dd s :2000/10/14(土) 19:09
すません。上の方に「お勉強ページへのリンクスレ」ってのが あった。たくさん紹介されてる。
18 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 20:52
printf()を使わずにわざわざfprintf(stderr,"Error\n"); とかって書くのは人が見て分かりやすい以外に理由がありますか?
stderrならfprintf()だろうな。
20 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 21:49
stderrはstdoutとは違うものなのですか?
21 :
名無しさんとも言える :2000/10/14(土) 22:19
>>20 標準出力と標準エラー出力は別です。
ファイルハンドルが違うことからも送り出している場所が違う。
文字通り stdout はは普段使われ、 stderr はエラーが起きた場合にその内容などが送られる。
22 :
名無しさん@お腹いっぱい。 :2000/10/14(土) 23:43
そうなんですかー。結局どっちもコンソールに返してるじゃん、って思って。
23 :
名無しさん@お腹いっぱい。 :2000/10/15(日) 00:05
stderr は ">" じゃリダイレクトできない。
24 :
名無しさん@お腹いっぱい。 :2000/10/15(日) 01:08
>18=20=22? 1) ファイルとファイルディスクリプタ(ファイルハンドル、ファイルポインタ) を一緒くたにしちゃいかん。仮にstdoutとstderrが同じ「ファイル」(例えば/dev/tty やconといったものだな)をオープンすることにより得られたものであっても、 ファイルポインタとしてそれらは異なるものだ。 2) リダイレクトやパイプを使ってみればわかることだが。。 標準入出力をオープンするのは自分ではなく、それらは親プロセス (普通はシェル)から受け継いでいるものだ。 従って、標準出力の先は実は他のプログラムの標準入力であったり、 他のファイルであったりすることがいくらでもある。 > 結局どっちもコンソールに返してるじゃん ということを仮定しちゃいかん。 3) むかしは標準エラー出力のようなものは無かった。なぜそのようなものが 発明されたかというと、プログラムの本来の出力と、エラーメッセージのような ものが一緒くたにパイプに流れると色々と不便であり困ったことになるからだ。 ようするに、パイプの仕組みが発明されてから、標準エラー出力は産まれた。 逆に言えば、そのような使用法を想定しないのであれば、ある意味 「どっちでもいいじゃん」 とも言えるのだが。。
25 :
名無しさん@お腹いっぱい。 :2000/10/15(日) 07:39
その昔MS−Cやってました。 今、ウィンドウズでアプリケーションを作るのに勉強量&労働時間を少なく するにはどの言語を覚えたらいいか教えてください。
>25 日本語と英語
27 :
25 :2000/10/15(日) 12:26
マジレスきぼーん。
28 :
dd :2000/10/15(日) 13:00
リンク先をざっと見てきたんだけどCとC++の違いがわかんなかった。 IE4とIE5の違いぐらい? どっちかやろうと思うんだけど、簡単にいうとどこがちがうの?
29 :
魁!名無しさん :2000/10/15(日) 15:04
DelphiかBCBでしょ CやってたのならBCBがいいかもしれない
30 :
名無… :2000/10/15(日) 20:59
失敗あげ
31 :
名無しさん@お腹いっぱい。 :2000/10/15(日) 22:37
cからc++に移行したいのですが、 なんかお薦めの本ありませんかね?
32 :
新米ギコ@月曜からまたお出かけ :2000/10/15(日) 23:26
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>10 BCCはIDEじゃないから気をつけろ
UU ̄ ̄ U U \_____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>11 絶対パスで指定だ!
UU ̄ ̄ U U \_____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>13 虚数はiであらわすと言い張るタイプだな
UU ̄ ̄ U U \_____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>25 BCBでうっどぼーる、き・ま・りだな
UU ̄ ̄ U U \_____________
33 :
新米ギコ@月曜からまたお出かけ :2000/10/15(日) 23:31
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>28 ラテン語とラテン語から派生した言語くらいの違いだ!
UU ̄ ̄ U U \_____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>29 失敗は成功の母! 気にするな
UU ̄ ̄ U U \_____________
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′ ̄ ̄( ゚Д゚)<
>>31 独習C++改訂版 翔泳社刊 だ!
UU ̄ ̄ U U \_____________
34 :
10 :2000/10/15(日) 23:44
>>32 IDE ってHDDのことじゃないですよね。
しばらくブランクある上にヘタレなんでもう少し教えてくだされ。
35 :
10 :2000/10/15(日) 23:49
>>32 IDE ってHDDのことじゃないですよね。
しばらくブランクある上にヘタレなんでもう少し教えてくだされ。
36 :
名無しさん@どーでもいいことだが。 :2000/10/15(日) 23:50
31です。ぎこねこさんありがとう。 図書館で見てくるよ。
37 :
10 :2000/10/15(日) 23:54
Serverエラー出たんで二回投稿してましたわ…。 やはりヘタレ厨房でした。逝ってきます。
38 :
c++初心者 :2000/10/16(月) 02:13
Windowsのフリーウェアなんかのソフトのソースを後悔してるHP があったら教えてください。(言語問わず。) VBやVC++なんかはけっこうありそうだけどないんです。 やっぱり生のソースを見て、ここがこんな風に かかれてるんだなどと、勉強しながら覚えていくのが一番わかりやすいかと思うんです。
39 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 02:50
40 :
814 :2000/10/16(月) 14:53
bitmapファイルから表示される縦横のピクセル数を知りたいのですが どうすればいいでしょう。
41 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 15:17
>>40 ファイル先頭のBITMAPINFO構造体を見ろ。
42 :
814 :2000/10/16(月) 16:00
>>41 ありがとー。
でも良く調べてみたらばりばり書いてあった。
43 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 19:42
signed char と unsigned char の違いって何ですか? 使い分け方がよく分からないのですが・・・・
44 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 19:48
負の値を利用するならsigned。しないならunsigned。 特に理由が無いならsignedで使おう。 charに限れば、日本ではunsignedで使う事が多いかも。
45 :
43 :2000/10/16(月) 19:59
char型で負の値を利用するというあたりが分かりません。 int型とかなら分かるのですが、char型に対する正の値や 負の値の使い方がよく分かりません。 ASCIIコードで呼び出す時に使用するのでしょうか??
46 :
>43 :2000/10/16(月) 20:11
> char型で負の値を利用するというあたりが分かりません。 SJISやEUCなどの漢字コード判定,半角カナの判定 if ( 0x00 <= c && c < 0x80 ) cがcharだと上記コードは期待した処理を行わない
47 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 20:17
>46 > if ( 0x00 <= c && c < 0x80 ) こんなコード、本当に書いてるのか? isasciiマクロを使うか、せめて c & 0x80 で判定するのが普通だと思う。。。
48 :
43 :2000/10/16(月) 20:37
ええっと、何度もすみません。 文字コードを参照した比較処理を行う場合に signedとunsignedを使い分けるには具体的な コードの種類ってあるのでしょうか?? 数字やアルファベットを使用して比較処理を 行う場合はsigned char カナや漢字を使用して比較処理を行う場合は unsignedはっていうようなカンジで 変数を宣言すればよいのでしょうか。
49 :
43 :2000/10/16(月) 20:39
× unsignedはっていうようなカンジで ○ unsigned charっていうようなカンジで 間違えました、スミマセン。
50 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 21:22
>48 signed charには符号拡張に関係した面倒臭い問題があるから、 非ASCII文字セットを対象にする場合は、色々気を使う必要がある。 unsigned charなら符号拡張の引き起こす問題を逃れることが出来るが、 要はその場でキャストするなり0xffでマスクするなりすれば良いだけ とも言える。 特に要注意なのがctype.hのマクロ群を使うとき。通常これらのマクロ は、文字コードをそのままindexとしてテーブル(配列)参照を行うから、 charのまま渡すのは厳禁。マクロ故、コンパイラは適切に型変換を 行ってくれない。 それと、charを無理矢理unsignedと扱わせるようなオプションを サポートするコンパイラも多いはずだ。
51 :
名無しさん@お腹いっぱい。 :2000/10/16(月) 23:25
コメントによく /* XXX - hogehoge */ みたいなこと書いてありますが、このXXXはどういう意味ですか?
>>51 いや、それだけじゃ全然なんのこっちゃわからんぞ。
具体例を出しなさい。あるいは企業秘密か?
54 :
51 :2000/10/17(火) 00:21
説明不足ですみません。普段は主にUNIX + Cを読み書きしているんですが、 ひょっとしたらUNIXのオープンソース系プログラマだけが使ってるのかも しれません。たとえば手元のFreeBSD 4.0で /usr/src/contrib/libpam/libpam/pam_handlers.c を見ると if (pamh->service_name == NULL) { return PAM_BAD_ITEM; /* XXX - better error? */ } とあります。僕の感覚では、この「XXX」は「必要な処理かどうかわからない」 とか「不本意だけれども他のプログラムやプロトコルの出来が悪いのでこの処 理を入れざるを得ない」とかいう箇所に使われているような気がします。 でも実際どうなのかわかりません。UNIX板の方が適切でしょうか??
55 :
53 :2000/10/17(火) 01:54
それって本当に"XXX"なの?伏字じゃなくて?
>>54 それだったら、ヤバそうなとこマークしてるだけかもな。
あとで解決法が出来たときに"XXX"を検索して修正する。
俺も似たようなことやったことがある。
56 :
54 :2000/10/17(火) 01:59
>それって本当に"XXX"なの?伏字じゃなくて? そうです。オープンソースのプログラムには広く使われているような ので、昔からの慣習なんだと思います。 >あとで解決法が出来たときに"XXX"を検索して修正する。 >俺も似たようなことやったことがある。 なるほどなるほど。そういう使い方がありますねー。 UNIX板の方でも「その解釈でいいんじゃないか」と言われたんですが、 自分でも解説してるサイト探してみます。 # XXXだとエロページばっかひっかかる…
57 :
53 :2000/10/17(火) 02:57
理解したよ
>>56 するってーと54の例は
今はPAM_BAD_ITEMを出しているけどもっと適切なエラーコードがあるかも。
という意味だな。
58 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 03:34
ファ○コムなんかでも XXX みたいな慣習はあったよ。 俺に割り当てられたのは %%% だった。
59 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 04:36
>>58 おや。どこかで見かけたようなセリフ。知り合いかな?:-)
60 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 04:54
4.1ですけど cd /usr/src grep -R XXX >& /tmp/XXX wc -l /tmp/XXX 11401行もあります。 やはり、「微妙な時」に使うんでしょうね。:-)
61 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 07:00
windowsで既存のSDIのプログラムをMDIのごとく 管理するプログラムって作れますか? たとえば秀丸で複数の文書を開いた際の タスクバーの表示を1つにしたいのです。 (動作はsusieのようなイメージです) 可能でしょうか?
>>61 でも、スシエってSDIじゃんよ?
タスクバー、ウィンドウ毎にでるぞ。
63 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 12:49
64 :
61 :2000/10/17(火) 13:42
>>62 デフォルトの動作はそうなのですが、
設定によってMDIっぽい動作に変えられるのです。
-
[ファイル]-[設定]-[ウィンドウ]の[アイコンはアイコントレイに]と
[タスクバーにウィンドウ名を表示]のチェックをはずして、
[ファイル]-[設定]-[メニュー]の[コモンメニューバーを表示する]を
チェックするとそれらしい動きになります。
(susie32 ver0.45aの場合)
-
タスクが複数になっているのはかまわないので、
表示上の動作を外部のプログラムから制御できたらなぁと。
ウィンドウの一覧の取得と、切り替えぐらいは出来ると思いますが、
タスクバーの表示を消す方法がわかりません。
65 :
61 :2000/10/17(火) 13:50
66 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 14:57
レジストリ関連のセキュリティアトリビュートとか セキュリティディスクリプタってなんに使うの? 9xの人間だからわからん。
67 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 18:38
Windowsmの メニュー項目の表示/非表示の切り替えは どうやってやればいいんでしょうか? ハンドルとってなにかメッセージ投げるのでしょうか? 要点だけでいいので教えてください
68 :
名無しさん@お腹いっぱい。 :2000/10/17(火) 20:27
COLORREFの値からどんな色か一目でわかるツールって どなたかご存知ないですか?
70 :
名無しさん@お腹いっぱい。 :2000/10/18(水) 12:37
BCBを使用して自マシンのIPアドレスを取得したいんですが、上手くいきません。 ServerSocketをActiveにしてボタンかなんかで ServerSocket->Socket->LocalAddressを表示すると0.0.0.0が入っています。 ServerSocketを使う上で、なにか注意しないと行けない事とかってあるんでしょうか? それとも、そもそも使い方(つーか取得仕方)自体が間違ってます? 環境はWin98+IE5.0+TCP/IPのLAN+BCB4です。 よろしくお願いします。
71 :
名無しさん@お腹いっぱい。 :2000/10/18(水) 15:21
>>70 TServerSocketはデフォルトでマシンにふられてるすべてのアドレスの
指定ポートを開くはずで、それが0.0.0.0なのれす。
だから、どれか特定のアドレスだけでサーバするなら、
それを指定してやらにゃダメれす。
マシンにふられてるアドレスを知るには他の方法を使ってくだしゃい。
>>62 スシエって何だよ、スシエって。
どうせネタだろうが、マジだったら嗤うぞ。
73 :
70 :2000/10/18(水) 17:06
>>71 ご返事ありがとうございます。
ああ、そうなんですか。結構使えないっすね。いや、使えるのか、場合によっては。
仕方ないんで、生socket作ってlisten()したあと調べることにします。
>73 gethostbyname("");
75 :
70 :2000/10/18(水) 18:50
>>74 えーと、LAN内でプライベートアドレスをDHCPによって振り当てられるので、
ホスト名は使えないのです、多分。
それとも、空っぽの文字列を渡すとカレントのIPアドレスとかくれるんでしょうか?
> ホスト名は使えないのです、多分。 C:\> ping your_own_host_name の結果はどうよ。 ちゃんとReplyかえるべ?
77 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 12:08
クラスの静的メンバのしくみを知るために 以下のサンプルプログラムを作ったのですが、 外部シンボル ""private: static int ClassA::nA" (?nA@ClassA@@0HA)" は未解決です といわれてコンパイルできません。なんででしょう? 誰かHelp下さい。 #include <string.h> #include <stdio.h> class ClassA { static int nA; public: ClassA(){nA = 0;}; void Set(int a){nA = a;}; int Get(){return nA;}; }; void funcA() { ClassA inst_1; inst_1.Set(111); printf("inst_1.nA = %d\n",inst_1.Get); }; int main(int argc, char* argv[]) { funcA(); ClassA inst_2; printf("inst_2.nA = %d\n",inst_2.Get); inst_2.Set(999); printf("inst_2.nA = %d\n",inst_2.Get); return 0; }
78 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 12:32
int ClassA::nA = 0 ; とでもして、スタティックメンバの初期化をしとけ。
79 :
77 :2000/10/19(木) 12:59
>>78 どこでですか?
コンストラクタで初期化はしてるんですが…。
80 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 13:10
>77 宣言/定義+初期化の違いが分かってないらしい。
81 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 13:10
ClassAとfuncA()の間でいいだろう。 スタティックメンバの初期化はスタティックに行うべし。
82 :
77 :2000/10/19(木) 13:24
81さんありがとうです。でもコンパイルは通りましたが、 inst_1.nA = 4198410; inst_2.nA = 4198410; inst_2.nA = 4198410; となってしまって予定通りの結果にならんのですが。 かなり不思議です。
83 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 13:39
inst_1.Get ↓ inst_1.Get() だ。
84 :
77 :2000/10/19(木) 13:47
うおー、できました。 みなさまどうもご親切にありがとうございました。
85 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 16:26
初心者的質問なので、VCですけどここにしました。 MFCアプリで、自身の動作を一定時間止めてwaitみたいなことをするに はどうしたらよいのですか? たとえば0.5秒のwaitなんですが。 よろしくおねがいします。
86 :
>85 :2000/10/19(木) 16:35
Sleepではだめなのね?
87 :
名無しさん@お腹いっぱい。 :2000/10/19(木) 16:45
88 :
がんばれ!名無しさん :2000/10/20(金) 10:46
現在の日時をプリントしたいのですが、time.hの どれをどうやって使えばいいですか? 西暦・月・日だけ必要です。
89 :
名無しさん@お腹いっぱい。 :2000/10/20(金) 11:35
>>88 time関数とlocaltime関数を組み合わせればOK。
あとは、struct tmをヘルプで調べれ。
90 :
名無しさん@お腹いっぱい。 :2000/10/20(金) 12:01
'double ' : 予期されないストレージ クラスまたは型指定子です。無視されます 非標準の拡張機能が使用されています : 宣言リストにあるカンマの後の修飾子は無視されます。 と、こういう警告が消えなくて困っています。 構造体の宣言で、メンバの個数分でます。 別のプログラムからコピーしてきたのですが、 そのコピー元では警告もエラーも出ません。 これはどういった原因が考えられますでしょうか。 お願いします。VC++です。
91 :
名無したん@LV3 :2000/10/20(金) 12:42
>>88 #include <stdio.h>
#include <time.h>
void main()
{
time_t t;
t = time( NULL );
printf( "%s", ctime( &t ) );
}
92 :
c++初心者 :2000/10/20(金) 13:52
プログラム初心者なので練習のために簡単なプログラムを書いているものです。それで、次のプログラムでコンパイルは通るのですが、結果がおかしいのです。でも、何がおかしいのかよくわかりません。誰か教えていただけないでしょうか。 ************************* main.cpp ************************* #include"x.h" main() { x xx; xx.printx(); } ************************* x.h ************************* #include<iostream.h> class x { private: int a,b,c; public: x(); void printx(); }; ************************* x.cpp ************************* #include"x.h" #include"y.h" x::x() { a = 1; b = 2; c = 3; } void x::printx() { int aa,bb,cc; y *yy; yy->get_y(aa,bb,cc); cout << "a = " << aa << endl; cout << "b = " << bb << endl; cout << "c = " << cc << endl; }
93 :
c++初心者(続き) :2000/10/20(金) 13:53
*********************** x.cpp *********************** #include"x.h" #include"y.h" x::x() { a = 1; b = 2; c = 3; } void x::printx() { int aa,bb,cc; y *yy; yy->get_y(aa,bb,cc); cout << "a = " << aa << endl; cout << "b = " << bb << endl; cout << "c = " << cc << endl; } *************************** y.h *************************** #include<iostream.h> class y { private: int d,e,f; public: y(); void get_y(int&,int&,int&); }; *********************************
94 :
c++初心者(続き) :2000/10/20(金) 13:54
**************************** y.h **************************** #include<iostream.h> class y { private: int d,e,f; public: y(); void get_y(int&,int&,int&); };
95 :
c++初心者(続き) :2000/10/20(金) 13:54
************************ y.cpp ************************ #include"y.h" y::y() { d = 1; e = 2; f = 3; } void y::get_y(int &aa,int &bb,int &cc) { aa = d; bb = e; cc = f; }
96 :
c++初心者(続き) :2000/10/20(金) 13:55
以上です。途切れ途切れですいません。
97 :
c++初心者(続き) :2000/10/20(金) 13:56
ちなみに結果は a = -906207861 b = -1990917949 c = 473793509 のようになります
98 :
名無しさん@お腹いっぱい。 :2000/10/20(金) 14:07
y *yy; などをnewしていないのでおかしくなるんでしょう。 y *yy = new yy; としてyyがいらなくなったら delete yy;とします。 配列の場合、 y *yy = new yy[2]; delete[] yy; というようにします。
99 :
c++初心者 :2000/10/20(金) 14:28
言われたようにnewを使えばできました。 98さんありがとうございます。
ほのぼの〜
101 :
名無しさん@お腹いっぱい。 :2000/10/22(日) 06:12
すいませんが、 CD-ROMドライブの位置、(ディスクの挿入)状態、情報を 取得できるAPIってありますか? 一応ヘルプを見たのですが検討がわかないので見つかりません。 スレ違いかもしれませんがお願いします。
102 :
魁!名無しさん :2000/10/22(日) 23:55
ためになりますね〜
103 :
月刊能力不足 :2000/10/23(月) 12:32
構造体内に関数ポインタメンバ変数を設け、 関数を実行できるでしょうか? struct A { int (*a)(); }; struct A a; void b( void ) { printf( "b\n" ); } main() { a.a = b; a.(*a)(); }
104 :
こう? :2000/10/23(月) 13:24
#include <stdio.h> struct A { int (*a)(); }; struct A a; void b( void ) { printf( "b\n" ); } main() { a.a = b; (*a.a)(); }
105 :
月刊能力不足 :2000/10/23(月) 13:45
>104 (*a.a)(); ですね。 ありがとうございました。
106 :
名無しさん@お腹いっぱい。 :2000/10/23(月) 14:55
BOOL func(){ int nRelt; BOOL bFlg; ・ ・ if(!sub()) return FALSE; /*?*/ if(!find("TRUE")){bFlg=TRUE; return TRUE} if(!find("FALSE")){bFlg=FALSE; return TRUE} return FALSE; } 上記の様なソースを作ったのですが、 /*?*/まではエラー時にFALSEで抜けているのですが 最後のfind(検索)では見つからなったらもう一度、 違う文字(ここでは"FALSE")を検索しなければなりません。 そこで、見つかったらTRUEで抜けて、 "TRUE"も"FALSE"も見つからなったら、 最後でFALSEを返すという今までとは 異なる流れになってしまいました。 こういう場合はどのように書くのがきれいで 無駄がないのでしょうか?
107 :
名無しさん@お腹いっぱい。 :2000/10/23(月) 15:24
>>106 まず、そのbFlgというのは一体何に使ってるのか謎なんだが。
最後のif文で代入してるようだが、これは意味が全くないぞ。
あと、そのfindというのはどういう関数かを教えてくれ。
それが分からないと、回答しようがない。
108 :
106 :2000/10/23(月) 15:43
失礼しました。 簡略して書いたつもりが分け解らなくなってしまいました。 これはC++で作っていて まずfuncというのはクラスの関数で、 bFlgというのはそのクラスのメンバ変数です。 findというのはCString::CompareNoCaseです。 実際は「sBuf.CompareNoCase(_T("TRUE"));」 こんな感じで書いてあります。 bFlgを何に使用しているのかというと、 "TRUE" or "FALSE"を検索し、TRUEならフラグが立ち、 FALSEならフラグがたたないようにしてあります。 文字列に"TRUE" or "FALSE"がなかったらエラーを返します。
109 :
107 :2000/10/23(月) 16:00
>>106 メンバ変数?
じゃ、せめて関数の外に書いてくれ。あれじゃローカル変数にしか見えん。
それで回答だが、TRUEならTRUEを、FALSEならFALSEを、それ以外なら例外を
投げるようにしたらどうだろう?
110 :
106 :2000/10/23(月) 16:23
文字列上に"TRUE"or"FALSE"があるかないかの情報しか 必要でなく、どちらが設定されていようが関係ないのです。 後、申し訳ないのですが又、説明不足で。。。 メンバ変数は他にもあり/*?*/の上の個所で、 文字列を調べて代入しています。 文字列は ""1", "Name", "Power", "TRUE"" 上記のような感じで、そこから決められた フォーマットのメンバ変数 (例、最初の1ならint、Nameはchar szbuf[]) に変換して設定します。 この関数が、BOOL型なのはこの文字列にデータの漏れがあるか ないかの情報しか必要ではないのでそうしています。 他の項目では検索をかけてそのまま設定したり、 数値変換して設定すれば良いのですが、 "TRUE"の個所は検索に引っかからなかったら、 もう一度、"FALSE"の検索をしなければならなく if〜elseや()?〜:〜を使ったりしてもどうもきれいに書けませんでした。 長文かつ駄文で申し訳ありませんがどうにかならないでしょうか?
111 :
名無しさん@お腹いっぱい。 :2000/10/23(月) 19:52
>110 もしかしてこう書けば満足?? { /*省略*/ if(find("TRUE")){ if(find("FALSE")){ return FALSE; /*どっちも見つからないのでエラー*/・ } bFlg=FALSE; }else{ bFlg=TRUE; } return TRUE; }
112 :
106 :2000/10/23(月) 22:07
最初、そういう風に書いていたのですが、 どうもネストが深く(たいして深くないけど)なるのが どうも気にくわなくて106みたいに作ってみましたが、 今度は、流れが異なってしまって何か他に、良いやり方が あるのかなぁと思い書いてみました。 こんな事で悩んでいる馬鹿な私に、 レスをくださった方ありがとうございました。
> 112 if( (!(bFlg=(0==find("TRUE")))) && find("FALSE") ) return FALSE; return TRUE; エラーのときにもbFlgが書きかえられてしまうし 可読性がおもいっきし落ちるので、けしてオススメしないが‥
114 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 00:21
Netwareのdcopyを自分で作りたいんだけど、何を参照すればいいですか? 使用中のBtrieveファイルをバックアップしたいのです。 NDKってのをダウンロードしましたが、さっぱり???です。 もうNetware屋さんなんていなくなっちゃったかな。
115 :
>112 :2000/10/24(火) 01:29
BOOL bRelt; bRelt=(find("TRUE")==0)?bFlg=TRUE,TRUE: ((find("FALSE")==0)?bFlg=FALSE,TRUE:FALSE) return bRelt; どうかなこれ?112じゃない人の意見もきぼーん。 (確か条件演算子はreturnはできなかったよね? だから上みたいにしてみたんだけど)
エラーだとif文のなかでreturn FALSE;としたいというのが 112の希望ではなかったんか? なぜそれをわざわざこんな変なことするのか理解不能。 単純に行を減らしたいだけならば、なんでbReltがいるねん? return find("TRU‥‥‥ と書けばいいやん。
117 :
115>116 :2000/10/24(火) 02:18
そんなにせめないでくれ、へたれな俺なりに色々考えたんだから。 俺みたいな奴が日本のプログラマーのレベルを下げてるんだろうな... あとbReltはただの趣味、returnに式を書くの好きじゃないだけ。 なんか良いやり方ないもんかね〜、俺も気になってきたよ。
111のやりかたで十分よいと思うのだが‥
未練スレッドはどこへ行ったのですか?
120 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 15:29
CString型の変数にUniCodeの文字列を入れたら UniCodeじゃなくなってしまったんですけど何でなんですか? StrBuf = lpwRedBuf←これにはUniCode文字列が入っています (デバッガで調べた)
>>119 沈んでます。
サルベージしてやってください。
agelleさんサルベージしてくだちい
123 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 18:43
C++の構造体について質問です。 typedef struct { int mona; int giko; int zonu; } _2CH; とありまして、 // ファイルから直接_2CH構造体に読み出す。 fread(hensuu, sizeof(_2CH), 1, fp); なんてしたいのですが、これってうまくいくのでしょうか? C++の構造体はCの構造体と違うようなのでうまく行かない気がします。。。 うまく行かないとしたらどうすればいいでしょうか?
124 :
123 :2000/10/24(火) 18:44
すいません。 struct _2CH{ int mona; int giko; int zonu; }; に訂正します。
125 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 19:03
うまくいきます。何も心配する必要ありません。 ただしコンストラクタを持つ構造体(=クラス)は心配する必要があります。
126 :
自身あんま無し :2000/10/24(火) 19:03
size_t fread( void *buffer, size_t size, size_t count, FILE *stream ); だから・・ fread(&_2CH.mona,sizeof(char),sizeof(_2CH)/sizeof(char),fp); じゃねーか?
127 :
123 :2000/10/24(火) 19:08
126さん。ご指摘ありがとうございます。
_2CH hensuu;
fread(&hensuu, sizeof(_2CH), 1, fp);
ですね。。
Cだとこれでいいのですが、C++は
fread(&hensuu.mona,sizeof(char),sizeof(_2CH)/sizeof(char),fp);
じゃないといけないのでしょうか?
つまり
&hensuu == &hensuu.mona
では無い可能性があるのでしょうか?
>>125 >ただしコンストラクタを持つ構造体(=クラス)は心配する必要があります。
Cの構造体の使い方をするのであればC++と言えど問題ないのですね。
いやー。安心しました。ありがとうございました!
128 :
> 123 :2000/10/24(火) 19:14
> C++の構造体について質問です。 hensuuの型は? (struct _2ch *)ならば、メモリ確保を行っているか? (struct _2ch) ならば、fread(&hensuu, sizeof(hensuu), 1L, fp); だとおもうが? ファイルから直接_2CH構造体に読み出すことは可能で今回の構造体の場合は ほとんどの環境、処理系で期待した動作を行うはずだが、 struct _2CH{ char mona; int giko; char zonu; }; の場合、期待した動作を行うわない環境、処理系もある。 この場合は、メンバを1個ずつ読み込む必要がある。
129 :
ん? :2000/10/24(火) 19:49
仮想関数を持つクラスは無理。 仮想関数(やポインタ・参照)を持たないクラスは、 fwriteで書きこんだものなら復帰できるんじゃないの? 言語仕様で保証されてるかは知らんけど。
130 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 20:01
要するに、ストリーム入出力辺りをオーバーロードすればいいのかな?
131 :
X :2000/10/24(火) 21:06
どうしたら、ロケットを飛ばすプログラムかけますか??
132 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 21:55
Cで、 "変数名"="値" と言うフォーマットでファイルにテキストで100個くらい 格納してある値(値は整数と文字列)を、格納用の構造体に格納したいのですが、 スマートな方法はありますか? ファイルをバッファに読み込んで、値の先頭のポインタをptにいれて strtokで「"」をちぎって struct foo bar; bar.hoge = atoi( pt ); ... strcpy( bar.huga , pt ); みたいなのを100回書けばいいってのは分かるんですが・・・。 どうにも冗長すぎるかんじがして。
133 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 22:04
>132 構造体廃止してハッシュを使う。 あるいは配列にしてインデックスでアクセスする。
134 :
名無しさん@お腹いっぱい。 :2000/10/24(火) 22:39
>133 レスありがとうございます。 仕様上、是非構造体に格納したいんです。 ほかの方法にしようとすると、他の人の担当分もいろいろ 改造する必要がでるので。
>みたいなのを100回書けばいいってのは分かるんですが・・・。 そーいう発想する人はプログラム向いてない。
>128 C++なんでしょ。構造体っつっても結局クラス。 ストリームを引数にしたコンストラクタつくりゃれ。 あと、ストリームへのoperator<<つくりゃれ。 それでそのクラスオブジェクトのロードセーブし放題。
マクロを使うと多少楽かも #define SET_S(ident,value) if(strcmp(s,#ident)==0) strcpy(bar.ident,value) しかしこんなソース俺はメンテしたくないな
>132 そのテキストを読みこんでCのソースを吐くツールでもつくれば?
>138 その間に力業で完成するに一俵。
>>134 > 仕様上、是非構造体に格納したいんです。
「設計上」ではなくて?
悪い設計の下でいくらプログラムを頑張っていじくり回したところで
良い物にはならんだろう。
短期的に
> 他の人の担当分もいろいろ改造する必要が
あるとしても、悪い設計を改善した方が結局得になるかも知れない。無論
そのプログラムが使い捨てのプログラムであって、今後ほとんどメンテ
やカスタマイズがあり得ないのならばどうでもいいことかも知れないが、
使い捨てのつもりのプログラムが延々保守され続けるということも、
決して珍しくはないからな...
まず、内之浦か種子島へ逝け。
142 :
名無しさん@お腹いっぱい。 :2000/10/25(水) 20:31
CWinThread::m_bAutoDelete のデフォルト値は何ですか?
143 :
名無しさん@お腹いっぱい。 :2000/10/25(水) 22:30
C++で、大雑把な数値計算の結果を 画面にプロットしてグラフっぽい物を描きたいんですが Basicのlineやpsetみたいに簡単にグラフィックを 扱うことは出来るんですか?
C++では言語中にはグラフィック関係のものはとくに定義はされていない。 しかし、処理系によってはライブラリでサポートされているし、ライブラリの サポートがなくてもOSに(たとえばApiで)サポートがある場合もある。 なんにしろあなたのOSなどの環境がわからないとなんともいえない。
>>143 大雑把で構わないなら、iostreamでキャラクタ文字でもいいんじゃない?
↓こんなの
+----------------------------+------
|******************** hage
|********** hige
|****** huge
|*** hege
|** hoge
あとは、将来グラフィックLIBでも使えるように描画インタフェースだけ揃えておけば良いと思う。C++なら簡単でしょ?
147 :
143 :2000/10/26(木) 06:33
>144 さん win98です。で、コンパイラにborlandのfreeのやつを持ってるだけです。 >なーなーさん(名前じゃなく、呼びかけか…) キャラクタ文字良いですねえ、ほんとに大雑把。 なんかBasicでへっぽこgameを作った時みたいだなぁ。 (冗談でもこういうの好き) お二人とも有り難うございます。 なにしろグラフィックライブラリって概念を今知ったので、 本当に有り難い、名前が分かれば検索も楽ですからね。 それで、「GrWin グラフィクス・ライブラリ」を 手に入れました、とりあえずこいつでやってみます。
148 :
名無しさん@LV3 :2000/10/26(木) 10:25
質問します。 ZIPなどのファイルを解凍したいのですが、ソフトを持ってないし 解凍の仕方がわかりません。 どこか解凍ソフトをダウンロードできるサイトはないでしょうか?
149 :
名無し :2000/10/26(木) 10:34
質問です。 文字列たとえばchar x[10]を初期化するのに わざわざ for(i=0 ;i<10;i++) x=' ' とやらずに、空白で埋める関数などあるのでしょうか? 空白でなくとも一定の文字で文字列をフィルする、という 感じです。
150 :
名無しさん@お腹いっぱい。 :2000/10/26(木) 10:39
>148 www.vector.co.jpで"lhasa"を検索 >149 memset(x, ' ', sizeof(x))
151 :
名無しさん@お腹いっぱい。 :2000/10/26(木) 10:54
ファイルの最後に書かれているEOFという文字は、 具体的にどのような値なのでしょうか?
153 :
>>151 :2000/10/26(木) 11:28
EOF は EOF っつう事だよ。 具体的な数値を知ってどうする? 特殊な組み込み機器でも開発しているんで無い限り、気にするとろくな事は無いぞ
>>151 いわゆるテキストファイルの場合、0x1aをもってEOFとする
場合もある。ということを聞きたかったんじゃないだろうか、
と思うが、153さんが正しい。
155 :
名無しさん@お腹いっぱい。 :2000/10/26(木) 15:26
旧スレが上がってるのでage。
というか、イマドキのOSのファイルシステムにおいて、ファイルの 終端をファイル内のある特定の文字によって管理しているような ものは無い筈だ。 EOFという抽象によって表されるところの、ある特定の文字が実際に ファイルの終端に存在するのではなく、ファイルの最後まで来たら 取りあえずEOFという文字を返すようにライブラリが設計してあるだけ。
>>151 多分、
EOF → End Of File
EOL → End Of Line
この辺から教えないとだめなかんぢが…
こーゆうのはUNIX系OSなら良く出会うので、一度触わる程度してみると良いかも。
158 :
名無しさん@お腹いっぱい。 :2000/10/27(金) 10:51
何処かにSSEを日本語で解説してるとこありませんか? GOOで検索したもののひっかかりません。 MMXなら結構あるんですが。
インテルのpdfにゃ載っとらんの?
161 :
にゃにゃししゃんにゃー。 :2000/10/27(金) 13:16
SDKで作ってるアプリからActiveXコントロールを 使いたいんだけど、ActiveXの解説してるページや 本を見てもMFCかATL前提にしてるのばっかり(T-T) SDKでActiveXコントロール使うのに詳しいページ か本知りませんか? 知ってたら教えて下さい。
162 :
月刊能力不足 :2000/10/27(金) 13:18
メモリが少ない組込み用Cプログラムで、 Cプログラムのスパゲティー化を防ぐには、 どうしたよいでしょうか?
163 :
>160 :2000/10/27(金) 13:36
>>163 なんかそれらしい感じですね、
早速落として読んでみます、ありがとう
165 :
>162 :2000/10/27(金) 14:10
複雑になりそうで、尚且つスピードが要求されるなら、 ASMの方がすっきりする。(経験上)
COMがらみをべたでコード書こうと思うと死ぬよ。 それをやって、文書にして誰かに伝えようと考えている ひとは、おそらく世界に数人いるかいないかだと思う。 さわりだけでいいなら、InsideCOMとかに載ってなか ったかな。
167 :
名無しさん@お腹いっぱい。 :2000/10/28(土) 03:05
VC++のCDのサンプルとか、MSDNにさらっとソースが載っている事があるが。
>>161 ただ166の
>COMがらみをべたでコード書こうと思うと死ぬよ。
には同意。C++でも面倒くさくてやだ。
俺個人は(COMをまともにいじるのは)C#待ち。
168 :
新米ギコ@OSの再インストールはイヤヅラ :2000/10/29(日) 23:15
| ∧ チラリ |Д゚)一寸下がりすぎかな |⊂ | | | U
そうだな、ここはちゃんとあげとかないと 他で暴れ出すやつがいて困ったことになるようだ
170 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 01:33
171 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 05:26
sizeof('c') == sizeof(int) sizeof('c') == sizeof(char) どっちが正解ですか?
172 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 06:42
>>171 Cならsizeof(int)が正解。
C++ならsizeof(char)が正解。
173 :
学生 :2000/10/30(月) 09:48
sizeofと配列がいまいちわからんです。 int a[10]; って宣言されたのを aって書くと&a[0]と一緒でa[0]のアドレスを表すんですよね? それで(sizeof a)/(sizeof (int) ) とやると、配列の個数の10が出ます。 ってことはaと書いた場合はa[0]のアドレスとa[9]までの アドレスの長さ?(この辺がさっぱりです) が入って無いとおかしいですよね? なんか根本的に間違ってそうですが・・・、どうなんでしょか。
174 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 10:38
>173 int a; だとaは実体、&aはaへのポインタ int a[10]; だとaでaへのポインタ、&a[0]は先頭要素へのポインタ int *p = a; の場合 *(p+1) == a[1] たぶんaと書くだけでa[10]全体を意味するものと思ってるみたい だけど、そうではない。
175 :
>173 :2000/10/30(月) 10:47
>aって書くと&a[0]と一緒でa[0]のアドレスを表すんですよね? >なんか根本的に間違ってそうですが・・・、どうなんでしょか。 正確には、式中に現われる型「aの配列」という左辺値(*1)は 配列の最初の要素を指すポインターに意味が格下げになる。 *1 3つの例外をのぞく。 1)配列がsizeofの引数となるとき 2)アドレス演算子&の引数となるとき 3)char型の配列を文字列リテラルで初期値するとき。 今回のケースでは、例外1)に相当する為 aの配列は配列の最初の要素を指すポインターに格下げにならない
176 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 20:16
ついにスーパーハッカーになることに決めました。 コンピュータ悪のマニュアルを買ってきたんですが、ハッカーの必衰事項に "C言語でプログラミングできるだけの知識(ANSI CだけでなくC言語全て)" とかいてあるんですが、ANSI Cの他に何があるんでしょうか?
K&Rの事か? つーか、なんかその著者の書き方もナニだな...
ちなみに、本気でcrackするなら(そのホストで使ってるCPUの)asmの知識は 必須だと思うがな。特にbuffer overrunとか突いて無理くりプログラム 実行するみたいな奴はさ。crackコードそのものはCでもいいだろけど。
179 :
にょだ :2000/10/30(月) 20:46
GCCでもMINI-C(笑)でもANSI非準拠のコードはかけまっせ
180 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 21:01
確かにスパーハカーめざすならアセンブラからやったほうが よさそうだな。でも必衰事項だからどうでもいいかもしれん。
181 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 21:08
システムコールとかも分かってないとダメね。
182 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 21:15
C++のマルチスレッドに関してなんですけど、あるクラスがあって、クラ ス変数としてあるポインタを宣言し、コンストラクタでメモリを割り当 ててます。そして、そのメモリにアクセスするメンバ関数が別スレッド から起動されます。このようなやり方は正しいんでしょうか…。
183 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 21:23
正しくない訳ではないが、ちゃんと同期取れてないとおっかないなそれ。 コンストラクタ中でエラーの発生する恐れがある処理するのもナニだし。
184 :
( ,,゚Д゚)ノ :2000/10/30(月) 22:38
>>182 コンストラクタの処理は別の話として、
一つのインスタンスのメソッドがいろんなスレッドから呼ばれて、
メンバ変数をごにょごにょするってのは普通だ!
でも
>>183 の指摘通り、同期処理は必要だ!
185 :
173の学生 :2000/10/30(月) 23:08
>174さん >int a[10]; だとaでaへのポインタ、&a[0]は先頭要素へのポインタ これって言い方は違うけど全く同じ事ですよね? って話振ろうとしたけどその前に実行してみた。 a == &a[0];は1でした。 (もちろんint *p = a; int *q = &a[0]; も一緒でした) >たぶんaと書くだけでa[10]全体を意味するものと思ってるみたい いえいえ、そうは思ってないからsizeofに入れたとき「なんでだ?」 って思ったんですよ。 >175さん すげー、全然知らなかったです。しかも「なんで?」って今まで思わないで やってきたのがさらに怖いですね。 それとsizeofがどうやって書かれているか見てみたいんですが見られますか? コンパイラはbccです。 アドバイスどうも>ご両人
186 :
名無しさん@お腹いっぱい。 :2000/10/30(月) 23:39
>>178 その手法でいつも思うんですが、プログラムカウンタを
つっこんだコードのところに飛ばすのは、どうやるんですか?
> sizeofがどうやって書かれているか sizeofは関数でなくて演算子だからね。 たいていの場合コンパイル時に決定されちゃうし‥
>187 >たいていの場合コンパイル時に決定されちゃうし‥ コンパイル時に決定できない場合なんてあるのか? >186 void test(void) { int a[1]; a[1] = 0; } あ、「絶対ジャンプ」だ・・・
発展形。これを呼び出せば思い通りの番地にジャンプ出来そう。 void AbsoluteJump(unsigned Addr) { unsigned a[1]; a[1] = Addr; }
>>189 >ジャンプ出来そう。
テストしてから出直してこい。
//bcc32なら動いたけど、ebpを保存してないと駄目かも void pascal AbsoluteJump(unsigned Addr) { unsigned a[1]; a[2] = Addr; } void jumpto() { printf("ジャンプしたよ\n"); } void test(void) { printf("ジャンプするよ\n"); AbsoluteJump((unsigned)jumpto); printf("ジャンプしてないよ\n"); } void caller(void) { printf("呼び出すよ\n"); test(); printf("呼出元に戻ってきたよ\n"); } int main() { caller(); printf("mainに戻ってきたよ\n"); return 0; }
ごめん、もうどうでも良くなってきた。汎用性無いし。 お騒がせしてすみません。
193 :
名無しさん@お腹いっぱい。 :2000/11/01(水) 04:54
mallocとかで動的にメモリ取れなかったときって if (p = NULL) でキャッチしたとき、exit (0)で終了?exit (1)で終了? それともOSにもよるし、たいして変わらない?
>193 それはOSというよりプログラム仕様に依存する。
195 :
193 :2000/11/01(水) 06:49
じゃあ、メモリ確保出来なかったんで終了しまーす。 ってときはどうですか?
それが「エラーで中断」だと思ったら1以上を返せばええんでない?
>if (p = NULL) if (p == NULL)
198 :
名無しさん@お腹いっぱい。 :2000/11/01(水) 10:51
stdlib.hをincludeしてEXIT_SUCCESSかEXIT_FAILUREを 使ってくれ。1だとか0だとか言われても判らん。
199 :
名無しさん@お腹いっぱい。 :2000/11/01(水) 15:25
CString tmp = "10:10:00"; これをCTime型に変更したいのですがどうすればいいですか?
200 :
母を訪ねて名無しさん千里 :2000/11/01(水) 16:15
セマフォ、ミューテックス、イベント、クリティカルセクション なんかの同期オブジェクトがありますよね。 そいつらの待ち行列って普通はQueueになってると思うんスけど、 QueueになってないOSって存在するでしょうか? (;´Д`)ノ つまり、ほんとに待ってるヤツらがじゃんけんで取りに行くかんじで、 ずっと負けつづけるヤツとかが発生しうるみたいな
>>199 sscanfなどを用いて自分でparseするか、
COleDateTime::ParseDateTimeを利用してCOleDateTime型に
変換した後に、(SYSTEMTIME型経由などで)CTimeに変換する。
しかしParseDateTimeは日付部分も含んでいる必要があった
かもしれない。
"HH:MM:SS"形式と決まっているのならsscanfを使う方が良いだろう。
202 :
名無しさん@お腹いっぱい。 :2000/11/01(水) 20:35
UNICODE関連の事なんですが、(wchar_t)0xfffeをファイルに出力 しようしても、バイナリモードだろうがテキストモードだろうが 出力できません。それに、wofstreamとofstreamの文字列出力が まったく違うように見えないんですが、ワイド文字をファイルに 出力するにはどうしたらいいのでしょうか。
203 :
ド忘れ :2000/11/02(木) 00:33
"data\\*.bmp"みたいにワイルドカードで指定されたファイルを 検索するのってどうやってやれば良いんでしたっけ? 最近はperlばっか使ってたのでド忘れしてしまいました。 環境はwin98/2000です。どなたかご存知の方がいらっしゃったら教えてください。
204 :
>203 :2000/11/02(木) 00:41
FindFirstFile/FindNextFile/FindCloseFile
>>201 レスありがとうございました。
参考にさせていただきます。
(年月日が必要なのをすっかりわすれてました。)
206 :
名称未設定 :2000/11/02(木) 00:54
Perlをあらかじめコンパイルして使用する事は可能なのですか?
207 :
>206 :2000/11/02(木) 02:50
perlcc
208 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 03:40
シンプルなゲーム(アプリケーション)をつくりたいと思っている馬鹿厨房です。 DelphiとC++どっちがいいでしょうか?
自分で自由に操れる方
210 :
208 :2000/11/02(木) 03:56
あべし
211 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 03:59
ちなみに、Delphiは「環境」でC++は「言語」だ。
212 :
208 :2000/11/02(木) 04:18
DelphiとC++ビルダーってことで。 っつーかもういいや。厨房なのでここで挫折しておきます(はやすぎ
213 :
203 :2000/11/02(木) 04:21
214 :
飲む打つ買うさん :2000/11/02(木) 05:49
ODBCをインストールしなきゃいけないの?
215 :
>208 :2000/11/02(木) 10:00
一から勉強するならDelphi CかC++を知ってるならC++ Builder
216 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 20:09
C++で、テンプレートのクラスを作り、メンバ関数を定義したのですが、 リンカーエラーが出ます。 (環境:w2k, VC++6.0Sp3) --- CMona.h --- template <class T> class CMona { public: void giko(T a); }; --- CMona.cpp --- #include "CMona.h" template <class T> CMona<T>::giko(T a) { cout << "逝ってよし" << endl; } --- main.cpp --- #include "CMona.h" int main() { CMona<int> a; a.giko(5); // <--- ここでリンカーエラー return 0; } 「プログラム言語C++第3版」のP.412を見ると 「exportするといいよ」って書いてるんですが、 VC++にはまだこの予約語は実装されていないようです。 どうすればリンクできるのでしょうか。。。?
217 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 20:21
>216 VCでは、テンプレートを使ったクラスの定義と実装を別のファイルで行ったら リンクできないんじゃなかったっけ? おれも昔それで悩んだことあるぞ。
218 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 20:25
すいません。一応出来ました。
前述の本のP.413を見ると
「exportを使わないんだったらheaderの中にでも書けよ」
って書いてるからCMona.hの中にCMona.cppの内容をコピペしたら
リンクが出来ました。
また、iostreamとかの中を見ると同様なことをやってたので
これでよしとします…
>>217 さん
納得できないけど、しょうがないみたいですね。。。
あきらめます。VC++7.0でexportキーワードのサポートを待ちます。。
どもです。
219 :
217 :2000/11/02(木) 20:25
>217 別にVCだけの話ではないな。 それと、テンプレートのを使ったクラスって書いたけど、関数でもそうだな。
220 :
217 :2000/11/02(木) 20:29
>218 テンプレートがどうコンパイルされるかを考えれば、 リンクできないのが当たり前じゃないですかね。
221 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 22:12
テンプレートのexport使える環境を見たことないけど、 リンクできないのが当たり前ってことはないんじゃない。 VC++23.0くらいになればきっとできてるよ。
222 :
名無しさん@お腹いっぱい。 :2000/11/02(木) 22:24
jpgファイルの画面サイズを取得するにはファイルのどこを参照すればよいのですか
224 :
名無しさん@お腹いっぱい。 :2000/11/03(金) 03:12
>>223 えっ!どれ?
>>204 は全然違うような気が・・・
jpgファイルの画面サイズ(画像サイズだよね?)を取得する方法知りたい。
jpgってフォーマットによってサイズの書かれてる位置(バイト)が違うから面倒。
BmpやGifやPNGは位置決まってるよね。
226 :
!217 :2000/11/03(金) 05:26
>>221 テンプレートって、型が決まるコンパイル時にしか
実行コード作れないから無理。
227 :
名無しさん@お腹いっぱい。 :2000/11/03(金) 06:01
>>226 テンプレートにはパーサも含まれてるから、がんばれば不可能ではない、です。
228 :
名無しさん@お腹いっぱい。 :2000/11/03(金) 06:06
あ、スライシングの方法によるか。
229 :
名無しさん@お腹いっぱい。 :2000/11/03(金) 06:07
230 :
>226 :2000/11/03(金) 10:22
今のコンパイラ・リンカの枠組で考えると難しいけれど、これを一緒に してしまえばいいのでは。つまりリンク時に、必要な部分のコンパイルを 自動的に行なうという事(リンカとは呼べない?)。すでにテンプレート で生成される長大なシンボル名を取り扱うのは限界が見えてきている。 このままでは破綻すること必至です。
232 :
名無しさん@お腹いっぱい。 :2000/11/04(土) 07:51
あ、3より下だったんで、あげておいた。
233 :
名無しさん@お腹いっぱい。 :2000/11/05(日) 02:14
libpng の使い方で教えてほしいことがあります。 png_set_read_user_transform_fn で設定するコールバック関数の引数のうち、 三番目の png_bytep data の意味が分かりません。 処理中の行のデータを入れたバッファらしいのですが、 例である pngtest.c の count_filters 関数をみると *(data-1) で適用したフィルタの種類を取得しています。
>>233 わたしはいつもSusiePluginのインタフェース使ってるから
他のはあんまり知らないんですが、
多分ここで聞くより何倍もの正確な返答が期待できる手段として、
まず、そのライブラリの作者にコンタクトとかしないわけですか?
マニュアルとかにメールアドレスぐらい書いてあったでしょ?
丁寧に書けば教えてくれると思いますよ。
他にもホームページが存在すれば、そこの掲示板に書込むとか…
フリーソフトの作者達はユーザの確認ができただけでも嬉しいんだから。
>>234 すみません。作者は外国人なので英語でメール書かなきゃいけないんです。
自分のへっぴり英語で書いて伝わるかどうか自信がないので…
とりあえず資料がないか検索しなおしてみます。
BCC5.5のnewの挙動について int *p; p = new int[5]; //(a) delete [] p; は問題ないのですが、 (a)を p = new (int)[5]; //(b) とすると 'int' 型は 'int *' 型に変換できない のコンパイルエラーになってしまいます。 p = new (int*)[5]; //(c) とするとコンパイルが通ります。 この挙動はどう理解したらいいのでしょうか? 演算子の優先順位辺りかとも思ったのですが、理解できませんでした。 (ちなみに GCC では、(b)は通って(c)はアウトでした。)
237 :
D使い :2000/11/05(日) 04:06
あ、sagaってる・・・
238 :
名無しさん@優しい人 :2000/11/05(日) 04:41
>>235 あげといてやるよ。
ちなみに236についは判らなかった。
所詮タダ、って事か?
239 :
名無しさん@優しい人 :2000/11/05(日) 04:49
おっと、238の235は237のまちがい。 ぐぞ、意識が…
240 :
>236 :2000/11/05(日) 06:58
私もだいぶ前からそれが謎なんですよ。 どうも(int)を intへのキャストと解釈しているのではないかという気もします。 int **pp;の場合もそのようになりませんか?
241 :
D使い :2000/11/05(日) 12:09
>240 ありがとうございます。 バグで片づけるのは簡単なんですが、 もしかして「最新のANSI C++」ではこうなのかなぁ、とか勘ぐってました。 >どうも(int)を intへのキャストと解釈しているのではないかという気もします。 >int **pp;の場合もそのようになりませんか? 最初に気づいた(というか聞かれた)のは char **p;だったので 単純化して書き込んでみました。同様です。 結局どうなんでしょ?バグなのかなぁ。
242 :
名無しさん@お腹いっぱい。 :2000/11/05(日) 13:44
今C++を勉強しているのですが、入門書に 「Cのマクロ機能は副作用を起こす可能性があるので、それを解決する為にC++ではインライン関数が用意された」 とかいてあるんですけど、マクロの副作用ってどんな事なんですか?
#define square(x) (x)*(x) int a,b; a=3; b=square(a++);
244 :
副作用じゃないけど :2000/11/05(日) 14:31
b=square(a; のように括弧を閉じ忘れたときに とんでもない所にエラーがでてしまい エラー箇所を特定しにくい。
245 :
名無しさん@お腹いっぱい。 :2000/11/05(日) 15:18
> 242,243 結果は、 b=12 , a=5 になる。 関数だと、 b=9 , a=4 になるね。 親切に教え過ぎ?
246 :
通りすがり :2000/11/05(日) 16:02
>>233 作者じゃないからあれですけど
三番目の png_bytep data は内部の行バッファ row_buf + 1 を指します。
なんで data[-1] = row_buf[0] に意味があるかというと、IDAT チャンクの構成上
先頭にフィルタタイプがついてるんですな。行を展開した状態で先頭についてる
のでそれをそのまま使ってるわけです。ちなみに行ポインタの指す場所に格納する
時点で先頭のフィルタタイプは省かれます。
pngread.c の png_read_row(), pngrutil.c の png_combine_row()
あたり見て。
この使い方は undocumented なのかな。気をつけた方がいいかも。ウソかもよ。
ギコ猫何処逝った? 俺は寂しいぞ
248 :
新米ギコ@代理 :2000/11/06(月) 03:10
|
|
| ∧
>>247 呼んだ?
|Д゚)
⊂|
| `〜
|∪
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
249 :
新米ギコ@代理 :2000/11/06(月) 03:53
∧ ∧ カタ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (,,゚Д゚),__カタ_ _< ホンモノよ、戻ってコイ ./ つ_|| ̄ ̄ ̄ ̄ ̄| \_____________ (, |\|| VAIO | '\,,|==========|
250 :
名無しさん@お腹いっぱい。 :2000/11/06(月) 04:07
a=3; b=(a++)*(a++); のときのbって処理系依存じゃないの?
251 :
新米ギコ@代理 :2000/11/06(月) 04:10
∧_∧ 少なくとも247は帰ってくるのを待ち望んでいるぞ。 _(゚д゚ )__ /| ∪∪ /\ /| ̄ ̄ ̄ ̄|\/ | |/  ̄ ̄ ̄ ̄
252 :
新米ギコ@代理 :2000/11/06(月) 04:11
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < おれもな! |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
253 :
新米ギコ@代理 :2000/11/06(月) 04:19
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄| <
>>250 その話はまた明日にしようや。
|\⌒⌒⌒⌒⌒⌒\ \
| \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ |⌒⌒⌒⌒⌒⌒|
\ |_______|
254 :
新米ギコ@代理 :2000/11/06(月) 04:21
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < じゃ、おやすみ |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ̄ ̄( ゚Д゚) ̄ ̄| < おはよう! |\⌒⌒⌒⌒⌒⌒\ \ | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ |⌒⌒⌒⌒⌒⌒| \ |_______|
>>246 おおーありがとうございます。
なるほどIDATを展開したそのままがバッファに入るんですね。
PNG仕様をきちんと覚えないといけないな。。。
教えてくださったことを手がかりにソースを追っ掛けてみます。
#2chの懐の深さを改めて実感した今日このごろ
257 :
C言語見習 :2000/11/06(月) 15:06
C言語初心者です。文字列とポインタのところで詰まってます。 過去ログとかいろいろ読んだのですがいまいち理解できません。 char giko[] = "giko"; char * neko = "neko"; の扱いの違いがいまいちぴんときません。 たとえば、 int f(void) { char giko[] = "giko"; char *neko = "neko"; strcpy(giko, neko); /* OK? */ strcpy(neko, giko); /* ダメ? */ : return 0; } ということです。 nekoがポインタなのは理解してます。 で、nekoの先の文字列は書き換えても安全なのでしょうか? また、gikoに格納されている文字列は書き換えても安全ですか?
>nekoの先の文字列は書き換えても安全なのでしょうか? nekoの先の文字列は書き込み禁止のメモリーに保存されるかもしれない。 だから無事に値を変更できない可能性がある。 >gikoに格納されている文字列は書き換えても安全ですか? gikoの配列サイズより小さい文字列の為今回のケースでは安全 gikoの配列サイズより大きい文字列をstrcpyした結果は保証されない #ちなみにsizeof(giko)はいくつだかわかってる?
259 :
C言語見習 :2000/11/06(月) 16:35
>258 sizeof(giko) == sizeof(char)*5 で、{'g', 'i', 'k','o','\0'};で初期化ですよね。 char neko[] = "neko"; char * cat = neko; ならcatは neko\0 の入ったchar [5]を指すのかな。だとすると、catは書き換えokですね。 見た目同じようでも、けっこうちがいますね。むずかしい…。
あぼーん
261 :
名無しさん@お腹いっぱい。 :2000/11/06(月) 18:23
関数プログラミングのHaskellについての質問なんですけど、 例えば下のようなテーブルがある場合、 '.'がスペースだとすると tm = [".X..\n"] ++ ["..X.\n"] ++ ["X..."] >Main putStr tm .X.. ..X. X... このテーブルをString -> (Int,Int,Int)のような型に変えて表示したい場合、 ((x,y,z) x=列 y=行 z=もし'X'があるなら1、ないなら0) (0,0,0),(0,1,1),(0,2,0),(0,3,0) (1,0,0),(1,1,0),(1,2,1),(1,3,0) (2,0,1),(2,1,0),(2,2,0),(2,3,0) いったいどのようなファンクションを作ったらいいのでしょうか? とりあえず頑張ってこんな↓アウトプットが出るファンクションを作ったんですが、 [[".X.."],["..X."],["X..."]] 後はこれをどうやってこんな↓風なアウトプットを出すのか知りたいのですが、 [[(0,0,0),(0,1,1),(0,2,0),(0,3,0)],[(1,0,0),(1,1,0),(1,2,1),(1,3,0)],[(2,0,1),(2,1,0),(2,2,0),(2,3,0)]] どなたかご存知でしたら教えて下さい。
char * giko ="neko"; char * mona ="neko"; としたばあい、giko==monaは成り立つでしょうか?
処理系(のコンパイルスイッチ)に依存するはず。 一般には成り立つ保証はない。 char * giko ="neko"; char * mona = giko; とすれば成り立つ
264 :
名無しさん@お腹いっぱい。 :2000/11/06(月) 18:51
>>262 成り立つこともあるし、成り立たないこともあるかと。
const だったら最適化(giko==mona)することがあると 聞いたが、うーむ。
>263>264 ああ、やっぱりどっちもあるんですね。ありがとうございます。 コンパイルスイッチしらべて見ます。
> char * giko ="neko"; > char * mona ="neko"; > としたばあい、giko==monaは成り立つでしょうか? Cの規格では保証されていません。(JAVAの場合、保証されている) たとえ、一致したとしても処理系依存の方法であり、 あまりお勧めできません。
定数確保して各ポインタごとにアドレス代入したほうが安心だろうな。
>265 えと、それはchar const * と char * constのどっちのことしょうか? >267 はい、処理系依存でかまいません。 あ、処理系はVisual C++6です。(giko==mona)を保証するスイッチが あったら、それを使ってみます。 古いソース(DOS用、コンパイラは不明(^^;)からのコンバートで、 エラーの内容を示す文字列を受け取って==で比較してる (If(ret=="Error:File write fail.")みたいの) ところが沢山あるので、このままにしておきたいもんで。
270 :
名無しさん@お腹いっぱい。 :2000/11/06(月) 19:35
strcmp 使え
>>269 /GFまたは/Gf。つうかCLのマニュアル嫁。
272 :
名無しさん@お腹いっぱい。 :2000/11/06(月) 22:35
>270 同じく。使え。
273 :
名無しさん@うんこちんちん :2000/11/07(火) 00:43
ずぶの素人がプログラムを始めるにはどんな言語がいいですか? 今手元にはVC++とVB6があります。 とりあえずPerlかじってたので、変数の使い方等の最低限の理解はあります。
VC++覚えるのが良いと思うけど、簡単なのはVBかな。 いきなりC++やると混乱する人が多いそうなのでCから始めたらいいのでは?
275 :
新米ギコ@代理の代理は本物か? :2000/11/07(火) 01:00
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) <
>>250 複数のコンパイラで挙動が違ったら実装依存だ!
Π ̄ ̄ ̄| \
|つウソデス()  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
∪∪
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) <
>>262 BCBは最適化のオプションに存在した!
Π ̄ ̄ ̄| \
|つ坊ランド()  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
∪∪
∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,,゚Д゚) <
>>273 目的が無い奴はすぐに挫折するぞ!
Π ̄ ̄ ̄| \
|つ C++ ()  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
∪∪
>strcmp使え いやぢゃぁ
277 :
名無しさん@お腹いっぱい。 :2000/11/07(火) 01:57
/Gf /GFつかっても複数のファイルにまたがった場合は成り立たないと思うが…
>276 ハッシュ表に登録しておいて、"唯一"の文字列へのポインタに変換するのは非効率?
ていうか、 >> 269 読む限りではDOSで動いていたプログラムをportするって話じゃないのか? だったら、何でそれを一々strcmpとかhashとかでリライトしなければならない のか俺には皆目わからんぞ。 すなおに/GFとか/Gfでやってみろよ。で、駄目だったらその時に考えれば いいだろ。
>>273 そうだな。でもそれ文字列のポインタと違う。ハッシュ値だ。
ハッシュ値を持ち回る様にすれば、文字列走査は1回程度で済む
(衝突時は複数回必要)から、うまくすればとても高速に比較/検索できるぞ。
forループで比較するのとは訳が違うからな。
C++ではmapコンテナで、Cではハッシュテーブルは自分で組む必要がある。
やっとまともな答えが出た感じ。
>>262 ,269,279
>としたばあい、giko==monaは成り立つでしょうか?
結果として成り立つ場合もあるかもしれないが、
それは単なる、ある処理系のデータセグメント最適化の副作用だ。
たまたまだ、と考えろ。
常用はするな。信用もなくすぞ。
280の273は278のまちがい。
282 :
おしぇてぎこちゃん :2000/11/07(火) 03:44
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | いつものように2chそーすを見ようとしたらワードパッドが | あぶのーまるたーみねぇしょんとかいって終了してしまうのですが \_____ _______ ∨ C∧ ∧ ___ ○(゚Д゚#) /◎\……C| \ ==============================================
283 :
>262 :2000/11/07(火) 03:58
/Gfとかやってだめだったら素直にエラーコードにでも書き換えれ。
文字列定数同士の比較にしか使わないなら、 定数を1個所(例えばconst char *の配列)にでもまとめておけ。 そうすれば、どの処理系でも期待した動作をするぞ。 #ギコ猫帰ってきたか。猫好きな俺も帰ってきて嬉しいぞ。 #ピカ虫に負けるな。
285 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 22:10
BOOL と bool の違いって何ですか?
286 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 22:43
ギコ猫っ何だよ。
287 :
名無しさん@お腹いっぱい。 :2000/11/08(水) 22:47
>>285 BOOLは大文字で、boolは小文字です。
あぁ、面白くない。鬱だ、氏のう・・・。
289 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 00:34
BOOLはユーザー定義型。ライブラリ等で見かけるBOOLはたいていintをtypedefしたもの TRUE,FALSEは#defineやenumで独自に定義されている boolは標準C++の組み込み型。 true,falseはキーワードとしてC++の中に組み込まれている
290 :
名無しさん@優しい人 :2000/11/09(木) 00:53
291 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 01:28
普通はmapの実装は平衡木だね。 STLの規約さえ満たせば、ハッシュで実装しても良いはずだけど。
任意の型Tに対して有効なハッシュ関数を書いてみてくれよ。
>>289 C++のtrue/falseはちゃんと実装してない処理系が多いので、
あんま使えないね。
実際、Cの非0/0っていう確実な方法が既にあるからそっちしか使わないし…
>>291 規約ってなんかあったっけ。
CマガのP.J.プラウガーの翻訳記事とかで書いてそうだな。(藁
>>292 既に実装して持ってるが、お前には教えてやらん。
↑のギコ猫達は全部偽者か…
295 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 04:53
「意味論的に」等しいobjectに対して、同じ値を返すようなhash関数 でなければ意味が無い。 例えばchar*であれば、文字列として等しければ同じhash値が 得られる必要がある。 で、俺が書いたのは、そんなテンプレート関数を実装するのは ようするに不可能(したがって、mapをhashで実装することは 出来ず、外部からhash関数を与えてやるようなインタフェイスが 汎用ハッシュコンテナの設計上は必要)ってこと。 > 既に実装して持ってるが、お前には教えてやらん。 というのがどんなものだが知らんがな(苦笑)。
297 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 14:05
BOOL Ellipse( LPCRECT lpRect ); で書いた円の線がどのポイントを通っているか、分かりますか? やりたいことは、内接する、5角形を書いたりしたいんです。
299 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 17:20
あのぅ、XML使ってページ作ってみた(XML+XSL)んですけど、 すべてのコードみられてしまうんです。 これじゃ、データを置いておいて、Perlを使って吐き出したほうが全然ましです。 サーバーサイドで処理して、HTMLで公開したいのですけど、 どうすればいいのですか? XMLってどこで聞けばいいの?
>>299 何がやりたいのかよくわからんが、XMLで書くって事は要するに
「ナマのXMLデータをクライアント側でどうとでも好きにしてくれ」
ってことじゃないのか。
301 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 17:57
>何がやりたいのかよくわからんが 可能性を実験しているのであります。 >ナマのXMLデータをクライアント側でどうとでも好きにしてくれ 好きにされちゃ、いやなのねん。 一生懸命書いた掲示板のソース公開しないでしょ?それといっしょ。 あと、IE使っていない人にも、表示させたいじゃん。
302 :
吾輩は名無しさんである :2000/11/09(木) 18:15
XTにXerces組み合わせて手元で変換したら?
303 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 19:28
XTって聞いたことあるな。 Xercesとは?手元で変換とはなんぞや? 詳細きぼーん。
304 :
名無しさん@お腹いっぱい。 :2000/11/09(木) 22:09
SGI_STLにはhash_mapなんてのがあるんだ・・・。 ちょっと興味あり。 ところで、SGI_STLではreverse_iteratorの実装ってどうなってるの? ISOに沿った実装だとiterator_traitsがVCでまともにコンパイルできないから、 その辺がどうなっているのか知りたいっす。
>>292 ああ、勘違いしてたよ。
ハッシュテーブルの入れ物の事じゃなくて、ハッシュ関数ね。
>>298 >耳学問厨房ウザイ
そんな突っ込みしか入れられないお前はイタイ(藁
306 :
295 :2000/11/10(金) 00:16
307 :
ドキュソ先輩のドキュン後輩 :2000/11/10(金) 00:52
Linux(赤帽6.2)なんですが、 --- struct TEST { char moji[ 3]; short suji; }; --- をsizeofすると6になる。5にならんか?と先輩に聞かれた。 6になる理由と5にできるのならやり方を教えてください。
308 :
304 :2000/11/10(金) 01:37
>>306 レス、ありがとうございます。
僕が気にしていたところは、どうやらマクロで切り抜けているようですね。
なんにしても、コードが読みやすくて良い感じです(^o^)。即ゲット!
309 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 01:38
mojiの後ろあたりで、4byte境界に合せられてるだけじゃないの。
310 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 01:41
>>307 詳しくは「アライ[ン]メント」、「境界」とかで検索してください。
ほとんどのコンパイラは、奇数アドレスのアクセスには時間が掛かる、
というような理由で、構造体のメンバを、2の倍数、またはそれの乗数や
レジスタサイズの境界になるように配置します。
解決方法は存在しますが、処理系毎に異なります。
(よって、処理系依存なコードになります。)
メンバの位置が重要で無ければ、サイズを気にするのはやめたほうが
良いですよ。
これでわかんなければ、Linuxのコンパイラ(gcc?)に詳しい人を待ちましょう。
311 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 01:47
>>307 構造体のパック問題というやつですな。
構造体[バウンダリ|アラインメント]
あたりのキーワードで検索してみませう。
先輩はドキュ「ソ」で、後輩はドキュ「ン」。
この違いが気になる今日この頃。
313 :
ドキュソ先輩のドキュン後輩 :2000/11/10(金) 03:23
>>310 ,311
ありがとうございます。とりあえず説明できるようになりました。
「ソ」と「ン」は、ひねっとかないと叩かれるかなと思っただけで意味はありません。
314 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 04:42
「10件ぐらいのcase分を使って 判定後、それぞれの処理関数を呼び出す。」 というコードを書いたんですが 遅くなるからという理由で、 飛び先テーブルを使う方法に書き直させられました しかも2分木(だっけ?)検索付き。 個人的には、10件ぐらいいーじゃねーか、とか わざわざ読みにくくしてどーする、とか思ったんですが、それは置いといて。 最近のCPUだと命令先読みとかキャッシュの関係で case使った方が逆に速くなるような気がするんですが実際どうなんでしょうか? ちなみにSH3使ってます。
315 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 06:20
先生に尋ねてください。
言い方キツイが教科書と先生に尋ねればわからんかな? 答えは出せるがそれじゃ勉強にならんだろ。 どの程度までならわかるかを掲示せよ。
int douyo(const int *x,const int *y) { char sz[9]; printf("%dより%dの方が小さいなら1、大きいなら-1、等しいなら0を入力しやがれ! ",*x,*y); fgets(sz,sizeof(sz),stdin); return atoi(sz); } int main(void) { int array[10]={17,3,4,9,5,2,3,1,32,31}; qsort(array,sizeof(array)/sizeof(int),sizeof(int),douyo); }
319 :
>314 :2000/11/10(金) 11:32
コンパイラがジャンプテーブルを作っていてくれたりしますので 可読性の意味からもcase文で宜しいかと。(ラブコンプレックスって面白いねー)
320 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 11:56
>>319 検索付きってことは等差数列じゃないんでしょう。
だったらテーブルジャンプにはしてくれないと思うぞ。
321 :
315 :2000/11/10(金) 13:13
>316 先生がいるのなら、尋ねません。 >317 配列が理解できていません。 仕組みは理解できるのですが、 実際に使うとなるとまるでダメです。 >318 さっそく試してみます。ヽ(´▽`)ノ ありがとうございます。
データ圧縮とデータ伸張は、どっちが難しいですか? アルゴリズムは、構成済み。
323 :
ミトコンドリ子 :2000/11/10(金) 13:58
>>314 そういうときは論より証拠。
小さいテストプログラムを書いて、プロファイルとってみればいいんじゃ
ないかしら。
で、速度差が無視できる程度なら「読みやすいからswitch caseにしたい」
と提案したら?
324 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 15:29
>>314 >最近のCPUだと命令先読みとかキャッシュの関係で
>case使った方が逆に速くなるような気がするんですが実際どうなんでしょうか?
>>323 がおっしゃるように組んでみて速度を比較するのがベストでしょうね。
僕の浅い経験からは。。。どっちがいいとも言えない。
ただ、疑問なのはなぜ、binary searchを使うのか。
switchで片がつくやつなら関数ポインタの配列に入れといて
直接indexにすればいいと思いますが。。
switch(a)
case0: ....
case1: ....
case2: ....
なら(array[a])();
みたいな。。
325 :
名無しさん@お腹いっぱい。 :2000/11/10(金) 16:57
>>324 case 34:
case 678:
case 1111:
とかなんでしょ。まあ結局二分検索のほうが遅いと思うけど。
326 :
>322 :2000/11/10(金) 23:32
アルゴリズムによるとしか言えない。 けどだいたい 圧縮>=展開 だな 圧縮より展開のほうが大変なアルゴリズムは寡聞にして聞いたこと無い。 バックアップ用なら使えると思うんだけど。
>326 BlockSortを絡めてると展開の方が面倒じゃない?
328 :
ぴろ :2000/11/10(金) 23:58
なんか圧縮の話題が出てるのでひとつ。 一時期、メモリの有効活用に、冗長と思えるプログラムの データを圧縮して小さくして、メモリに格納しておきたいと 思った事がありました。プログラム上で使用するので、あまり遅い 展開ルーチンは使えないかなー、とか思ってたんですが。 ある程度のランダムアクセスができる特許関係の問題が無い 圧縮方法またはアルゴリズムってありますかね? 組み込み用途で使えそうなやつ。
329 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 02:50
BPE(Byte Pair Encoding)はランダムアクセス可能で エンコーダもコンパクトだった。 ただ特許関係はよく知らない。
330 :
ぴろ :2000/11/11(土) 03:22
情報ありがとうございます。 BPEですか。調べてみます。 あ、ランダムじゃないやつでもヘッダ情報とかが小さくて済むなら、 メモリブロック単位に分けるって方法でもよさそうですね。
331 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 07:51
BPEもブロック単位の圧縮方式でしょー。 あと、伸長はLZ77よりも高速(圧縮率も同程度)だけど 圧縮がめちゃめちゃ重いですよ。平気で数時間とかかかります。 ゲーム方面でよく使われてました。 今はボトルネックがCD-ROM/DVD-ROMにあるから もうちょい事情が違うと思う。
JAVAで人為的にメモリを確保することってできる?
333 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 16:15
>>332 Cで書いたのを呼び出せば出来るんじゃない?
malloc( XXX);
334 :
499 :2000/11/11(土) 16:53
初心者です。 プロトタイプについての質問です。 文字列をあらわす関数をxyz(j)としたときなぜ次のプログラムは間違いなんですか? #include <stdio.h> #include <string.h> char j[80]; int i; char xyz(j); int main(void) { printf("文字列を入力してください: "); gets(j); char xyz(j); return 0; } char xyz(j) { for(i=0;i<=strlen(j)-1; i++) printf("%c", j[i]); }
マルチは氏ね
336 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 17:49
499=335
337 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 23:09
Win32でmicrosecまで測るにはどうすればいいですか? unixならgettimeofdayが使えるのに。
時刻ならGetSystemTimeとか、 時間差だけならtimeGetTimeとか。
時刻ならGetSystemTimeとか、 時間差だけならtimeGetTimeとか。
ごめん、2重になっちゃった。
>>337 QueryPerformanceCounter
QueryPerformanceFrequency
かな?
342 :
名無しさん@お腹いっぱい。 :2000/11/11(土) 23:49
Windowsはリソースの読込みはできますが、 書き込みもできるんでしょうか? (Macは読み書き両方できるらしい) できるならやり方を教えてください。
338-340さん thanksです。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ @ ` � タ ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @ ` � タ ・@ ` � タ ・ @`�タ・ @`�タ・@ ` � タ ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`�タ・ @`・・・ ・ 、・ 、# 、/ 、k 、w 、・� 、ッニz <u闕・<「阮・V3z �・ >z tθ ・?rz・z 舩・テQ:・tア�鎹 ・:シtア錣 ・:・tア・ ・旧;騁・ u9x tア・ ・;・tア・ ・ニz 亨Yテ:z ~・z テWSQR・� 鞁緊ケ ・>�タy韈・�^ ZY[_ヒコ ・ネヒWSQR・p >r u緊ケ$ ・・・闡緊ケ$ ・>・タy陝・�` ZY[_ヒコ$ ・ヒSQR錦ケ ・d 。f ・Z ・・SQR錦ケ ・h 。j ・\ 2タZY[ヒSQR錦ケ$ ・t 。v ・b VW・ι.θ"ケ サ�・・チタ#テォNュ#テォ糂・^・・、tニz ・・x テ・x テ=u$・�V ・ ・~ 戸偲サ| >{ tサvマ.�.V ・u・�ハ .・・ u ・u.。フ マ.�.R V戌2�ム・ ・ョ 「ー 限筋チ・チ・゙ ・カ 「ク ・・エ・擔2タテu・・ u・・鬣 VW恚�・・ホ Q・・ u・ ・闊 Y拈^テV戌程・リメ Aム驩ョ ・ー 限筋チ・チ・゙ ・カ 「ク ・・エ・擔テV戌2�ム・ ・・」・。・」・限・・」・ヌ・ ム瘟・ヌ・ ・・エ�・擔2タテV戌程・リメ Aム驩・・・。・」・限・・」・ヌ・ ム瘟・ヌ・ ・・エ�・擔テVW程・リソ�;メ #゚・空・・環コ`戌D、・タ{^テV2�ム・ソ�;・ #ラ・喰・・コ`戌D・・タz2タテ岸・sク��テ2�チ・帰・テQW・_YテV戌・・ 靺・・ ・ロ*v・吹黻#s・・��u・・r・帥> uク 謹ケ ・ ・・ $uクH � 謹ケH ・ ・ー・ク��鑿�ー・3タ鈩�ー擔テQ・・ u,」ョ ・ー 3タ乎錦チ・チ・霹・カ 「ク ・・Yム魘・・」・・・限・・」・Y・・ヌ・ ・・。・」・ヌ・ エ�・3タテVSQR戌・ ・鞨 ・・ ・ロ*v・吹黻#s・・��u・・r・帥> uク 謹ケ ・ ・・ $uクH � 謹ケH ・ ・ー・ー・ー抻Y[^テQ・・ u,」カ ・ク 3タ乎錦チ・チ・靫 ・ョ 「ー ・・Yム魘・・」・・・限・・」・Y・・ヌ・ ・・ヌ・ 。・」・エ�・3タテQ。」=@〉=�殲=@灑・�・ク��Yテ・@灑・ @・ □*茱。アモ陬・@rホ・tヌ・� sソ・v�・@。」クシ ・」。+タYテレチテ | ・ v ・ クククククククククククククククククククククククククククククククククククククククククククククククククククククククククククククククク H ・リ hー・@・ミ`ィ・8ネX�・0xタP・・(pク H ・リ h ー ・@・ミ`ィ・8 ネ X�・0xタP・・(pク H・リ hー・@・ミ`ィ・8ネX�・0xタP・・(pク H・リ hー・@・ミ`ィ・8ネ X � ・0!x!タ!"P"・・(#p#ク# $H$・リ$ %h%ー%・@&・ミ&'`'ィ'・8((ネ()X)�)・0*x*タ*+P+・・(,p,ク, -H-・リ- .h.ー.・@/・ミ/0`0ィ0・811ネ12X2�2・03x3タ34P4・・クククニH テP汽・Ut鍖 ・・ Xテ`コ`・ト限・弓 空・・ケ ・筋ュ=��tチ・欣チ・ツ√�騰凝ォ粐コ`2タ}テネ `・ト=円・F�逆 オ3ロ・ハ・ t :-r:mvGG・・ t。ワF・V�・欝・ス ・ヌ��ヌD��θ�ナ� uシaノテv ア5 ;( c' ・' ・# ! *$ N n) ・) タL ! -" O o" ・# エ& レ& Loading font
| ∧ チラリ
|Д゚) <
>>344 あんまり相談にのってないオレへの嫌がらせデスカ?
|⊂| "sag e"ってなってるし、、、
| |
| U
週末ですから。
347 :
名無しさん@お腹いっぱい。 :2000/11/12(日) 01:59
すんません、ギコ先生。 フォアグラウンドウィンドウってなんですか? きっとアクティブの反対の意味だと思うんですけど どっかのサイトにフォアグラウィンドウは1つしか存在しないと 書いてありました。 フォアグラも食ったことないので味の方もお願いします(´∀`;)
348 :
ぎこじゃないけど :2000/11/12(日) 07:15
アクティブウィンドウって *現在フォーカスがあるウィンドウ。 *キー入力することが出来るウィンドウ。 でいいんだろうか。。。。 アクティブウィンドウ=フォアグラウンドウィンドウ Not アクティブウインドウ=バックグラウンドウィンドウ なのかな???? フォアグラは私も食べたことないです。 なのでパス。
349 :
名無しさん@お腹いっぱい。 :2000/11/12(日) 08:08
バックグラウンドもあるね。。 注目してるバックグラウンドウィンドウがフォアグラなのか??
350 :
名無しさん@お腹いっぱい。 :2000/11/12(日) 10:15
わりとしつこい感じでした。 旨いかどうかっていうと‥‥‥?
351 :
ああっ名無しさまっ :2000/11/12(日) 16:46
>350 日本人ならアンキモウンドウウィンドウでも食っとけ。
352 :
名無しさん@お腹いっぱい。 :2000/11/12(日) 18:14
>>345 それって、なんかのフォントのsysでは???
見たことあるな・・・・・・・・
353 :
名無しさん@お腹いっぱい。 :2000/11/13(月) 15:45
マルチスレッドのことでなんですが、メインスレッド以外のところで大容量のメモリ (例えば5メガ)の割り当てなどをするのは危険なのでしょうか。メモリ割り当ては すべてメインスレッドで行って、子スレッドにポインタを渡すようにしたほうが いいのでしょうか。よろしくおねがいします。
354 :
奥さん、名無しです :2000/11/13(月) 16:46
VBでメーラー作りたいんですけど、参考になるサイトとかコードとかないですか。
355 :
名無しさん@お腹いっぱい。 :2000/11/13(月) 17:17
>>353 全然関係ないから、好きなスレッドで好きなだけ確保すれ
356 :
名無しさん@お腹いっぱい。 :2000/11/14(火) 14:58
G3のファームを書く事になったのですが、G3の日本語版プログラミングガイドを知ってる人はいませんか? 入手方法とか教えてもらえると助かります
モトローラから取り寄せろ
>>356 データシートでわかんなかったら諦めろ
特定のメンバ変数を専用に管理する関数をクラスにまとめたいのですが、 どう実装するのがスマートなのでしょうか? または、参考にすべきパターンがあるのでしょうか? 私は以下のような方法を考えたのですが、どうでしょう? class CMember { friend class CArray; friend class CValue; public: CMember():m_Value(0){}; private: int m_Value; int m_Array[10]; public: int m_Public; }; class CArray { public: CMember *m_pMember; CArray(CMember *pMember): m_pMember(pMember){}; void Zero() { memset((void *)m_pMember->m_Array, 0, sizeof(m_pMember->m_Array)); }; }; class CValue { public: CMember *m_pMember; CValue(CMember *pMember): m_pMember(pMember){}; void ValueInc() { m_pMember->m_Value++;}; }; class CMaster : public CMember { private: CArray *m_pArray; CValue *m_pValue; public: CMaster() { m_pArray = new CArray(this); m_pValue = new CValue(this); }; ~CMaster() { delete m_pArray; delete m_pValue; } public: void Func() { m_pValue->ValueInc(); m_pArray->Zero(); }; }; 2chの皆様、どうかご教示下さいませ。
359 :
ミトコンドリ子 :2000/11/14(火) 20:36
>>38 ごめんなさいね、アタシがバカだからかもしんないけど、
なにがやりたいんだか、さっぱりわからないわ。
なんのために「特定のメンバ変数を専用に管理する関数をクラスにまとめたい」の?
上の例ではどのクラスが、そのメンバ変数を専用に管理するクラスなの?
上の例のどんな点が、なぜ望ましくないの?
38さんか、どなたか、説明してちょうだい。
360 :
名無しさん@お腹いっぱい。 :2000/11/14(火) 22:37
VCでUINT型のEditBoxがあるのですが %02dのようなフォーマットで、頭に0をつけたいのですが どうすればよいですか?
361 :
:名無しさん@お腹いっぱい。 :2000/11/15(水) 04:49
USBで通信するアプリ作るのに デバイスドライバの知識は必須ですか?
362 :
菊池竹男 :2000/11/15(水) 09:41
>ミトコンドリ子 CMember:(CMasterのメンバをこのクラスで持たせる。) ┣m_Value; ┗m_Array[10]; CValue: 専らCMember::m_Array[10]を管理 CArray: 専らCMember::m_Valueを管理 CMaster: クライアントが使用するクラス。 m_Valueやm_Arrayに直接アクセスするが、 込み入った専用の処理はCArrayや、CValueに持たせる。 m_Valueとm_Arrayは用途の方向性が違うため、 同じクラスでは管理したくないが、グローバルなものであるため、 CValueやCArrayのメンバに持たせて継承するといったことはしたくない。 というスタイルを試みたのです。 説明不良ですいません。
363 :
菊池竹男 :2000/11/15(水) 09:47
>361 デバイスドライバ自体の知識はさして必要にならないですよ。
364 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 12:29
>360 wsprintf じゃ駄目か?
365 :
ミトコンドリ子 :2000/11/15(水) 13:44
>>362 やっぱりなにがやりたいかよくわかんないんだけど、これじゃいけないの?
class CArray {
private:
int m_Array[10];
public:
CArray() {}
void Zero()
{
memset((void *)m_Array, 0, sizeof(m_Array));
}
void Get( int i ) const
{
assert( 0 <= i && i < sizeof(m_Array)/sizeof(*m_Array) );
return( m_Array[i] );
}
void Set( int i, int nVal )
{
assert( 0 <= i && i < sizeof(m_Array)/sizeof(*m_Array) );
m_Array[i] = nVal;
}
};
class CValue {
private:
int m_Value;
public:
CValue(){};
void ValueInc() { m_Value++;}
void Get() const { return( m_Value ); }
void Set( int nVal ){ m_Value = nVal; }
};
class CMaster {
private:
CArray m_Array;
CValue m_Value;
public:
CMaster() {}
~CMaster() {}
public:
void Func()
{
m_Value.ValueInc();
m_Array.Zero();
}
};
継承じゃなくて集約で書き直しただけよ。
CMemberクラスの存在意図がわからないから削除したわ。
上の例じゃうまく表現できてない部分があれば、説明してちょうだい。
366 :
菊池竹男 :2000/11/15(水) 14:45
>ミトコンドリ子
本来はまさに
>>365 のようにしたかったのですが、
CValue::m_Value;
CArray::m_Array[10];
の2つはCMasterに持たせたかったのです。
そのためCMemberを作りました。
367 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 15:21
>>366 その理由はなぜ?
今までの説明だと俺にもその辺が見えない。
>>362 の
> グローバルなものであるため、
という説明では不可解(だって、一般的な意味での「グローバル」
にはなってないでしょ)。
>>366 なんか....
「手続き型の設計技法でクラス作ってみました」
という雰囲気が漂っているんだが...
# 継承を使わないでとか
カプセル化って知ってるよね?
369 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 17:28
std::vectorを学習中の者です。 class T; T* x = new T; vector<T*> vT; vT.push_back(x); delete x; とするとvT[0]の中身が破壊されるようなのですが 普通 delete x しないものなのでしょうか? また(*x含めて)vT全体を破壊するやり方はどうやりますか?
「コピーコンストラクタ」「ポインタメンバ」「深いコピー」 この程度のキーワードで考えろ。 全体に適用するのはiterator使え。
371 :
名無しさん@お腹いっぱい。 :2000/11/15(水) 18:46
質問です! インターネット上からファイルをダウンロードすると、保存先を聞いてきますよね? あれをなくしたいんです。 要は、リンクを貼ったファイル名をクリックすると固定のパスに直接落とすようにしたいんです。 スレ違いかもしれませんが、どなたか教えてください。 お願いします。
369の言ってる事って、 class T; T *p1 = new T; T *p2 = p1; delete p1; で、p2のオブジェクトがdeleteされるのはなぜですか? ・・・と同じ。
「深いコピー」… つかわせていただきます(藁
374 :
菊池竹男 :2000/11/16(木) 10:28
いろいろ考えたのですが、やはり
>>365 を基本に
作ることにします。
ミトコンドリ子さん、大変ありがとうございました。
>> 368
すいません、カプセル化ってよく聞くんですがなんなんでしょうか?
あと、抽象化とかオブジェクト指向ってのもよくわからないんです。
375 :
ミトコンドリ子 :2000/11/16(木) 12:20
>>374 アナタの問題が解決したのはいいんだけど、ここは公共のノウハウ共有
の場なんだから(ちがう? アタシはそのつもりなんだけど)、説明するべき
ことはちゃんとするべきだと思うの。
具体的には
アナタは当初の設計でなにがやりたかったのか?
365のコードが提示されたことでなにがわかったのか、される前にわかって
いなかったことはなんなのか?
についての説明をいただきたいわ。
そういうまとめがあれば、まとめを読むことで同じ問題を抱えている人
が自分で解決にたどり着いたりすることもあると思うの。
それに言葉にして説明すると思考が具体化するから、自分の課題の整理にも
なってよ。
アナタのためにも、スレを読むほかのひとのためにも、よろしくね。
377 :
菊池竹男 :2000/11/16(木) 14:16
>ミトコンドリ子 今までのものはクラスを使わずに ひとつの構造体とそれに特化した関数で作られていたんですが、 関数の構成があまりにも混沌としており、十分な機能別けが 出来ておりませんでした。 そこで、機能ごとにクラスにまとめようと思ったのですが、 メンバ変数を個々のクラスに持たせてしまうと、元々の変数のスコープ的な 意味合いが変わってきてしまうので、どうすればいいかと考えておりました。 結局、365にいただいたものが基本なようなので、無理をして いままでのスタイルを維持することもないと思ったのです。 >376 ありがとうございます。 これからちょっと読んでみます。
378 :
名無しさん@お腹いっぱい。 :2000/11/16(木) 14:25
VCでEditBoxの表示桁数もしくは入力桁数を 2桁とかに制限したいのですが どなたかご存知の方教えて下さい
SetLimitText
ウィンドウクラスを生成する際に窓の縦横幅を指定しますが、枠の幅で微妙にずれてしまうようです。 枠の内部のサイズを厳密に指定したいんですがどうすればいいでしょうか?
>380 AdjustWindowRectとかなんとかそんな名前のAPI。
>>380 AdjustWindowRectじゃ不可能なのでサイズを変更後にひたすら再調整
多分キャプチャして拡大して見れば枠の幅はわかるとは思いますが こういうのはレジストリやiniなどの変更で変わることはないんでしょうか。 普通そんなことする人はいないでしょうけど、 逆に考えるとそこを見ればサイズがわかるかなと思いまして。
とりあえず 横:4+w+4(w>=104) 縦:23+h+4(h>=0) ということになりました。 ただし95でですが。
385 :
gcc :2000/11/18(土) 01:07
#include <unistd.h> をファイルの先頭で書いてるのに、gcc -Wall -ansi で 警告: 関数 `gethostname' の暗黙の宣言 とか言われるのはなぜでしょう。コードは問題なく動くのですが、ちょっと気持ち 悪いです。symlink()とかでも同じこと言われます。
386 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 01:19
>>385 怒られないっす。FreeBSD 3.4R & gcc 2.95.2
387 :
gcc :2000/11/18(土) 01:27
>>386 そうなんですか?
当方 Linux 2.2.14 & gcc 2.95.3 です。
ちなみに -ansi を抜くと怒られないんですけど、、、。
388 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 02:00
アプレットがJavaプログラムをクライアントで実行するのに対し サーブレットはサーバーで実行するなら、当然サーバへの負荷は サーブレットの方が大きくなるわけですか?
そうです
390 :
386 :2000/11/18(土) 06:32
>>387 Slackware 7.0(egcs-1.1.2)では怒られたよ。
-D_GNU_SOURCE もしくは -D_BSD_SOURCE 付けなきゃいかんようだな。
>>387 ありがとうございます。勉強になります。
_D_GNU_SOURCE と_D_BSD_SOURCE の両方ともうまくいきました。
393 :
std::vector :2000/11/18(土) 17:25
STLのVECTORコンテナってこれ以上実行速度的に改善する方法ってありますか? VECTOR全体のソースを見てしまうと、かなり大規模な感じはしますが、 最終的にはインライン展開と、オプティマイズにより、 Cの配列と同程度の実行速度になる気がします。 頻繁に配列のオーバーフローが発生すると大きなオーバーヘッドになりますが、 それはユーザー側が初期化サイズを十分な大きさにしてしまえば問題無いはずです。 VECTORのソースも見ずに遅いと決め付けて、 バグありコードを大量生産するアホがいて困ります。 まぁコードサイズはあんま誉められたものではないかもしれませんが・・・
394 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 17:30
>STLのVECTORコンテナってこれ以上実行速度的に改善する方法ってありますか? ありません。これ以上の速度を求めるなら、自分で書きなさい。
395 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 17:43
>>393 おまえ、オブジェクト指向ヤメレ。
向いてない。
396 :
山有り谷あり :2000/11/18(土) 18:16
オブジェクト指向ってなによ?
わたしはテンプレートの場合、ソースのサイズがデカイのは全然気に なりません。
398 :
水原勇気 :2000/11/18(土) 21:01
ドリームボールのようなもの<オブジェクト指向
399 :
名無しさん@お腹いっぱい。 :2000/11/18(土) 23:38
ドラゴンボールのようなもの<オブジェクト思考
400 :
std::vector :2000/11/19(日) 00:19
すんません。文章力ないもんで勘違いされてされているようです。
私自身はstd::vectorにまったく不満はありません。
>>394 その「自分で書いた時」に実行速度的にvectorを上回る
コンテナクラスが書けるのかどうかが知りたいんです。
ちなみに自分は無理だと思います。
401 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 00:34
プロのプログラマーさんに質問なんですけど、例外的な条件の処理っ てどのくらいやってます? 例えば一時ファイルを使ってデータ処理を する時とか、やっぱり一回一回ファイルが開いたかどうか閉じたかどう か全部if文でくくって、なんかの例外処理をしてるのでしょうか? 仮 に一時ファイルのオープンが突然失敗した場合、どんなことをやって事 態を収拾するのですか? よろしくお願いします。
402 :
名無しのエリー :2000/11/19(日) 00:46
>>401 重要なファイルでない場合は if 文で分岐して、エラーメッセージを表示する程度。
重要な場合はファイルに保存せずにメモリ内で処理する。
処理中に異常終了したときのことも考えてメモリとファイルの両方に保存するときもある。
異常終了の場合はファイルを読み込んで再起動。
∧ ∧ ──────
(゚Д゚ ) <
>>396 object oriental なんつったり
⊂⊂\──────
\ 〜 ────
し し ─────
∧ ∧ ──────
(゚Д゚ ) <
>>400 省機能なら逝けるかもしれん
⊂⊂\──────
\ 〜 ────
し し ─────
∧ ∧ ──────
(゚Д゚ ) <
>>401 生C、とか生C++だとめんどくさいけど一回一回やらないとダメ
⊂⊂\─── ファイルオブジェクトが提供されているようなとこだったら適当なとこで
\ 〜 ─ 例外をキャッチする。
し し ─────
>403 ファイルオブジェクトが提供されてないなら、 Proxy自作すべし。そこで投げる例外も自作。
mapで扱ってfindしていたデータを 登録順にアクセスしたくなってvectorに変えた。 同時に、mapの中身はvectorにあるデータ本体へのポインタにした。 「findで見つかるのに、中身がおかしい」という現象に 今まで2時間くらい悩まされた。 vectorへの登録と同時にmapに登録しようとした 俺が悪かったよ。 ごめんよ、経験値低くて。
406 :
た :2000/11/19(日) 14:09
K&R何回か読んでから、アンサーブック片手に練習問題解いてるんですが、 模範解答に比べてif分岐が異様に多い、醜いコードになっちゃいます。 関数の分割がヘタレなためみたいなんですが、 そこらへん系統的に解説したいい参考書ないでしょうか?
407 :
>406 :2000/11/19(日) 18:00
程度によるけどif分岐が多いこと自体は悪いことじゃないと思うよ。 まあ、アルゴリズム的にみて明らかに無駄な条件分岐ってのもあるけどね。 短めの例でもあげて見せてごらんよ 昔のソースは端末が遅くて入力がうざかったり、 最適化がほとんどなくてソースの複雑さが実行コードの効率と 直結してたから 短く最適化された(ともすれば暗号のような)ソースが多かった。 いまのコンパイラは結構賢いからif分が多くてもそのほうが ソースがわかりやすいなら気にすることはないと思うよ。
408 :
名無しさん@お腹いっぱい。 :2000/11/19(日) 19:25
>>401 全てのシステムコール、API、メソッドについて例外処理は入れるよ。
コードの半分位は例外処理、テストの2/3は例外処理に対するもの、
つー感じかな。
409 :
個人事業主 :2000/11/19(日) 22:22
ここで質問してよいかどうか分かりませんが・・・ プログラマー板で雑談質問スレが見当たらなかったのでこちらで失礼します。 欲しいプログラムがあったとして それを誰かに作って欲しいときはどこに当たればよいのでしょうか? プロのプログラマーにお願いしたいのですが、 どこをどう探していいかわかりません。 はたして個人相手に仕事をしてくれるのか 相場などもまったくわかりません。 リストになっているサイトでもあれば紹介してください (規模的には慣れた方なら2週間程度で完成するレベル・・・と思います)。 また依頼するにあたって気をつけることなどありましたらアドバイスお願いします。 ひょっとしたら根本的な勘違いをしているかもしれませんので お叱りと共に指摘していただければ幸いです。 よろしくお願いします。
>409 企業に納品するアプリケーションは、製作が2週間でも、 その仕様をクライアント(あなた)との間で精密に決定して いく作業と、試験と、クライアントに対する運用トレーニング とかで、3倍とか4倍とか掛かると思うよ。もちろん、その間の 経費はあんた持ち。 でもって人間一人一ヶ月使うなら100万は覚悟しましょう。 そこまで金使うつもりがないなら、プロに頼むのは無理。 というか、そもそもそんな必要ないものなんでしょ?
>>410 お返事ありがとうございます。
100万ですか・・・。
それ以上になるとキツイですが、
今後のことを考えるとその価値はある投資だと思います。
よろしければ検索のキーワードでも構いませんので
お教え願えませんか?
>規模的には慣れた方なら2週間程度で完成するレベル 何をもってそう思ったのかはわかりませんが、 そういうそういう考えかたができるということは あなたもある程度のプログラミングの知識はお持ちなのでしょうか? でしたら企業対企業ではなく個人対個人でしたらもっと安価にできる 場合もありますよ。 いちばんの違いは信用の部分。
>>412 一応BASICで遊んだことはあります
(そして読んでないC++の本がつんであります)。
パソコンにやらせたい作業の手順(アルゴリズムと言ってよいのでしょうか)
も頭の中ではできています(プロから見たら穴だらけだとは思いますが)。
個人間でできればよいのですが
万が一そのプログラムが商品になるという見込みが発生した場合・・・
プロから見たら痛い厨房的な発想に見えるかも知れませんが
その辺のことを考えると企業かなと、少ない情報ながら判断しております。
・・・・
教えて君ですみません。私はどこに行けばよいのでしょうか?
>そのプログラムが商品になるという プログラムそのものを販売する。ということですか? それだとそのご予算では相当きついのではないかと‥ 契約にもよりますが、通常、料金には使用権しか含まれないかと‥ メンテナンスや販売権などは全く別です。
415 :
cafe :2000/11/20(月) 14:58
posix-shで標準出力のバッファを書き出すflush()みたいな コマンドor設定ってないですか? とろいマシンなんで同期がとれないみたいなんです。
416 :
名無しさん@お腹いっぱい。 :2000/11/20(月) 15:18
PostgreSQLに50万件ほどデータを挿入してみたのですが、 oidフィールドでの問い合わせがやたら遅いです。PostgreSQLの oidフィールドは、インデックスキーになっていないのでしょうか?
>416 ??? 多分... oidを求める為の問い合わせが遅いような気がする # 主キーがインデックスになっていないとか
418 :
名無しさん@お腹いっぱい。 :2000/11/20(月) 18:29
>>417 レスありがとうございます。
select * from theTABLE where oid='5487916';
としたときのレスポンスが極端に遅くなります。「theTABLE」
をクリエートするとき「oid」をインデックスに設定しなきゃ
いけないんでしょうか?
419 :
名無しさん@お腹いっぱい。 :2000/11/20(月) 23:39
テキストデータの暗号化/複合化が出来る簡単なライブラリとかどこか無いですか? ポインタだけでいいので教えてください。
暗号化がしたいのかポインタが知りたいのかどっちだ? もしかしてポインタってURLのことか?
421 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 00:32
419>420 そうです,すいません。まぎらわしい書き方をしてしまいました。 ポインタはURLの事です。
422 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 04:50
>>419 crypt(3)は?
と思ったけどだめだ。元に戻せない。
425 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 08:29
419>423 極端な話,シーザー暗号程度でもいいんです。 ってそれくらいだったら作れと言われそうですけれど・・・ ぱっと見,分からなければいい程度です。
426 :
名無しさん@お腹いっぱい。 :2000/11/21(火) 10:28
圧縮しちゃえば > 425
427 :
>425 :2000/11/21(火) 10:54
>ぱっと見,分からなければいい程度です その程度でいいなら、BIT反転させれば? ぱっと見ならわからないよ。
428 :
た :2000/11/21(火) 11:44
>>407 さっそくのアドバイス、ありがとうございました。2日空けただけ
なのに、自分の書きこみがだいぶ前になっててびっくりしました。
アルゴリズム的にムダな条件分岐は無かったです。
ただ、今のやり方のまま、例えば数千行にわたる手順をう
まく動くように構成するのは無理っぽいので、かなり危機
感感じてます。
430 :
た :2000/11/22(水) 22:42
431 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 01:29
VB始めて2ヶ月足らずのうんこ大学生です。 VBのMEという命令、オブジェクトについて教えてください 使い方がいまいちわかりませぬ(怒)
432 :
0xE104 :2000/11/23(木) 02:38
ソース: #include <stdio.h> main() { char string[] = "123456" printf("%s\n",string); printf("%s\n",&string); } 実行結果: 123456 123456 あれれ!?
>>432 printfの順番替えて、
printf("%s\n",&string);
printf("%s\n",string);
これでやるとどうなる?
printfは変数の型をフォーマット文字から推測する仕様なので そうなってしまうのが正しいのだ。 string は char*、&string は char(*)[]だが printfはそのどちらも%sをみてchar*だと判断してしまう‥
double a = 1.0; float b = 2.0; printf( "%f %g\n", a, b); これは正しいけど scanf( "%f %g\n", &a, &b); これは正しくない
>>433 意図不明… だれかテレパスのひとの解説きぼう
437 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 13:53
>433 stringも&stringも、値は一緒だから。 本来、&stringの方は間違いなんだけど、ANSIの規格では認めることになったらしい。 コンパイラによってはエラーになったりするよ。
>432 の間違い
439 :
0xE104 :2000/11/23(木) 18:03
#include<stdio.h> main() { char string[]="123456"; char *pstring; pstring = string; printf( "%d\n",(string == (char *)&string) ); printf( "%d\n",(string == (char *)&pstring) ); } 結果: 1 0 ひょっとして私は重大な勘違いをしているのだろうか…
440 :
>439 :2000/11/23(木) 18:09
これ試してみなよ printf("0x%08x\n", string); printf("0x%08x\n", &string); printf("0x%08x\n", &string[0]); printf("0x%08x\n", pstring);
"%p"のがよくないか?
442 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 18:50
437が意味不明 テレパスさんきぼ〜ん
char a[10] という配列があった場合、 a == &a[0] でしょ。 でも、最近のコンパイラは、 a == &a == &a[0] になってるの。 原則から言ったら、&aはおかしいんだけどね。 439で (string == &string)==1 になってしまうのはそのため。
444 :
名無しさん@お腹いっぱい。 :2000/11/23(木) 19:25
>でも、最近のコンパイラは、 > a == &a == &a[0] ということは、最近のコンパイラは *(&a)=1; とするとa[0]に1が代入されるのですか?
>444 おれの持ってるコンパイラはbcc5.5なんだけど、 *(&a)=1; は、"左辺値が必要"ってエラーが出て、コンパイルできない。 だぶん、*(&a) → a と判断されて a = 1になってしまい、配列名への代入になってしまったんだろう。 *((char*)&a) とキャストすれば問題なし。
446 :
0xE104 :2000/11/23(木) 20:13
>>443 あ〜、そういうことなんですか。解説多謝。
でも…
>>440 結果:
0x257fdac
0x257fdac
0x257fdac
0x257fdac
ぎゃあああああぁあぁっ!!
printf("0x%08x\n", &pstring);
もやってみ
>>446
>>447 0x257fdac
0x257fdac
0x257fdac
0x257fdac
0x257fda8
うむ。
449 :
443 :2000/11/23(木) 22:12
string == pstring なのに &string != &pstring なのがミソ
>>449 そりゃそうでしょ?
char *stringA;
char stringB[256];
stringA は、ポインタ型変数が生成されて、
stirngB は、256バイとの領域が生成される。
&stringA は、そのポインタ型変数を示すアドレスを返す、
&stringB は、256バイとの領域の先頭アドレスを返す。
なんだからさ
>>450 >&stringB は、256バイトの領域の先頭アドレスを返す。
でも、普通256バイトの領域の先頭アドレスを返すのには&なしの
"stringB"を使いますよね?
それが混乱の原因だったわけで。
453 :
名無しさん@お腹いっぱい。 :2000/11/24(金) 22:20
eMbedded VisualC++を使っていてH/PC上のアプリで CTime time( 2000, 11, 27, 0, 0, 0 ); と設定し、time.GetYear()などで年月日を取得すると 1864年10月20日という値が取得されてしまうのですがなぜなのでしょうか? エミュレータ上ではうまく取得できます。
454 :
453 :2000/11/24(金) 22:26
OSはWinCE2.1.1です
455 :
CEしらんけど :2000/11/24(金) 22:35
MSDNに書いてあんじゃねーの? COleDateTime を 使えば?
456 :
>451 :2000/11/25(土) 02:04
>普通256バイトの領域の先頭アドレスを返すのには&なしの >"stringB"を使いますよね? フツー使わないんだよ。 そんなの使うのはポインタちゃんと理解してない厨房だけだ。 型の違いを理解しろ。
457 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 03:07
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
458 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 06:10
むむ そういえばどっちが正しいんだ? &a を a の別名としてみるなら BCC が真っ当だな
459 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 06:56
どちらにせよ受け取るのはアドレスなわけだからbccがあってる気がするが… どうなんだ?実際のところ。定数で9が返ると混乱すると思うのだが。
460 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 09:20
Pascalで学んだ者はCを見て配列の異様さを嫌悪し CからPascalに移ろうとした者は配列の厳格さを嫌悪する Cなら、”そんなもんいい加減でいいんだよ”でスーと流すのがスタイルでは?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの? 答えろグラァ!
#include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの? #include<stdio.h> int main(void){ char a[] = "abcdefgh"; printf("sizeof(a) = %d\n",sizeof(a)); printf("sizeof(&a) = %d\n",sizeof(&a)); return 0; } /*--------------------------------------*/ このコードをコンパイルして実行すると、 Borland C++ Compilerでは sizeof(a) = 9 sizeof(&a) = 9 なのに、LSI-C(16bit)では sizeof(a) = 9 sizeof(&a) = 2 になっちゃう。 &aをBCCでは「配列」、LSI-Cでは「先頭要素のポインタ」って考えているのか? ちなみに、BCCは「ANSI標準サポート」でLSI-Cは「ANSI準拠」らしい。 本来ならどっちが正しいの?
471 :
名無しさん@お腹いっぱい。 :2000/11/25(土) 14:16
マシンA、マシンBがあるとします。 Aは共有フォルダを持っていて、Bから見ることが出来ます。 で、聞きたいことというのは、BからAの共有フォルダ内にある プログラムかなんかをキックすることで、BからリモートでAをリブート したいのですが、こんなことってできますか?
おっといい忘れた。マシンはWinです。
473 :
>471 :2000/11/25(土) 18:30
そーゆー事はたぶんできないです。 (ってゆーかそれを許しちゃうOSはヤバイと思う) リモートコントロールできるソフトを相手に常駐させれば 出来なくもないとだけいっておきましょう。
rshがあるunixはヤバイわけか。
telnet接続もヤバイんだろうな。
Wake On LAN ?
477 :
> :2000/11/25(土) 19:22
>471 一定時間ごとにとあるファイルが共有フォルダBにあれば それを削除して「リブートする」ようなプログラムを Bで走らせておく。 ~~ リブートはさすがにさせたことはないが‥ リモートが使えない環境で、あいてになにかさせたいときに よく使う手だ。
478 :
> :2000/11/25(土) 19:24
s/共有フォルダB/共有フォルダ/ s/Bで/Aで/ かっこわる‥
予想通りか…。
何がぢゃ?固羅。
481 :
名無しさんi486 :2000/11/26(日) 00:08
HTTPD立ち上げといて、CGIとして実行させるってのは論外?(汗 いやね、調度こないだ知人にHTTPでEXEファイル拾わせようとしたら うちで実行されて焦った事あったから。
実行した後数秒キャンセル待ちして、キャンセル無かったら標準出力に何か吐いて電源off 「拾い終わったら電源落としといて」とか言えて便利そうだ。 仕込んどこ。
ある意味恐いが使いようによっては便利だな。
nukeかければ一発 ってこれじゃ青画面がでるだけか
485 :
名無しさん@お腹いっぱい。 :2000/11/28(火) 21:22
STLを使ったプログラミングの質問なんですが、listの内容を、中身のクラスの int型の値でsortしたいのですが、どうしたらよいでしょうか。たとえば、 list<Block> blockList; struct Block{ char name[80]; int num1; int num2; }; だとして、num1, num2はそのデータの、listの中での順番を表しますが、それぞれ 違うルールで順番付けられてます。これをnum1,num2それぞれでsortしたいのですが どうしても自分の頭ではできません。ちょっと例を見せていただけませんか。 よろしくおねがいします。
486 :
>485 :2000/11/28(火) 22:12
俺はバカだから typedef Block *PBlock; とPBlock型を定義して pointer上でsortするのしか思い付かない・・
487 :
Visual名無しさん :2000/11/28(火) 22:55
適当に比較用の関数オブジェクト作って sort(greater<T> pr); を呼ぶんじゃ駄目?
488 :
赤ちゃん :2000/11/28(火) 22:56
>>485 /** 実行結果 ****************************************
*
* c : 300 : 100
* b : 200 : 200
* a : 100 : 300
*
* a : 100 : 300
* b : 200 : 200
* c : 300 : 100
*
****************************************************/
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
typedef struct{ // C++ で構造体…
char name[80];
int num1;
int num2;
}Block;
// 比較関数オブジェクト
class CompBlock
{
int type; // 実際はきちんとコンストラクタを書いて初期化してね
public:
void setType(const int t){ type = t; }
bool operator()(const Block &lhs, const Block &rhs)
{
if(type == 1){ // ま、switch の方がいいでしょうね。enum で type 作って。
return lhs.num1 < rhs.num1;
}
else{ // まあ、ここら辺はご自由に
return lhs.num2 < rhs.num2;
}
}
};
int main()
{
list<Block> lst;
list<Block>::iterator it;
CompBlock comp;
Block a = {"a", 100, 300};
Block b = {"b", 200, 200};
Block c = {"c", 300, 100};
lst.push_back(a);
lst.push_back(b);
lst.push_back(c);
comp.setType(2); // num2 を昇順にソート
lst.sort(comp);
for(it = lst.begin(); it != lst.end(); it++)
cout << (*it).name << " : " << (*it).num1 << " : " << (*it).num2 << endl;
cout << endl;
comp.setType(1); // num1 を昇順にソート
lst.sort(comp);
for(it = lst.begin(); it != lst.end(); it++)
cout << (*it).name << " : " << (*it).num1 << " : " << (*it).num2 << endl;
return 0;
}
489 :
初心者 :2000/11/29(水) 20:04
C++で、 x *xx = new x; x->func(); はできるのですが、 x *xx = new x[10] for(int i=0; i<10; i++) { x[i]->func(); } というように書こうとするとできません。 こういうことはできないのでしょうか。 自分はポインタがよくわかっていないようで、 どなたがお教えください。
490 :
Visual名無しさん :2000/11/29(水) 20:14
おい、 x->func(); もホントにできるのか? xx->func(); じゃなくて?
491 :
初心者 :2000/11/29(水) 20:20
すいません。490さんのおっしゃるとおり、 xx->func_() でした。 申し訳ありません。
492 :
Visual名無しさん :2000/11/29(水) 20:45
で、下の方は正解は xx[i].func(); だろう。
493 :
LSI-名無しさん86 :2000/11/29(水) 20:53
xx[i]の型が何か考えてみ。
494 :
初心者 :2000/11/29(水) 21:17
あの…、もう一つ質問させてほしいのですが、 #include<vector> using namespace std; vector<x*> xx; for (int i=0;i<10;i++){ xx.push_back( new x ); } for (int i=0;i<10;i++){ xx[i]->func(); } このような形のプログラムはコンパイルを通ると思う のですが、なんか上のとよく似ているような気がして、 (気がするというのが自分の能力のなさですが) こういう違いがよくわかりません。 >492さん その通りだと思いますが、なぜそうなるのでしょう(;´Д`) >493さん xへのポインタ…でしょうか?(;´Д`)
495 :
Visual名無しさん :2000/11/29(水) 21:31
x *xx = new x[10]; って書いたって事は、「x型」のオブジェクトを10個作って、 その先頭のアドレスで xx を初期化ってこと。 xx[i] なら、xx の i 番目のオブジェクト(型は x )を意味する。 vector<x*> xx; なら、今度は xx は、「xへのポインタ型」のオブジェクトを何個も持っていることになる。 そのとき、xx[i] と書けばそれは、xxのi番目のオブジェクト(型は xへのポインタ)を意味する。 説明下手でスマソ。
てゆーかオブジェクトって単語の使い方間違ってる気がしてきたsage。
497 :
名無しさん@お腹いっぱい。 :2000/11/30(木) 02:23
助けてください!! 現在インストールされてるDirectXのバージョンは どのように調べればよいのでしょうか?
コンパネ…>497 プログラムからなら、COMのインタフェースにそういうの無かったかい?
>497 mssdk\samples\Multimedia\DXMisc
>495さん なんか少しわかったような気がします。 もう少し考えてみます。ありがとうございました。
501 :
名無しさん@お腹いっぱい。 :2000/11/30(木) 18:24
C++のテンプレートって、なんで"templete"なんですか? "template"ぢゃないの? 英和辞典で"templete"引いても乗ってないし。
>>501 今すぐ医者へ逝け。そして帰ってくるな。
504 :
名無しさん@お腹いっぱい :2000/11/30(木) 20:18
ちと書く場所が違うかもしれないけど、純粋?なC++の 仕様書って、何処に行けばあるんですか? MFCとかいろいろあるけど、どれにも汚染されてない奴が欲しい. いやーなんでかってstatic_castはC++のキャストだと思ってたんだけど 上司に否定されて、(MFCのキャストじゃないの?とか言いやがった!) 悔しいから調べてるんだけど、わかんないんだよね.
お姉さんに聞きます。
Stroustrup の名前ぐらい知っとけ。
うわー無限再帰呼び出しだ〜スタックがー!
508 :
名無しさん@お腹いっぱい。 :2000/11/30(木) 21:17
win98でバッチファイル実行時にDos窓が残っちゃうんですが、 これを消すようなオプションみたいなのってないですか?
509 :
>508 :2000/11/30(木) 21:33
バッチファイル実行後にエクスプローラで見ると同じ名前の 別のファイルが出来ていませんか? それをマウス右ボタンで・・・・
>>509 このショートカットって必ず出ちゃうんですね
とりあえずありがとうございます。
511 :
>504 :2000/11/30(木) 23:41
512 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 05:42
ポイントからポイントへのライン4本(ポイント8つ)で表現された四角ポリゴンの 4ポイントを順に得るにはどう処理したら宜しいのでしょうか。 かなり悩みましたがどうも上手くまとまりません・・・ 単純に4ポイント得ると|><|の様に成る可能性があるんですよね。
513 :
512 :2000/12/01(金) 05:49
あぁ寝ぼけてた・・書き込むボタン押した瞬間に目覚めました。 多分解決;
たまにリアルボケってあるよね。 本気で悩んでるのにわかったらあたりまえのようなこと。
一体どこで勘違いしたんだろう…… 鬱だ氏のう。マジで。
516 :
>501 :2000/12/01(金) 08:59
ああ、あるあるそういう事 でもゴメン笑わせて貰いましたよ よかったね匿名掲示板で
517 :
504 :2000/12/01(金) 09:52
>511 うがぁ。 さるですまん。サルなりに頑張ったつもりだったんだけど だめだめだったようだ。 鬱だ氏のう。 あ、いや、たすかったっす。さんくす。
ええもう、実名なら社会的信用一気に失墜するところでした。 プログラム板の皆様、今後ともお見知りおきを。
519 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 10:52
templete age
520 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 11:59
CGIの勉強を始めたいと思います。 何かお勧めの本がありましたら教えてください。 ちなみに自分の知識はHTMLをかじった程度です。
522 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 15:20
>521 2ちゃんねらーらしい親切なんだけど感じ悪い答えですが そーゆー答えを待ってました。 どーもありがとう 逝って来ます
む、その通りである。欝山車脳。 とりあえず、自分を晒し上げ。
525 :
名無しさん@お腹いっぱい。 :2000/12/01(金) 17:03
char abc[13]; strcpy( abc, "123456789012" ); printf( "%10.2f", atof(abc)/100 ); 「1234567890.12」 って出したいのに なんだかわかんない数列になるのはなんでー?
526 :
525 :2000/12/01(金) 17:11
stdlib.h なかったー
528 :
名無しさん@お腹いっぱい。 :2000/12/02(土) 04:01
WindowsSDKの質問なんですけど、メモリを確保するのに、GetProcessHeapを使うのと HeapCreateを使うのは、どこがどう違うのでしょうか。GetProcessHeapは一プロセス で一度しか呼んじゃいけないという理解は正しいでしょうか。
GetProcessHeapは何度でも呼べるよ。普段はこれで十分。 HeapCreateは確保したチェインをHeapDestroyで一括破棄したいときとかに便利だね。
530 :
名無しさん@お腹いっぱい。 :2000/12/03(日) 06:08
本屋まわってきたのですが・・・・DirectX8のSDKが付いてくる雑誌って出て ないのでしょうか。140Mダウンロードするのはちょっとキツ過ぎですので。 まだ早いのかな・・・。
>530 次号のCマガとかについて来そうですね 自分、普通のネット環境ですが頑張って落としましたよ ヘルプだけなら10Mくらいなんでそれ見て楽しむべし バージョンが上がるごとにSDKが太っていくのは 何とかならんものですかね・・・
532 :
530 :2000/12/03(日) 06:51
>>531 情報ありがとうございます!なにせ7の時は、ぜんぶ落とすまで一ヶ月
ほどかかったもので・・・助かりました。全く大きくなりすぎですよね。
ヘルプだけは楽しんでます。「ええっ、Direct3Dの項目が無いよ」とか
今回大幅に変わってますよね。今から触るのが楽しみです。
533 :
うむ :2000/12/04(月) 23:54
■演習問題1 1太陽年は、365.2422日である。 これは何日何時間何分何秒に当たるかを計算し、 次の式で出力せよ。 出力データ : xxx△NICHI△xx△JIKAN△xx△FUN△xx.x△BYO (xは数字、△はスペースを表しています) ▲プログラムの仕方がわかりません。教えて下さい。
>>533 言語の種類くらいかけよ
日本語でいいのか?
535 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 00:46
>533 とりあえず手で計算して答えを求めてからに したら? いきなり組んで結果見てもあってるかどうか わからないと思うし・・・
537 :
うむ :2000/12/05(火) 01:48
>>536 365.2422 NICHI 365 NICHI
0.2422*24=5.8128 5 JIKAN
0.8128*60=48.768 48 FUN
0.768*60=46.08 46.1 BYO
答えはこれであってると思いますが・・。
538 :
名無しさん@お腹いっぱい。 :2000/12/05(火) 08:55
そのままCに直せば int main() { int i; double d=365.2422 ; i=d;d-=i;printf("%d日\n",i); d*=24;i=d;d-=i;printf("%d時\n",i); d*=60;i=d;d-=i;printf("%d分\n",i); d*=60;i=d;d-=i;printf("%d秒\n",i); return 0; }
539 :
うむ :2000/12/06(水) 01:57
ありがとうございました。 わからないところが解けたのですっきりしました。(´Д`*)
540 :
X :2000/12/06(水) 02:50
プログラムで稼ぐには何勉強したらよいですか?
>>540 そんな質問をするようでは、稼げるようになるまでに、
何年かかるか知れたもんじゃありません。
プログラムより、コンビニでバイトした方が良いです。
>540 プログラムでお金を稼ぐのはあきらめましょう。
543 :
名無しさん@お腹いっぱい。 :2000/12/06(水) 10:29
>>540 プログラマーには、あらゆるスキルが必要です。
数学:会議で「素数ってなに?」って言わないように
国語:2ちゃんねるを参考に
理科:CPUの中で電子が飛び回ってる図が想像できるように
英語:コメントは英語が一番。馬鹿なコメントがばれません
家庭科:徹夜が多いので、料理・裁縫は出来ないといけません
工作:自作から配線まで
体育:いわずもがな体力勝負
アルコール:酒も飲めなきゃ仕事は取れない。めざせ人間ポンプ
話術:客を煙に巻く。必殺技「仕様です」
度胸:土下座して取った仕事を、平気で納期破れるように
etc...
∧∧ ¶( ゚Д゚) <チョッ、チョット寂シンダナ ゝ|U |┐ (,|/ |┘ U U
545 :
名無しさん@お腹いっぱい。 :2000/12/11(月) 14:57
めちゃ基本的質問ですみません。 構造体の初期化ってどうしてます? KOUZOUTAI a; memset(&a,0,sizeof(a)); ですよね、普通。これを、 KOUZOUTAI a = {NULL}; とかやってるやつがいるんですがどう思います?
>>545 多分、否定的な意見が欲しいのだろうが
その場合はKOUZOUTAIの定義も書きましょう。
こういう初期化のしかたもあります、
typedef struct {
int a;
char b*:
double c;
} hoge_t;
#define HOGE_INIT { 0, NULL, 0.0 }
hoge_t hoge = HOGE_INIT;
547 :
名無しさん@お腹いっぱい。 :2000/12/12(火) 19:41
WinCE2.0上でCCeSocket::Connectを使用すると失敗しGetLastErrorで ERROR_CLASS_DOES_NOT_EXIST(1411)が返ってきます。 WinCE2.1上ではうまくいきます。 CE2.0では何かしなければならないことがあるのでしょうか? (初期化、Createはしております)
548 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 00:00
549 :
>548 :2000/12/13(水) 00:17
コンストラクタの中で、 memset(&a,0,sizeof(a)); って事ですか?
550 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 00:37
>>545 static KOUZOUTAI a;
551 :
>545 :2000/12/13(水) 01:07
∧△、 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ゚Д゚)< 見た目じゃなく、アセンブラの展開で比較せよ |U U \_________ | | )/ ν
552 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 01:25
float d;を追加しても修正がいらないのでmemsetがお勧め。 0fillしてもd=0.fになる保証はない。とかいってるコンパイラは逝ってよし。
553 :
虹 :2000/12/13(水) 01:56
554 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 02:13
float は使用禁止 double を使えって昔言われて以来 float は使ってない。 使ったらいけない理由は未だに不明
555 :
552>553 :2000/12/13(水) 02:26
d=0.fにならないような環境への移植性は無視。 このケースに関しては、保守性を最優先。 今のところ問題ないし、問題になるケースも思いつかない。 なんかあるかな?
556 :
虹 :2000/12/13(水) 02:50
>>554 通常0.0とか書いた場合doubleになる(よね?)ので、例えば
float f=1.0f;
f*=2.0;
とか書いた場合、f*=2.0のとこがdoubleで演算してからfloat
に変換して代入するから無駄が多いってことなのかな。
この場合はf*=2.0fと書けばfloat演算になるけど、いちいちf
書いてられないし、間違えやすいし。
>>555 あるかどうかわからないけど、ないとは言い切れないから。
557 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 05:02
もしかしたらアホなこと聞くかもしれません。ふと char str[n]; でnの大きさはどれくらいまで許されるのだろうと思いました。 試しに20メガではうまくコンパイルできました。 ところが実行したところ、常駐させているメモリ監視ソフトによると 使用されたメモリはごくわずかでした。 なんででしょう?
558 :
名無しさん@LV5 :2000/12/13(水) 07:27
559 :
555>556 :2000/12/13(水) 10:31
実際のアプリ開発に出てくる構造体ってこんなのばかりだから、 理想論ばかりも言ってられないんだよ。 それにfloat d;memset(&d,0,sizeof(d));ASSERT(d==0.f); って最初に一回だけやれば仮定の正しさを確認できるしね。 BOOL CreateProcess( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, // さらに構造体... LPPROCESS_INFORMATION lpProcessInformation ); typedef struct _STARTUPINFO { // si DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO;
560 :
>557 :2000/12/13(水) 11:54
仮想記憶のおかげかもしれませんね メモリを確保しても実メモリが実際に用意される訳ではありません 実際に読み書き(書きが当然先ね)が開始されてから実メモリが 割当てられます。 あるいは実際に読み書きしても、いつまでも実メモリが割当てられる とは限りません
561 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 19:56
GetTickCount()の返す値がその最大値(2^32)から0へロールオーバーする 際のシステムの動作確認をする為に最大値を取る直前の値に設定したいのですが どうすればいいでしょうか?システムはWin98です。
562 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 20:10
↑49.7日放置プレイで可能ってのは無しですよね
563 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 21:53
設定はできないから49.7日放置プレイだなあ。 マシンを50台用意して49日待てば、毎日1回テストできるね。
564 :
名無しさん@お腹いっぱい。 :2000/12/13(水) 21:59
MyGetTickCount(), MySetTickCount()作って #define GetTickCount MyGetTickCountしてリビルドかける。
565 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 00:07
566 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 00:38
ひとつ気になった事。 C++で、仮想関数を持つクラスのコンストラクタで、 memset(this,0,sizeof(*this)); とした場合、仮想関数テーブルへのポインタとかは、 保障されるのでしょうか?
567 :
>566 :2000/12/14(木) 00:58
VMTへのポインタはsizeofの値にちゃんと含まれてるので、破壊される可能性大。 まあこれは実装の問題だから言語仕様にはなかったはずだけど。 いずれにしてもメンバ変数はちゃんとコンストラクタで初期化しよう。
568 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 01:16
>>567 さん
うーん、
わたしの作るクラスのメンバ変数は、ほとんど0に初期化するので、
いちいち、m_var=0;していくのはめんどくさく思っています。
可読性もmemsetに比べていまいちです。
memsetに変わる、なにか良い方法は無いでしょうか。
vtblのポインタをmemsetする前に退避するような方法だと
処理系依存になってしまいますね…
Cの構造体もほとんどmemsetなので、C++に修正する場合不安で仕方がありません。
569 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 01:20
初期化するのが面倒なほど大きいクラスってのは、 おかしいのじゃない?
570 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 01:29
>>569 さん
とりあえず、クラスの構造や規模は突っ込まないでください(^^;
569さんは、初期化するのが面倒な時ってありませんか?
571 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 01:39
ポインタや浮動小数点を使用する場合は、 559さんの言うようにASSERTを入れておいて、 移植の時に未来の自分や他人が書き直すのを期待したいです…
572 :
567>568 :2000/12/14(木) 01:39
>>559 のmemsetを使わないめんどくささ・危険さとは、
構造体を定義する人と初期化するコードを書く人が別々で、
なおかつ定義が黙って勝手に変更される可能性があるということ。
これをユーザが毎回監視してソース全体を書き換えるのはかなり危険。
それに対してクラスの場合は定義する人も初期化コードを書く人も同じなので、
定義を変更した時点で初期化コードを(しかも一箇所)書き換えることが可能。
よって面倒なだけで、危険はない。我慢しよう。
C -> C++のトランスポートだったらこんなのもありかも。
/* C */
typdef struct{
int n;
} foo;
void use_foo(foo *f);
// C++
class bar{
foo n;
bar() { memset(&n, 0, sizeof(n)); }
void use() { use_foo(&n); }
}
573 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 01:45
なるほど… 集約関係にするということですか。
574 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 02:26
学校のSunOSでgcc使っているのですが、リンクするlibcのバージョン ってどうやって知ればいいでしょう。
575 :
名無しさん@お腹いっぱい。 :2000/12/14(木) 02:43
>>574 ldd hoge
とかじゃだめ?
hogeにリンクされてるライブラリがわかります。
576 :
574 :2000/12/14(木) 03:24
それだと、/usr/lib/libc.so.1 だってことはわかるのですが、 そのバージョンが知りたいのです。
577 :
575 :2000/12/14(木) 05:10
うーむ。 わからない。 バージョンってどのことを言ってるの? FreeBSD 4.1.1-Rだと ldd hoge で libc.so.4 => /usr/lib/libc.so.4 とか出るけどこれはFreeBSDのlibcバージョン4なのかなぁ?
578 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 14:04
>> 564 そうしてみます。 <(_ _)> サンクス
579 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 18:59
最近dllの勉強始めたんですけど どうも、std::string 型周辺の動作がおかしいです えっと、環境はVC++6.0、NTsp6です class __declspec(dllexport) TEST{ TEST(std::string str){ } } (VC++のプロジェクトで勝手にできる部分は省略) これを、dll にしました このとき作成されたlibを参照したアプリでクラスのインスタンス を生成すると、コンストラクタの最後 basic_stringのメモリー開放部分で吹っ飛びます(渡した内容はちゃんとしてます) これは、どこのバグなんでしょうか、dllでstring型は開放できないんですか? dllでないときは当然ちゃんと動きますんで、コンパイラかdllの問題だと思いたいんですが・・・
580 :
名無しさん@+*/%- :2000/12/15(金) 19:34
そもそも、言語仕様に依存する形式を生のDLL にするのがまずい。 ランタイム環境およびインターフェースの整合性を 考慮してCOMといった規格に乗っけましょう。 もう一つ、「なぜDLLでなければいけないのか」という 部分を検討してください。
581 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 20:59
>>579 Cマガ11月号のCOMの解説に同じ問題が書いてある。
COM使いな。
582 :
名無しさん@お腹いっぱい。 :2000/12/15(金) 23:22
>>579 DLL側とクライアントのメモリマネージャが異なるからね。
(std::string が内部でどんなことをしているのか調べれば判るはず。)
どうしても必要なら、DLL側か、クライアント側かのどちらかで、
allocate関係のインタフェース全て用意する必要がある筈。
〜Create()生成
〜Resize()変更
〜Destroy()破棄
とか。
(同じコンパイルオプションならうまく行く場合もあるのかな?)
#COM…完全にWindows依存になるね。
583 :
会社休んだ :2000/12/18(月) 12:10
突然質問君失礼します。 今回仕事で、IEを外部操作するAPを作成する事になりました。 開発環境はVC++6.0です。API,MFC等なんでも利用可。 とりあえず、ダイアログベースで作成します。 ダイアログに作成したボタンを押せば起動済みのブラウザの「進む」「戻る」ができればよいです。 全くわからず固まってます(;´Д`) VC++は最近始めたばかりなので、どこから手をつけてよいか分りません。 どうか、さわりの部分だけでも教えていただけないでしょうか?
584 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 13:39
VBで作ったプログラムから、ネットワークコンピュータの パスワードがかかっている共有フォルダにアクセスしたいの ですが、どうしたらいいんでしょうか。 ネットワークコンピュータから一度パスワードを指定して フォルダにアクセスしたあとで、 自分のプログラムからCreateFileでファイルを開くことは できたんですけど…。それでは、困るんです。
585 :
名無しさん@お腹いっぱい。 :2000/12/18(月) 14:04
>>584 @echo off
net use \\%1\ipc$ %3 /user:%2
とかいうバッチをたたいてやるというのはどうよ。
引数に
コンピュータ名 ユーザ名 パスワード
を渡してやればよい。
586 :
584 :2000/12/18(月) 15:54
>>585 レスありがとうございます。
早速試してみたところうまくいきました。
エラーのチェックとかはコマンドの最後に > a.txt とつけて、その中に
コマンドは正常に完了しました。
とか出てることを見る…、これが正しいやり方なのかわからないですけど、
そうしてみます。
587 :
585 :2000/12/18(月) 16:27
>>584 それよりは下の関数を使うほうが良い。
エラーチェックは手抜きなので仕事ならもっとちゃんとやること。
(終了ステータスコードは、0が正常ね)
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Const INFINITE = &HFFFF ' Infinite timeout
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Function doConnect(strHost As String, strUsr As String, strPwd As String) As Long
Dim lPid As Long
Dim hProc As Long
Dim lRes As Long
Dim lExitCode As Long
lPid = Shell("net use \\" & strHost & "\IPC$ " & strPwd & " /user:" & strUsr)
hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, lPid)
lRes = WaitForSingleObject(hProc, INFINITE)
lRes = GetExitCodeProcess(hProc, lExitCode)
doConnect = lExitCode
End Function
588 :
584 :2000/12/18(月) 17:51
>> 585 2度に渡るレスありがとうございます。 そのソース見させて頂いて私の考えがかなりあほだと、 わかりました。 会社のソースにこんなん残していっていいのか、と 正直思ってましたんで。 そのソース使わせて頂きます。
589 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 04:27
NKF no source tsukaeyo.
>>589
591 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 11:04
char *gnut_strdelimit(char *string, char *delim, char new_delim) { char *c; for (c=string;*c;c++) { if (strchr(delim,*c)) *c=new_delim; } return string; } このfor文のところがよくわかりません。 どこからどこまで、をforで指定しているのですか? 超初心者な質問ですが、教えてください。
592 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 11:20
typedef struct _Gnut_List Gnut_List; struct _Gnut_List { void * data; Gnut_List * next; }; 更にこれもよくわからんです。 こんな形のtypedef初めてみました。
593 :
優しい名無しさん :2000/12/19(火) 11:27
>>591 この for ループは string の頭から行って最初に 0 でない値に当たるまで回ります。
>>592 定石です。
単に
struct Gnut_List {
void * data;
Gnut_List * next;
};
とやると Gnut_List の未定義エラーがでるので
ダミーの struct _Gnut_List をかまします。
>>593 >この for ループは string の頭から行って最初に 0 でない値に当たるまで回ります。
なにを言ってるかわかりまへん。
正解は「string の頭から \0 の1個前」まで。
595 :
591 :2000/12/19(火) 11:55
591の方がまだよくわからないのですが、 gnut_strdelimit(query,"*?._<>|[]{}()_=+-/!@#$%^&",' '); に対しては、どのようにうごくのでしょうか? string の頭から \0 の1個前までまわるということは、 なんとか理解できたのですが、 if (strchr(delim,*c)) *c=new_delim; のところが、こんどは、よく分からなくなってきました。 お願いします!
596 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 12:19
そもそも591のインデントが悪い つーか、個人的にifやforが1行にしかかからなくても {}をつけるという主張をしたいんだが・・・どうよ、こういうケース char *gnut_strdelimit(char *string, char *delim, char new_delim) { char *c; for (c=string;*c;c++) { if (strchr(delim,*c)){ *c=new_delim; } } return string; } ほら、ちょっとだけ見やすくなったところで再チャレンジ あと、592、typedef位調べろよ、基本中の基本なんだから!! たぶん、どんなへぼHELPにものってるし、そのまま検索しても 良いページに当たるぞ
>>595 stringの文字列中にdelim中に含まれる文字が存在するとnew_delimに置換する
例えばquery = "abc*def?efg<hij>"の文字列だとすると
gnut_strdelimit呼び出し後のqueryは"abc def efg hij "
となる
598 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 12:21
あ"あ"へぼなオレ 半角スペースでインデント打ってもだめなのね・・・ 次からは、全角で入れよう
>>596 すげー細かいが個人的には
> if (strchr(delim,*c)){
if (strchr(delim,*c) == NULL){
かなぁ
600 :
598 :2000/12/19(火) 12:34
おれも、暗黙的な使い方はしない 前読んだ本に、 「プログラマーは比較的IQが高いので、それを見せようとするソースを書く傾向にあるが、・・・・」 て、ところがあったけど、これもその例じゃないかな? 初心者に対しての敷居を高くしてる原因に思える。
601 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 12:34
>>595 これと意味は同じ
char *gnut_strdelimit(char *string, char *delim, char new_delim)
{
char *c;
for (c=string;c=strpbrk(c,delim);c++) {
*c = new_delim;
}
return string;
}
602 :
596=598=600 :2000/12/19(火) 12:38
ああ、それでね、 ==NULL と書かなかったのは、それを書いたら 混乱するかな?と思った、コメントすりゃ良かったな
603 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 12:39
>>591 >gnut_strdelimit(query,"*?._<>|[]{}()_=+-/!@#$%^&",' ');
>に対しては、どのようにうごくのでしょうか?
queryに "*?._<>|[]{}()_=+-/!@#$%^&" の中の文字が
含まれていれば、それを ' ' で置き換える。
たとえば、 "a=b+c" が "a b c" になる。
604 :
591 :2000/12/19(火) 13:48
どうも有難う御座いました。 ほんとに初心者なんで、さっぱり分からなかったのですが どうにか、やっと理解できそうです。 今、学校でソースコードの解読を突然させられてて、結構 楽しいのですが、こうも意味がわからないと、先に進めなくて 困ってたところでした。 軌道にのるまで、また、いろいろ質問させてください!
>>599 眠たいんか?
そのコードは NULL ポインタをさがしてるんじゃなくて、NUL文字('\0')を
探してるんじゃ。ポインタとchar型を比較してどうする。
そんなんでよくコンパイラ通せるな。
書くんだったら
if (strchr(delim,*c) == '\0){
と書け。
>>600 偉そうなこと書いてコードも読めんのか。
>>605 おまえも寝てるだろ
if (strchr(delim,*c) == '\0'){
が正解。
607 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 14:12
>>605 は無視してください
彼はstrchrを使ったことの無いネタ心者です。
また、厨房なのでstrchrの戻り値を調べずにアホなことを言ってます。
> 偉そうなこと書いてコードも読めんのか。
オマエガナー
608 :
デフォルトの名無さん :2000/12/19(火) 14:19
判定:605が厨房
609 :
591 :2000/12/19(火) 14:27
俺から見たら全員よくできます
611 :
名無しさん@お腹いっぱい。 :2000/12/19(火) 14:35
>>599 >>602 >>605 >>606 全般的に寝てるだろ。
if (strchr(delim, *c) != NULL)
が正解
==NULLじゃ見つからなかったときにif節が実行される堕炉。
'\0'と比較してるやつは論外。
まあいずれにしろ。 charをstrchrに渡すのは、符号拡張が引き起こす微妙で腐った問題が あるので、あまり好ましいとは言えない。 最低でも0xffでマスクするか、unsigned charにキャストしてから 渡すべきであろう。 NULLと明示的に比較するかどうかについてだが、俺はまずしないな。 そういう意味では元のソースの書き方の方が俺の好みに合っている。 ただし第2引数はconst char *にするし、第3引数はintにするだろう。
>> if (strchr(delim,*c)){ >if (strchr(delim,*c) == NULL){ ifの条件を逆にしている俺、逝ってよし >> 偉そうなこと書いてコードも読めんのか。 >オマエガナー オレモナー # ネタ心者は俺か...611サンキュ
∧∧ プハー
¶( ゚Д゚) =3
>>614 ヨクアルコトナンダナ
ゝ| つ日~~
(,|/ )
U U
616 :
591 :2000/12/20(水) 12:05
また失礼します。あつかましいですが、どうか助けてください。 /* void gnut_list_foreach(Gnut_List * list, void (*GFunc)(void *, void *), * void *userdata) * * for each element in list, call GFunc */ int gnut_list_foreach(Gnut_List *list, int (*GFunc)(void *,void *), void *userdata) { Gnut_List *gltmp; g_debug(5,"list=%p\n",list); for (gltmp=list; gltmp; gltmp=gltmp->next) { if ((*GFunc)(gltmp->data,userdata)==-1) return -1; } g_debug(5,"returning\n"); return 0; } int (*GFunc)(void *,void *)の意味がまずよくわかりません。 なので、 for (gltmp=list; gltmp; gltmp=gltmp->next) { if ((*GFunc)(gltmp->data,userdata)==-1) return -1; } もわからないです。 int (*GFunc)(void *,void *)はこんな形のは初めて見ました。
617 :
591 :2000/12/20(水) 12:07
あとshare_item *share_find(int ref)などで、よくrefという 変数が定義されるのですが、refというのは、 一般的に何の略になるのでしょうか?
618 :
591 :2000/12/20(水) 12:09
struct _share_item { char *path; /* the pretty path to display */ char *upath; /* the pretty path tolower'd for searching */ char *fpath; /* the full path for accessing the file */ int size; int ref; time_t mtime; }; にもrefというコトバが出てきます。 どうかお願いします。(あつかましくてすみません、 全然分からないのです)
JAVAからブラウザを起動させようと思ったらどんな方法がベストですか?
620 :
名無しさん@お腹いっぱい。 :2000/12/20(水) 12:24
>>618 まず、GFuncは関数ポインタ型ですね。
void (*fp)();
と宣言すると、fpという名前の関数ポインタ型変数が
出来て、void func()という関数があったとしたら
fp = func;
の様にある関数を()抜きで代入すると、fpへfuncへの
ポインタが入ります。で
(*fp)();
としてやると、func()が呼び出せます。
refは一般的にreferenceの略で、参照を意味します。
int型なので、インデックスのような気がしますが。
どちらにしろ、変数名なんて当てにしないで、コード
を読んで、変数の意味を探る必要があるでしょう。
621 :
デフォルトの名無さん :2000/12/20(水) 12:34
referee; reference; referred; refining; reformation; reformed; reformer; refund; refunding; ここでは referent 指示対象 かと
>>618 つか、それって仕事のコードじゃないのか?
こんな所にぺたぺた貼っていいのか?(笑)
623 :
591 :2000/12/20(水) 12:41
ありがとうございます。 仕事のコードじゃなくて卒論で使うソフト の解析をしています。 失礼しました。
624 :
591 :2000/12/20(水) 12:46
オープンソースなので大丈夫です。 でも、解析が難しくて大変です。
625 :
むぎ茶 :2000/12/20(水) 14:19
デバッガ起動してステップ実行するのもいいぞ
>>616 リストの検索の定石:リストの終端まで繰り返し
>for (gltmp=list; gltmp; gltmp=gltmp->next) {
またここではコールバックを行なってgltmp->data,userdataを処理している
>if ((*GFunc)(gltmp->data,userdata)==-1)
コールバック関数が-1を返した場合、処理を終了する
>return -1;
>}
# gnut_lib.c, Gnut_List.cときたから
# つぎはgnut_net.cかGnut_Queue.cかな?
627 :
591 :2000/12/21(木) 00:16
>626 ありがとうございます。 gnutを解析しようとしてますが、かなり分かりません。 どこが、キーポイントでしょうか? (かなりあいまいな質問ですが) また、お助けください。
628 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 00:31
VC++6.0です printfで使うような書式文字列と、 カンマ区切りの文字列(カンマの個数は可変)を、 別々に(動的に)用意して、 printf文と同じように出力したいんですけど、 うまい方法ありますか? たとえば"2ちゃんねるは%sで%sな掲示板"って文字列と "ナウ,ヤング"という文字列から "2ちゃんねるはナウでヤングな掲示板"と言う文字列を作る方法。 vprintf系が使えるのかと思ったら、使えなさそうだし・・・ よろしくお願いします。 #例文のセンスのなさには目をつぶって下され。
629 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 00:40
>>617 -618
だれも正解書いてない様だけど…
参照(リファレンス)カウンタです。
共有アルゴリズムの基本なので、詳しくはアルゴリズムの本でも見てください。
>>627 個人のライブラリの事まで知るか。
gnut…GNU関係?
630 :
名無しさん@お腹いっぱい。 :2000/12/21(木) 00:50
カンマを切り分けするしかないね。>628
632 :
628 :2000/12/21(木) 23:14
カンマ切り分けはするしかないとして、 書式文字列側は、これも切り分けるのでしょうか?
633 :
591 :2000/12/22(金) 00:54
>626 gnutをよまれたことがあるのでしょうか? 今cli_interfaceのメイン関数をかなり雑に読みきったんですが、 こういうソースファイルでは、srcに入っていても使わないc fileとか も存在するのでしょうか? 一回もみていないようなファイルもあるのですが、 やっぱり間違えてるのかな? やっぱり初心者にはなにかときついです。
つまり、一回もつかわない関数とかがかなり余ってる状況です。
またまた抽象的な話ですみません。
気にするな>633
637 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 03:34
>>633 あのねぇ〜
ずっと読んでいたけど、線形リスト・文法・関数ポインタと質問して
ついにはgnutを読んだことある人いますかって?
Cの概念全部ここで聞き出す気か?
K&Rでも読んで、ちっとは自分で勉強しなさいっ!
ごめん。
微妙に分からんことが多いもので
>>633 626ですが...
> gnutをよまれたことがあるのでしょうか?
まぁ、ざっと流し読みしたことはあるけど...
それを聞いてどうするつもり?
> こういうソースファイルでは、srcに入っていても使わないc fileとか
> も存在するのでしょうか?
lintかましてみれば、定義したけど使ってない関数とか検出できるよ
あと、解析するときのアドバイスだけど
全ソース1万ステップ超の場合、頭から追っていくだけでは多分理解できない
まず、モジュール構成図とか大まかな地図を作って、
入り組んでいる所はソースを追う様にしていった方が効率がいい
環境があるなら、動かしてみてそれをデバッガで
追っていったりする手もある
楽して人に教えてもらうより、
苦しんで自分で学んだ方がずっとためになる。
頑張れ
641 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 15:33
K&Rってすごいよね。 Cをやる環境ならどこにでもある。 絶対誰かが持ってる。 ふと、自分のやつの見ると”第2版221刷”になってた みなさんのは大何刷?
642 :
639 :2000/12/22(金) 15:52
2版253刷さっき買った
>640 さんくす もうちょい自力で頑張ります。 でも、また教えてください。
さっきまでは、C入門使ってた。原田編の
645 :
名無しさん@お腹いっぱい。 :2000/12/22(金) 16:40
2版発行が89年ということは、1版は19年刷られ続けたんだ 1版の最終刷って何番なんだろう?
646 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 12:24
flag argumentというのはどういう意味ですか? いろいろ調べてもよくわからないです。
647 :
名無しさん@お腹いっぱい。 :2000/12/24(日) 17:49
a
648 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 03:52
Linux(カーネル2.2.14)での質問です。 あるプロセスがmallocしてメモリを確保したとします。 その後に fork した場合、子プロセス側でもメモリを解放すべきなのでしょうか。 さらに、その子プロセスが exec した場合はヒープはどうなってしまうのでしょうか。
649 :
名無しさん@お腹いっぱい。 :2000/12/25(月) 05:43
>>648 親のデータ領域は子供にもそっくりコピーされる。そこで子が更にexec()
した場合は、データ領域はすべて破棄されて新しいプロセスがロードされる。
exec()したプログラムが元々居た奴追い払って場所ぶんどるイメージ。
ちなみにOSによってはvfork()ってのがあって、fork()した時のデータ領域
コピーを省略するシステムコールもあったりする。これはfork()してすぐ
exec()するならコピーするだけ無駄だ、という事で作られたんだけど、最近
はVMが賢くなってきてるのでfork()でも無駄がなかったりする。
まぁふつうは素直にfork()使えばいいだろう。
650 :
648 :2000/12/25(月) 06:44
子プロセスが exec する場合は親が確保したメモリの心配はしなくてよい ということですね?感謝です。
651 :
デフォルトの名無しさん :2000/12/29(金) 10:24
age
652 :
デフォルトの名無しさん :2000/12/29(金) 11:52
一度でいいから、世界中の人間をあっと言わせるようなプログラム思いつきたい。
653 :
奥さん、名無しです :2000/12/29(金) 12:37
>652 ウイルス?
654 :
>652 :2000/12/29(金) 14:24
自己進化するプログラムとか?
655 :
名無しさん@お腹いっぱい。 :2000/12/30(土) 03:01
Mac OS Xの半透明ウィンドウってどうやって作るんでしょうか? Windows 2000ならAPI一発なんですが…。
656 :
デフォルトの名無しさん :2000/12/30(土) 04:30
657 :
名無しさん@お腹いっぱい。 :2000/12/30(土) 08:28
>>656 ありがとうございます…って公開しとらんのかい>Apple
658 :
新米ギコ@寄生虫 :2001/01/01(月) 00:14
∧∧ ¶( ゚Д゚) <あけましておめでとうなんだな。今年もよろしくなんだな ゝ|U |┐ (.|/ |┘ U U
ギコ猫も、このスレで終りだな。
660 :
デフォルトの名無しさん :2001/01/02(火) 20:49
開けましておめでとう御座います。 さっそくですが質問があります。 あるプログラム内で他のコマンド (プログラム)を実行させその結果を始めのプログラム 内で使用したいのですが、どんな方法があるのでしょうか? 現在exec関数を調べていたのですが、どうも、exec関数では、 最初のプログラムに結果を戻すことができなさそうなのですが・・・・ どうかお願いします。
661 :
デフォルトの名無しさん :2001/01/02(火) 21:26
age
662 :
660 :2001/01/02(火) 21:42
教えて欲しいあげ
663 :
デフォルトの名無しさん :2001/01/02(火) 22:11
664 :
名無しさん@お腹いっぱい。 :2001/01/02(火) 22:18
665 :
664 :2001/01/02(火) 22:20
ありゃ、かぶった。 じゃ、pipe() して dup() して fork() して exec() で read(), write()
666 :
デフォルトの名無しさん :2001/01/02(火) 22:21
>>660 CreateProcess()で開けば色々出来るだろ
667 :
デフォルトの名無しさん :2001/01/04(木) 01:31
>>660 execの対象はいじれないのか?
標準出力拾いたいだけなのか?
668 :
660 :2001/01/04(木) 14:51
質問していながら、今日まで、ずっと祖母の家に行っており
スレを見ることが出来ませんでした。
>>667 そうです!execの対象(検索エンジンなまず)をいじろうとすると、
初心者の自分には太刀打ち出来ない状況なのです。
いじらないで、できる方法があれば、教えてください!
669 :
デフォルトの名無しさん :2001/01/04(木) 16:59
a
670 :
デフォルトの名無しさん :2001/01/04(木) 17:56
もいちどあげ
671 :
デフォルトの名無しさん :2001/01/04(木) 18:19
MIDIのストリーム再生に使う、mds拡張子のファイル ってどうやって作るんでしょうか?mid→mds変換ツール があったら教えてください。
mid2mds>671
673 :
660 :2001/01/04(木) 21:11
http://www.fry.is.sci.toho-u.ac.jp/~takada/twosoft/technic/6.html をみてfork exec pipe read closeを使って標準出力を取り込むことは
分かったのですが、コンパイルを行うと
forkにより作られた子プロセスを終了させるのに使う
sigignore( SIGCHLD ); というところでいっつも
> cc a.c
/tmp/ccDo6697.o: In function `main':
/tmp/ccDo6697.o(.text+0x1e): undefined reference to `sigignore'
というエラーがでます。どういうことなのでしょうか?
行き詰まってます。
674 :
660 :2001/01/04(木) 21:14
上のページでは、 sigignore( SIGCLD ); /*子プロセスは勝手に死亡するようにする (forkを使うときのおまじない。そのうち解説します)*/ と書いてあるのですが、これはこのまま使えるのですか?
675 :
デフォルトの名無しさん :2001/01/04(木) 22:11
age
676 :
660 :2001/01/04(木) 23:07
今日はもうねます
677 :
デフォルトの名無しさん :2001/01/04(木) 23:46
う〜ん?俺にはわからん。
678 :
デフォルトの名無しさん :2001/01/05(金) 15:02
>>673 ひとりごと
waitpid()で殺したほうが確実かと・・・
もうひとこと
ファイルインターフェースにすると楽
使ったこと無いからはっきり覚えてないけど
仮想ファイル作る方法があったはず
679 :
うぉろ :2001/01/05(金) 15:05
遮断周波数や許容リプル等を入力するだけで、 IIRの伝達関数が出てくる、IIRの設計ツール知りませんか? FIRならいっぱいあるんだけど…
680 :
デフォルトの名無しさん :2001/01/05(金) 15:34
環境 VC++6.0 文字データを SJIS→EUC EUC→SJIS に変換したいんですけど 何らかの形で実行ファイル内に コード表実装しなければならないんでしょうか?
681 :
デフォルトの名無しさん :2001/01/05(金) 16:37
>>680 そこまでしなくてもできたような気がする。
ただ、詳しいやり方は知らん。
>>660 popen()使った方がはるかに楽ちんだよ。
man popenはしてみたの?
標準出力を取り込みたいだけなら、ここまでする理由は
ほとんど無いといってよい。
どうしてもこの路線で行きたいのなら、
さしあたりsigignoreをsignal(SIGCHLD, SIG_IGN);
もしくはsigaction()で代用すると良いだろう。
683 :
デフォルトの名無しさん :2001/01/05(金) 17:22
>>680 *SJIS->EUC
if 上位バイトが0xe0以上
上位バイト - 0x40
if 下位バイトが0x40から0x9e
((上位バイト - 0x70) * 2 - 1) | 0x80
if 下位バイトが0x7e以下
下位バイト - 0x1f
else
下位バイト - 0x20
else
((上位バイト - 0x70) * 2) | 0x80
下位バイト - 0x7e
*EUC->SJIS
if 上位バイトが奇数
(上位バイト & 0x7f + 1) / 2 + 0x70
if 下位バイトが0x5f以下
(下位バイト & 0x7f) + 0x1f
else
(下位バイト & 0x7f) + 0x20
else
(上位バイト & 0x7f) / 2 + 0x70
(下位バイト & 0x7f) + 0x7e
if 以上の計算結果後の上位バイトが0xa0以上
上位バイト + 0x40
大昔に、なんか必要で作ったプログラムから見つけてきた。
なんでこんな式になったか、もう忘れた。(笑)
EUCって、JISコードにハイビットが立っただけだったと
記憶してるが、違ったかな?
違った。スマソ。 MultiByteToWideCharとWideCharToMultiByte
あれ、EUCだったのね。鬱だ・・・ 「応用C言語」に載ってた気がしたけど忘れた・・・
687 :
デフォルトの名無しさん :2001/01/05(金) 23:17
CやPerlをつかってプログラミングするにはWindowsよりLinuxのほうが適しているのですか?
688 :
名無しさん@お腹いっぱい。 :2001/01/06(土) 00:09
一応C++でSTLを勉強してるんですが、あるファイルの内容を前後裏返しにしてコピーするにはどうしたらよいのでしょうか。
689 :
デフォルトの名無しさん :2001/01/06(土) 00:21
1000文字くらいの文字を格納して、プログラムに使用したいのですが、 char型では256文字までですよね? 全然足りないのですが、 こういう場合はどうやるのがいいのでしょうか??
690 :
デフォルトの名無しさん :2001/01/06(土) 00:24
1000文字くらいをある変数に格納して使用したいのですが、 char型では256文字しか格納できません。 全然足りなくて途中で切れてしまうのですが、 こういう場合はどのようにしたらいいのでしょうか?? 教えてください。
691 :
デフォルトの名無しさん :2001/01/06(土) 00:24
2重カキコすみません
692 :
デフォルトの名無しさん :2001/01/06(土) 00:29
>char型では256文字までですよね? その結論までに至る考えをお聞かせ下さい。
693 :
>689 :2001/01/06(土) 00:38
char test[260]; これでエラーでますか?
694 :
デフォルトの名無しさん :2001/01/06(土) 00:52
あれ? 256文字までじゃなかったんだ。 本見たらそう書いてあったような・・・・ 洗脳されてたのかな? 今1000文字までためしてみましたが、成功しました。 あれ??かなり疑問ですが、よかった。 ありがとうございます。 つまらない質問で時間をとらせました。すみません。
695 :
デフォルトの名無しさん :2001/01/06(土) 01:02
そういやDos時代に 配列の最大が64kって制限あったな
696 :
七資産 :2001/01/06(土) 03:47
質問いいすっか?VBでどの程度のことができるんすか?例えば電卓とか...
697 :
デフォルトの名無しさん :2001/01/06(土) 03:56
VB厨房には電卓でさえも難しいと思うよ(藁>696
698 :
デフォルトの名無しさん :2001/01/06(土) 14:10
>>696 大抵のこと
GUI環境のアプリで出来ないことって
想像できないが?
699 :
デフォルトの名無しさん :2001/01/06(土) 18:52
mprobeってどんな関数でしょうか? 自分が参考にしてるプログラムにでていたのですが、 本やネットで調べても分かりません。
700 :
デフォルトの名無しさん :2001/01/06(土) 23:41
mprobe?知らんぞ。そんなん。
701 :
デフォルトの名無しさん :2001/01/07(日) 00:19
ちと思ったんだけど「継承」って「詳細定義」って 呼んだ方が内容を良く表してる様な気がするんだけど 皆さんどう思います?
>>701 インターフェイスの実装のときはそうだね。
PASCALやBASICの文字列にはそういう時代があった>694 そもそもCには文字列という型は(でふぉるとでは)ないと思うぞ。
>>694 AnsiC辞典の「翻訳限界」の項目みたら
メモリオブジェクトの大きさの限界が32767(8ダッタカモ)バイト以上なら
ANSI-C互換と名乗っていいそうな。
(つかそんなことがかいてあった記憶がある。いま手元にないもんで)
だから多分ANSI-Cでも最悪char配列の最大が32Kっつのもありうるかと。
(勿論そんな制限無いほうが望ましいとANSIの規格にも明記されてるとか)
705 :
デフォルトの名無しさん :2001/01/07(日) 06:12
C++クラステンプレートで、クラスパラメータが特定の型や定数のときの クラステンプレートにのみ定義されるメンバ関数は どう書いたら良いでしょうか? Class template partial specialized あたりはわかるんですが、 クラスパラメータでメンバ関数の定義にだけ影響を 及ぼす書き方がよくわからないです。 使用コンパイラは gcc 2.95, VC++ 6.0 manual は 1996 Nov. ISO draft です。
706 :
デフォルトの名無しさん :2001/01/07(日) 21:04
>>705 そーゆーひねくれたことをせずに,素直に
template <class T>
class General
{
};
class Special : public General<int>
{
public:
void specialMember();
};
ってんじゃ解決できない?なんか template の使い方として違うよ
うな気がするのだが…。違うかな?
707 :
705 :2001/01/07(日) 22:04
706さん、ありがとうございます〜。 うんと・・それでいくと、下のような感じになっちゃって特定の型に のみ定義とゆうか、新しいクラスに定義かなぁと・・ できればひとつのテンプレートに定義できれば・・クラスが増えなくて いいのですけれど・・。(^^; template <class T> class General {}; class Special : public General<int> { public: void SpecialMember(void) { ::printf("member call.\n"); }; }; int main( void) { Special a; General<int> b; a.SpecialMember(); // ok b.SpecialMember(); // error; no matching function return EXIT_SUCCESS; } ↓こうやってみたのですが "cannot declare member funcion within General<T>"になっちゃいますね。(^^; template <class T> class General { public: void General<int>::IntSpecialized(void); };
708 :
ヒロユキ@ギコナビ :2001/01/07(日) 22:10
ギコナビ作者のヒロユキ@ギコナビです。 HTTPで2chにあるdatファイルの差分をダウンロードする部分を 作っていたのですが、どうも2chのサーバってRangeすると全部送って くるんだよね。 HTTP/1.1ってRange必須じゃなかったっけ? それとも、サーバの設定で禁止することができるのですか? あんましサーバに詳しくないもんで。 だれかわかる人がいたら教えてください。
709 :
デフォルトの名無しさん :2001/01/07(日) 23:15
710 :
705 :2001/01/07(日) 23:34
>709 たとえばベクトルを例にしますね。次元と型から、ベクトルのテンプレートクラスが できるとします。ベクトルの内積は一般に、ベクトルの次元数によらず定義できますけど 外積は3次元でしか正しい解が得られないようです。 3次元でしか扱えない操作ですが、同じ次元のベクトルどおしは 内積ができる。3次元のみ別クラスで考えてもいいですけど ベクトルとして扱えるテンプレートが折角あるのに、、という感じです。
711 :
デフォルトの名無しさん :2001/01/08(月) 01:14
>710 こんな感じで friend 関数にするとか(この場合は friend にする 必要もないが)。一応以下は gcc -Wall -pedantic -ansi で通った やつ。 template <class T, int n> class MathVector { friend T inner_product(MathVector<T, n> a, MathVector<T, n> b){ T result = 0; for (int i = 0; i < n; i++) { result += a.element[i]*b.element[i]; } return result; } friend MathVector<T, 3> outer_product(MathVector<T, 3> a, MathVector<T, 3> b) { MathVector<T, 3> result; result.element[0] = a.element[1]*b.element[2]-a.element[2]*b.element[1]; result.element[1] = a.element[2]*b.element[0]-a.element[0]*b.element[2]; result.element[2] = a.element[1]*b.element[0]-a.element[0]*b.element[1]; return result; } private: T element[n]; };
712 :
デフォルトの名無しさん :2001/01/08(月) 01:32
#include <iostream> #include <vector> class a { public: double da; double db; }; int main() { using namespace std; vector<a> va; vector<char> vc; a aa; aa.da=3.3; aa.db=3.4; va.push_back(aa); a* pa= new a; pa->da=3.5; pa->db=3.6; va.push_back(*pa); delete pa; for(int i=0;i<va.size();i++)cout<<va[i].da<< " " <<va[i].db<<endl; } これでうまくいくんですが、 これはクラスaのデフォルトのコピーコンストラクタが呼ばれて vectorにはコピーが入るって考えていいのでしょうか?
713 :
712 :2001/01/08(月) 01:34
あ、もしかして話の腰を折ったかしら すんません。
714 :
デフォルトの名無しさん :2001/01/08(月) 02:20
>>712 まあそーいうことですな。
より詳しくは,class a で
public:
a() {}
private:
a(const a&);
としてコンパイルして,エラーの出た個所を読んでみるとかすれば
いいかも。
ありがとうございます。
716 :
710 :2001/01/08(月) 05:33
711 さん どうもありがとうございます。 なるほど、特定の型を引数にとる形で特定するんですね。 同じような形で書いてみて、コンパイルできました。^^ でも、friend 構造がよくわかりませんでした。 関数テンプレートを使った template<class T> MathVector<T,3> outer_product(MathVector<T,3> a, MathVector<T,3> b); とは違うのでしょうか? マニュアル、もうすこし詳しく調べてみます。(^^;
717 :
708 :2001/01/08(月) 15:30
>>709 教えていただいたスレを見て、RangeしたらOKでした。
Rangeの方法を間違っていたようです。
どうもありがとうです。
718 :
706=711 :2001/01/08(月) 21:22
この outer_product() の実装は,private メンバにアクセスして いるから friend にしているわけ。 MathVector に public: T& operator[](int i) {return element[i];} みたいな public メンバ関数を作れば,private にアクセスする必 要は無くなるから,friend にしなくてもよくなる。普通の template 関数でいいわけだ。 ただ,一般にメンバ関数の代わりとして使う場合には,private メ ンバにアクセス出来ないと困るだろうから,今回のような実装を例 として出したというわけ。
719 :
710 :2001/01/09(火) 06:20
718=711=706さま なるほど理解できました〜 あと friend は宣言と定義も一緒にできる・・と 知らない厨房でした、ごめんなさい(^^; 御蔭で問題をうまく解決できそうです わかり易く教えていただいて、ありがとうございます(^^)
720 :
名無しさん@お腹いっぱい。 :2001/01/09(火) 14:20
logファイルの出力を最新の分何バイト以下とかに抑えたいのですが、 どういうロジックを組めば良いでしょうか? なお、ファイル名は固定としたいと思います。
1. 現在のファイルサイズを取得 2. 書き込むサイズを取得 3. 現在のファイルサイズ + 書き込むサイズ <= 最大バイト の場合、書き込む で、3.以外の条件の場合どうするの?
722 :
720 :2001/01/09(火) 15:16
>>721 最新の分だけでいいのです。古いやつはどっかに消しちゃう。
tempファイルに書いておいて、それをコピーという形になっちゃうんですかね。
ちなみに、ファイルのサイズを取得ってどうやるんでしょう?
環境はVC++&MFCです。
あと、書き込むサイズの取得はCString::GetLength()でいいんですよね。
723 :
デフォルトの名無しさん :2001/01/09(火) 18:01
こんにちは。 プログラムをコンパイルして実行すると ある程度時間がたってから、Illegal instruction(core dumped) というメッセージがでてプログラムが強制終了します。 しゅうりょうする場所をしらべてみると、 ある関数を呼び出した、途端に、終了しているようなのですが どういう原因が考えられるのでしょうか? もう3日くらい行き詰まっています。助けてください!
>>722 スマヌ、C++は良く分からないのだ
Cならファイルのサイズはstatでとってこれる
725 :
ボログラマー :2001/01/09(火) 18:17
>>723 言語何使ってるかくらい書いてもヨサゲ。
どっかでメモリはみ出してんじゃないすか?
printf()デバッグで追うべし。
>>724 > Cならファイルのサイズはstatでとってこれる
間違いです。 statは処理系依存です。
Cならfseek()を呼んでファイルの最後まで進んで、
ftell()を使うのが最も移植性の高い方法でしょう。
>>726 fopen()するときにバイナリで開いてネ。>言うまでもネーか。
728 :
723 :2001/01/09(火) 19:29
>>725 プログラムはcです。
どういう状況がメモリはみでていると
判断するポイントとなるのでしょうか?
かなり初心者なので、もう少し教えていただきたいです。
729 :
デフォルトの名無しさん :2001/01/09(火) 23:26
>>722 CFile::GetLength()ちゅうのもある。
>>721 なるべくportableなコードを書いた方がいいのは確かだが、「間違い」と
言うのはちと言い過ぎだろう。
730 :
デフォルトの名無しさん :2001/01/10(水) 00:04
>>723 1 テストプログラムでその関数だけを呼び出してみて、再現性をチェック。
2 特定の引数で再現するか、core dump するまえ、関数を呼ぶまえに
引数の内容を表示させてみる。
3 illegal instruction ・・?ということは互換性のない命令が
書かれているかもしれないので 関数のソースを読んで
特定のプロセッサ向け命令が書かれているか調べてみる。
ってのはいかがでしょうか。
731 :
730とは別人だが :2001/01/10(水) 01:00
他に、 スタック内容つぶしてしまってて、戻った途端に… てのも有り得る。 まあ、 >ある関数を呼び出した、途端に、終了しているようなのですが てのが本当に確かなら、これは外れかな。
732 :
723 :2001/01/10(水) 01:42
ありがとうございます。 まだよく分かりませんが参考にさせていただきます。 後、デバッグしていたらある関数に入るや、その関数内で宣言されている 配列がとんでもない数字になっていました。そしてバッドアドレスなどと いわれたのですが、こういう現象は何が原因なのでしょうか? プログラム自体にエラーはないように思うのですが。
733 :
723 :2001/01/10(水) 01:53
やっぱり、配列において 672375230, 672620932, 2, 2, 672549346, -1079267796, 134607838, 2, 672548994, 672620932, -1079268024, 3, 672375230, 672620932, 135020544, 135002948, 672344847, 1346927 という意味不明なものがいっぱいはいっているのが原因かなとおもいあたりました。 どうしたらいいのでしょうか? かなりまいってます。
734 :
730 :2001/01/10(水) 01:58
>>731 sprintf とかミスるとやばいコードになりますねー
スタックのバグはすぐに現れてこないし
コンパイラによってスタックの管理は杜撰だったりしますし・・
単なる初期化忘れ。
736 :
730 :2001/01/10(水) 02:05
>>732 関数内で宣言されている配列が動的確保(mallocやnew)でないなら
たぶん、スタック領域に入っているでしょう。(ふつうは)
んでもって、その配列の内容が意図したものとあきらかにおかしいなら
スタック領域を何かがつぶしてます。
sprintf とか、確保した領域を越えて内容を書きこんだりする
ものもありますし、もしスタックに入っているリターンアドレス
(戻り先)がつぶされれば、とんでもないところにリターンして
意味不明な命令を読んで illegal instruction になることも
ありえるかも。
初期化はしてると思うんですが。 なんかまちがえてるのかな?打つだし脳。
738 :
デフォルトの名無しさん :2001/01/10(水) 04:07
ダイアログ上に置いたエディットボックスにドラッグ&ドロップで ファイルを開けるようにするにはどうしたら良いですか?(メモ帳みたいにしたい) ダイアログ上ならWM_DROPFILESが取得できるのですが エディットボックス上のWM_DROPFILESの取得の仕方がわかりません SPY++で見るとメッセージは発生してるようなのですが・・・ ギコ猫様ご教授願います ちなみにMFCです
739 :
723 :2001/01/10(水) 11:21
配列の大きさがでかすぎるとエラーってでるのでしょうか。 c[300][100]とか指定してるのですが。
>>739 cの型は?
doubleとか、でかい構造体などのサイズの大きい型で、かつ
しょぼいコンパイラだとエラーが出るかもしれない
741 :
723 :2001/01/10(水) 11:28
charとintですが・・・
742 :
デフォルトの名無しさん :2001/01/10(水) 15:31
>>739 でないよ、エラー。VC++ と gcc でやってみたけど。
#include <stdio.h>
#define X (300)
#define Y (200)
int main(int argc, char* argv[])
{
char c[X][Y];
int n[X][Y];
int x, y;
for(x = 0; x < X; x++){
for(y = 0; y < Y; y++){
printf("[%d][%d] c = %d, n = %d\n", x, y, c[x][y], n[x][y]);
}
}
return 0;
}
743 :
デフォルトの名無しさん :2001/01/10(水) 17:04
何で、誰も指摘しないんだ?
>>723 よ、とりあえず問題のソースぐらいは提示しようぜ。
まろーくでまた〜り。 スタックつみすぎでぐた〜り
745 :
デフォルトの名無しさん :2001/01/10(水) 18:43
>>739 静的確保と動的確保の違いは?
メモリー確保時のエラーは基本的に
取る領域が物理的に確保できない時に起こる
でも、300×200位では問題ない気がするので
740が正解かもしれない・・・
746 :
723 :2001/01/10(水) 19:50
今日配列の大きさをかなり小さくしてみたら、 なんとかillegal instructionはまぬがれました。 デバッグしながら、みてみたら、たまにあやしげな動き をするのですが・・・今のところバグはないように思われます。 そのあやしげな動きといのは、デバッグで、最初に問題の関数に 入ったときに変数を一つづつ、displayしてみると 733の例のような配列になっているものと、そうでないもの(初期化されて 0)に分かれ、コードをいじったら、今度は問題の変数は直ったが さっき初期化されていた変数が733のようになっていたりといった具合です。
747 :
723 :2001/01/10(水) 19:53
しかし、配列の大きさをでかくしないとかなり物足りないので 困るのですが・・・・ 後ソースは入り組んでいてややこしい(あるプログラムを 改造したので、ものすごくややこしい)のと長いのとで アップは見合わせています。 ありがとうございました。メモリー確保についてもっと調べて 出なおしてきます。
748 :
追加 :2001/01/10(水) 19:59
後、問題のある変数も値を代入すると、 ちゃんと値が入るようになりました。 メモリ確保というのは、関数に入ったときに宣言されている変数 に対しておこなわれるのですね? 確保したときにメモリに入れられる値は、たとえその時点で まだその関数内でその変数に値を入れる式が現れていなくても (つまりデバッガで関数に入った直後でも) 最初に変数に値を入れるときの式からとってくるのですよね?
わかりにくい表現ですいません。
750 :
デフォルトの名無しさん :2001/01/10(水) 20:59
>>746 関数内で(staticキーワードなしに)普通に宣言した変数は
初期値は <強調> 不定 </強調> だ。
Cはその設計思想で安全性より効率をえらんだ。
よって確保されたメモリ(auto変数)をわざわざ0で初期化なんかしない。
だからソレよりまえに実行したときのゴミの値が残っている。
751 :
738 :2001/01/10(水) 23:30
誰か教えてくださいー
752 :
>738 :2001/01/10(水) 23:57
まず、エディットのプロパチーで、ドラッグドロップを許可にする。 CEdit派生のクラスを作り、それをエディトコントロールに割り当てる。 CEdit派生クラスにWM_DROPFILESのメッセージハンドルを追加する。
753 :
738 :2001/01/11(木) 00:01
ありがとうございます さっそく試してみます
754 :
さとこ :2001/01/11(木) 00:07
ウインドウズのダイアログリソースの書き方を教えてください。 ダイアログに貼り付けたスタティックコントロールを親にして ボタンなどのコントロールを貼り付けるには、どうすればいいの? 誰かおしえてください。
755 :
738 :2001/01/11(木) 00:08
おお!!できました 752さんありがとうございました!!!!
756 :
名無しさん@お腹いっぱい :2001/01/11(木) 15:23
スレッドってのがいまいち理解できません。 どこか、説明してあるHP知りたいです。
757 :
デフォルトの名無しさん :2001/01/11(木) 15:52
>>756 1っこのプログラムコードを複数のCPUが寄ってたかって
動かしてるイメージ(実際マルチCPUだとそうなる)
変数とかも共有なのでうまく排他とかしないと
どっかの掲示板みたくすぐデータぐちゃぐちゃになる。
758 :
756 :2001/01/11(木) 16:25
さっそく、レス下さって助かります。 ん?って事は一つのプログラムなのにCPUを2コ同時に使用する 可能性があるんですかね?
759 :
デフォルトの名無しさん :2001/01/11(木) 17:38
>>758 つか、そのためのものじゃん。
目的はおもに2つ。
1,同時に実行したい処理が2つ以上ある場合。
ブラウザで複数同時に画像ロードしてるのはよく見るでしょ?
2,マルチCPUを有効に生かす。
せっかくCPUいっぱいついててもマルチスレッドでないと
1アプリで1CPUしか割り当てられないからもったいない。
#午後のコーダにマルチCPUオプション付いたの最近知ったオレ
760 :
デフォルトの名無しさん :2001/01/11(木) 22:52
別に CPU が複数でなくても,スレッドの恩恵はあるよ。 プログラムってのは,部屋の中で誰かが作業している感じだと思い ねえ。この「部屋」ってのがプロセス空間で,「誰かさん」がスレッ ドね。部屋には,誰かさんが作業するためのいろんな場所(メモリ) やらなにやらの資源が割りふられていて,蛇口をひねると OS の恩 恵も受けられる。昔はこの部屋に,人は一人しかいなかったわけ。 で,複数の作業を同時に行なう方法としてマルチタスクとマルチス レッドってのがあるけど,マルチタスクは,こういう部屋を沢山作 るってこと。部屋の大きさによるけど,システムに負担がかかりそ うだってことは感覚的にわかるやね。 マルチスレッドってのは,部屋は増やさずに,部屋の中にいる人を 増やすってこと。場合によっては部屋は大きくしなくちゃいけない かもしれないけど,マルチタスクよりは負担が少なそうだね。 ただ,部屋を共有するわけだから,誰かが書きこんでる途中のノー トに,他の人(スレッド)が割り込んで書きこんじゃって,誰かさん の作業が滅茶滅茶になっちゃったり,といった,1プロセス1スレッ ド時代には考えられなかった事が起こる可能性があるから,ちょっ と大変ではあるね。
761 :
デフォルトの名無しさん :2001/01/11(木) 23:04
どうして引数というのですか?
関数から答を引っ張ってくる数だから。
∧∧
¶( ゚Д゚) < 同じ時間に別々のことを実行すること >スレッド
ゝ|U |┐プロセスと違うのはメモリ共有しているとか
(.|/ |┘同じ時間っつっても見掛け上だけどな
U U
∧∧
¶( ゚Д゚) <
>>761 argument(議論、主張)すると日本人は大抵引くからな
ゝ|U |┐
(.|/ |┘
U U
そういえば引数を「いんすう」と読んでた白痴がいたなぁ。。(遠い目
765 :
デフォルトの名無しさん :2001/01/12(金) 15:14
ファイル、またはメモリー上に自分で作ったbitmapを表示するやり方を教えて下さい。 MFC6.0でNT4.0です。 CBitmapにデータを入れてselect_objectしてbitbltで表示ってのは 分かったのですが、CBitmapにどうやってbitmapを入れてやれば良いのかが わかりません。 よろしこしこしこ
766 :
デフォルトの名無しさん :2001/01/12(金) 15:26
>765 >CBitmapにどうやってbitmapを入れてやれば良いのかが わかりません。 ぼくはCreateDIBPatternBrushでCBitmapに書きこんでしまいました(馬鹿
>>764 俺も昔そう読んでたぞ。鬱だ死のう。
っていうか、「ひきすう」って湯桶読みだし。
768 :
けろ :2001/01/12(金) 16:38
769 :
デフォルトの名無しさん :2001/01/12(金) 16:53
名前付きパイプの使用時にConnectNamedPipe()を呼びますが、 接続がされるまでこの関数から制御が帰ってこないですよね。 そのときにアプリケーションを正常終了させるいい方法はないで しょうか? スレッドを作ってそこでConnectNamedPipe()をすればいいのかな とも思いますが、そのスレッドも強制終了させるようになって しまいその後のOSの動作に支障をきたすのではないかと心配です。
770 :
756 :2001/01/12(金) 16:57
>760 おお、非常に分かりやすいっす。 細かい事は抜きにして、感覚的には理解できた気がする。 ありがと〜。
771 :
デフォルトの名無しさん :2001/01/12(金) 19:36
>>769 Overlapped I/Oを使わない場合の話だな。
定石はしらんが別の監視スレッドは必要だろう。その上で、volatileな
フラグを設定するなどした上で、監視スレッド側からクライアントとして
接続して起こせばよい(あまり美しくはないけれども)。
772 :
デフォルトの名無しさん :2001/01/12(金) 19:51
猫でもわかるプログラミングで 本当にプログラミングを理解しちゃった猫は居ますか?
773 :
デフォルトの名無しさん :2001/01/12(金) 22:10
Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´д`) < ギコ猫は分かったみたいだが ( ∪ ∪ | おれはだめだったもなぁ (___)___) \__________
774 :
竹内 南 :2001/01/12(金) 23:29
リッチテキストで文字と文字の縦の隙間を変えるには どうればよいのでしょうか? 教えてほしいです。 VC6でMFCは使ってません。 お願いします。
775 :
デフォルトの名無しさん :2001/01/13(土) 00:04
自分のプログラム知識では全く納得がいかんことが おきてしまいます!!! cプログラムですが ただdouble型を double rkyori; と定義した後 rkyori = 0; kyori=strdup(network); rkyori = atof(kyori); といった感じ(間はかなりはしょっています。 rkyoriにはちゃんと値が入ります。)で普通にプログラムを 組んで、デバッグを行ったら No symbol "rkyori" in current context とまるで、rkyoriが存在していないかのような扱いを受けるのです!!! これはやはりrkyoriが宣言されていないのかと思いなんど見返しても double rkyori;と関数の最初で定義されてるのです。 こういうことは何故起こるのかどうか教えてください。 プログラムも卒論も前に進みません。
776 :
デフォルトの名無しさん :2001/01/13(土) 00:21
わからん、atofが悪いのかなあ。 そんなわけないよなあ。どうしたらいいの?
∧∧ *
¶( ゚Д゚) / <
>>775 kyoriはどこで宣言してるのかな
ゝ| つ●)
(.| |
U U
778 :
デフォルトの名無しさん :2001/01/13(土) 00:37
>ギコさん 同じ関数の頭で char *t1,*t2,*kyori; という形で宣言しております。 お願いします。
779 :
デフォルトの名無しさん :2001/01/13(土) 01:32
>>775 OSとコンパイラを教えてちょ。
コンパイル・リンクは成功してるの?
>No symbol "rkyori" in current context
と怒られるのは、いつ? デバッガで実行したときなの?
780 :
デフォルトの名無しさん :2001/01/13(土) 03:01
たまに次元のはざまに落ちるスレがあります(いまもウルトラ初心者質問スレが・・)が、これは何が原因でしょうか?またほっときゃ自然になおるのでしょうか?
781 :
名無しさんi486 :2001/01/13(土) 07:06
VBで、文字列の中に全角文字が混ざっているかどうか判定するには どうすればいいっすか? そんな関数ありますか?
782 :
デフォルトの名無しさん :2001/01/13(土) 10:53
>>779 OSはfreeBSDです。
コンパイラはよく分からないです。
(コンパイラ名の調べ方がわかりません)
コンパイル・リンクは成功していると思います。
>No symbol "rkyori" in current context
と怒られるのは、いつ? デバッガで実行したときなの?
はい。そのとおりです。
普通に実行してるときはたいして問題がありません。
(結果をduplicateするだけの変数なので、実行に
は影響がないのです)
しかし、さっき試してみたら、本来プログラムに重大な影響を
もつ
char *t1
という変数にもデバッガでは同じようなことがおこりました。
プログラムは動いているのでデバッガが悪いのでしょうか?
783 :
デフォルトの名無しさん :2001/01/13(土) 12:03
atoiの逆 int型変数をchar型に格納する方法を教えてください。
>>783 char s[10]; int i; で、
sprintf(s, "%s", i);
785 :
デフォルトの名無しさん :2001/01/13(土) 12:24
786 :
デフォルトの名無しさん :2001/01/13(土) 14:31
>784 間違ってないか。 2行目は、 sprintf(s, "%d", i); sprintf(s, "%x", i); じゃねーの。
787 :
デフォルトの名無しさん :2001/01/13(土) 15:06
788 :
デフォルトの名無しさん :2001/01/13(土) 15:22
a
789 :
デフォルトの名無しさん :2001/01/13(土) 17:11
>>787 >>786 が正しいが、自分で(s)printfのヘルプを見れ。
1を"01"のようにしたい(0埋めしたい)とか8進/16進で表示したい
とか色々要求がある筈なので、要求に応じてフォーマット文字列を適切に
指定する必要が有るのだ。
0埋めやスペース埋めが不要で10進表示で良いのなら、フォーマット
文字列は単に"%d"でよい。
あれー?そのものずばりitoaってライブラリ関数があるはずだけど。 あれって標準じゃないのかな?
∧∧
¶( ゚Д゚) <
>>780 原因は知らんが書込みゃ復活する!
ゝ|し |┐ つーか、900超えてんだから初心者スレpatr2立てろっつーの
(_|./ |┘
U U
∧∧
¶( ゚Д゚) <
>>781 VB殺ったこと無いからよう知らんが、
ゝ|し |┐ 一文字づつ調べりゃすむ話じゃないのか?
(_|./ |┘
U U
∧∧
¶( ゚Д゚) <
>>782 >rkyori = 0;
ゝ|し |┐ >kyori=strdup(network);
(_|./ |┘ >rkyori = atof(kyori);
U U で、rkyoriに0入れて一回も使わんうちにatof使ってるから
"代入したのに値を一回も使ってねぇだろボケェ"っつてる
だけじゃないのか?
つーか、コンパイラがwarning出さなかったか?
∧∧
¶( ゚Д゚) <
>>790 その通り! itoaを使えば3進数とかも逝ける
ゝ|し |┐ ただ、789が書いているが書式指定した10進数とかの
(_|./ |┘ 文字列を作る場合はsprintfの方が楽だったりする
U U
793 :
デフォルトの名無しさん :2001/01/14(日) 00:56
テキストデータを効率よく圧縮できるアルゴリズムは、 どういうものが、ありますか? または、紹介されてるサイトでもいいんで教えてください。
794 :
デフォルトの名無しさん :2001/01/14(日) 00:59
テキストデータを効率よく圧縮できるアルゴリズムは、 どういうものがありますか? または、紹介されてるサイトでもいいんで教えてください。
>794 辞書圧縮 その後エントロピー圧縮 おしまい
この手のプログラムはどうやって特許のアルゴリズムを避けるかが鍵だな。
798 :
794 :2001/01/14(日) 01:37
>796 紹介してもらったサイトにいってみます。 >797 じっくり考えてみます。
799 :
782 :2001/01/14(日) 10:47
>>791 これって初期化してるつもりなんですが、初期化は
必要ないのですか?
配列とかでも初期化でいつも全部に0入れたりしてるんですけど。
(おそらく勘違いだったのかな、自分の)
800 :
デフォルトの名無しさん :2001/01/14(日) 11:33
>>799 変数が使われる前に何らかの値を代入することが保証されているなら
必ずしも初期化をする必要はない。
801 :
名無しさんおっぱい。 :2001/01/14(日) 13:37
ギコハハハハハハ
802 :
774です、 :2001/01/15(月) 00:42
>>774 について誰か教えてくださいな、
お願いします。
804 :
746 :2001/01/15(月) 13:36
>>746 ですが、やっぱりだめです。
配列を大きくすると問題が起きてしまいます。
こういうのは何でなのでしょうか?鬱です。
>782 まさかとは思うけどコンパイラに -g オプションつけてるよな?
806 :
ブチ :2001/01/17(水) 03:05
RGB565とRGB555というのがあるんですが調べてもよくわかりませんでした。 パレットにRGBを割り当てる形式か何かのようですが、どういったものか教えてください。 WinGLのビットマップを操作したかったんですがそこでひっかかってます。
807 :
虹 :2001/01/17(水) 03:11
>>806 RGBそれぞれのビット数でしょう、多分。
808 :
みのもんだ :2001/01/17(水) 03:19
809 :
ブチ :2001/01/17(水) 18:26
RGBの下位5か6ビットを使って8ビットのパレット番号に当てるということですか? すいませんまだ理解しきれてないのでもう少し教えてもらえるとありがたいです。
810 :
デフォルトの名無しさん :2001/01/17(水) 19:42
>>809 2バイトに
rrrrrggggggbbbbbとか
rrrrrgggggbbbbbxとか
で格納するってことさ
811 :
デフォルトの名無しさん :2001/01/18(木) 15:13
そんなルーチンが 最近の情報処理2種(午後:C言語問題)に出てた気がする そっち詳しくのってたはず まあ、もう本が手に入らないかもな? 簡単に言うと RGB(255,0,0)も(RGB(252,0,0)も赤く見えるだろ? ってこと
812 :
デフォルトの名無しさん :2001/01/19(金) 00:47
weblogicでクラスのリロードがどうしてもできない。 ここに書きこむべきなのかどうかアレですが・・・。 ただのサーブレットやbeen+JSPの場合はシェルのCLAPPATHにカスタムクラスパス を含めずにstartWeblogic.shでカスタムパスを指定してやればリロードできることは わかっているのだが、それをやるとEJBデプロイで、 「そんなクラス知らんぜ」と言われてしまう。 そこらへんのノウハウ持った人いません?
fooとhogeのどちらを使いますか? みなさんのこだわりを語ってください
814 :
>813 :2001/01/19(金) 01:22
foo・・・気取るなボゲエ! hoge・・・馬鹿っぽい 追伸 だめだめ・・・馬鹿っぽい くれくれ・・・同上 〜だね・・・同上 おしえてちょ・・・「ちょ」が馬鹿
815 :
ブチ :2001/01/19(金) 02:54
>>RGB555 565
255(ffH) -> 252(f8h) に省略するという感じだね。
概念はわかりました。
パレットに割り当てるのはまだちょっとわかってませんがこれは自分で色々試してみます。
わざわざ答えてくれた方々に感謝。
>>813 読んだ本では foo を使っていたのでそれかな。
816 :
デフォルトの名無しさん :2001/01/19(金) 03:31
unsigned short rgb_2_rgb555( unsigned int rgb) { return ((rgb & 0xf80000) >> 9) | ((rgb & 0xf800) >> 6) | ((rgb & 0xf8) >> 3); }
818 :
デフォルトの名無しさん :2001/01/19(金) 17:38
819 :
デフォルトの名無しさん :2001/01/20(土) 06:22
タスク、スレッド、同期について勉強したいのですが どこから手をつけていいのかわからなくて困っています。 おすすめの本やURLがありましたら、どうか教えて下さい。
820 :
デフォルトの名無しさん :2001/01/20(土) 19:11
>>819 Windowsなら
「Win32マルチスレッドプログラミング」
ISBN4-7561-1404-0
5100円
っていう本が一番判りやすい。
(ちょっと情報が古い様だけど。)
いままで見てきたその他の本はここまで詳細に載っていなかった。
他にもお勧めが在ったら教えてくれ。
821 :
819 :2001/01/21(日) 05:26
ありがとうございますー あ、その本見たことあります、結構厚めの本ですよね。 明日にでも本屋に行って探してきます。(^-^) でも、難易度高そうですね。。準備用に 「金魚でもわかるマルチスレッド」なんて本がほしい...
822 :
デフォルトの名無しさん :2001/01/21(日) 16:13
>>821 読み物としては「Advanced Windows」の方がいいかも。
同期オブジェクトの種類とそれぞれの解説も出てるから「するってえと
こういう時はEventで十分なわけね」とかわかるようになるんで。
ただし「Win32マルチスレッドプログラミング」よりも更に分厚い(改版重ねて
今の奴は電話帳位ある)し、お値段も高め(確か\7,800位したと思う)。
あと、コード例はかなり古いので(元々VC++2.0の頃に初版が出た本だから)
概念的な所は「Advanced〜」を読んで、実際にコード書くときは「Win32
マルチスレッド〜」を参照するといいと思う。
823 :
デフォルトの名無しさん :2001/01/21(日) 22:54
javascriptについて質問です。bugtraqで「hotmailに弱点。<IMG SRC="jAvascript:alert ('Javascript is ececuted')">という形式のJavascriptの実行を許してしまう」という記事があった のですが、何が悪いのか理解できません。わかるかた教えてください。
ブラクラー(゚Д゚)ブラクラー
825 :
デフォルトの名無しさん :2001/01/22(月) 12:33
>>819 やりたいことが明確ですぐに始めたいなら
猫でもわかるでいいしょ?
基本からしっかりやりたかったら820の通り
でも、知識レベル次第で嫌になることもある
826 :
初心者で申し訳ないです :2001/01/22(月) 15:46
マスターブートレコードはこのバッチで読めますか? @echo off echo MBRを読みます pause echo a300 > .\getmbr.scr echo mov ax, 201 >> .\getmbr.scr echo mov bx, 100 >> .\getmbr.scr echo mov cx, 1 >> .\getmbr.scr echo mov dx, 80 >> .\getmbr.scr echo int 13 >> .\getmbr.scr echo int 3 >> .\getmbr.scr echo. >> .\getmbr.scr echo g=300 >> .\getmbr.scr echo d 100 2ff >> .\getmbr.scr echo q >> .\getmbr.scr debug.exe < getmbr.scr > mbr.dmp echo 結果をMBR.DMPに保存しました。
827 :
826 :2001/01/22(月) 15:52
すいません。正確によめてるのか。でした。
>>826 自分で判断できないなら使わない方がいい。
ここで誰かが「大丈夫ですよ〜」って言っても信用できるとは限らない。
829 :
デフォルトの名無しさん :2001/01/22(月) 19:49
WindowsNTがDual CPUで動いている環境に自分のアプリを持っていったら、最大で50%までしかCPUが使われません。これは、アプリがDual CPUを活かせていないことが原因でしょうか。もっとスレッドを増やしたりするとCPUをもっと使い切ることができたりするんでしょうか。Dual CPU用のプログラムの書き方みたいのってあるのでしょうか。 よろしくお願いします。
830 :
デフォルトの名無しさん :2001/01/22(月) 22:27
>>829 そのアプリがシングルスレッドなら、片方のCPUしか使わないよ。
マルチスレッドにするか、同じアプリ2個立ち上げるとかすれば両方使って
くれるけど。
まぁ無闇やたらにスレッド分割しても意味が無い場合もあるけど、829の
ような場合は上記のようにして負荷を分散させてやりゃいいでしょ。
831 :
デフォルトの名無しさん :2001/01/23(火) 00:19
マルチスレッドで複数のスレッドを最大限生かせるのってどんなプログラム? 「マルチスレッド=入力インターフェース用のスレッド+内部で処理するスレッド」 って感じで1つのスレッド(インターフェースの方)はほとんど動いてない状態なんだけど。 マルチCPUを逝かせるプログラム書いたことある人〜。 どんなの書いたか教えて。 それと「他のタスクが動いてるからCPUは効率良く使われている。」とかいうツッコミはいりませ〜ん。
∧∧ プハー ¶( ゚Д゚) =3 OS側でやってくれてるんだな、BeOSは。 ゝ| つ日~~ スレッドを最大限逝かしてるかは、、、 (,|/ ) U U
>>831 ネットワーク対応の一種の画像ローダみたいなやつ
ブラウザみたくロード中のやつからリアルタイムで見えてくる
同時に何個ロードできるか設定可
つかこのばあいCPUを有効活用ってより
回線の有効活用だな、、、Regetとか、、、
834 :
826 :2001/01/23(火) 02:04
>>828 さん
どうもありがとうです。
実はそれ、自分でつくってみたのです。
MBRのDUMPツールと比較してみたところ同じ結果がでました。
835 :
デフォルトの名無しさん :2001/01/23(火) 03:08
C#について聞きたいんですが、この言語が出てくることによって MFCや、VCLなどのWin32APIクラスライブラリ群は必要なくなる 様になるんでしょうか?
836 :
けろ :2001/01/23(火) 04:41
>>835 そのへん、難しいね。.NETの浸透度によるよ。
現状Javaアプリが「重い」との理由で敬遠されてる面もあるんで、
それと同様に、なかなか浸透しないかもしれない・・。
特に市販アプリなどは、今までどおりに作りそう。
WinAPIを捨てるって事は当分無さそうだし。
企業向けに作る専用アプリなんかは.NETで作るのがいいように
思うんだけど。
.NETの枠内で作るんなら、MFCやWinAPIの知識は必要ありません。
837 :
デフォルトの名無しさん :2001/01/23(火) 12:35
>>832 排他制御とかスレッド分割とかゼンブBeOS(+コンパイラ?)が面倒見てくれるわけ?
>>837 それはないない。そんな天国のような環境(ワラ
ちゅーかBeOSはスレッドが常時大量に走りまくりなので
(ウィンドウ1枚に1スレッドだっけ?)
マルチCPU時にうまいこと処理が振り分けられるらしい。
839 :
デフォルトの名無しさん :2001/01/24(水) 19:53
初かきこです。よろしくお願いいたします。 APIの「RegCreateKeyEx」を使ったアプリケーションを開発しています。 しかし、WinNT系OSで「制限ユーザー」として設定されている ユーザー名でログインすると、レジストリキーが変更されません。 これは、動きとして正しいことなのでしょうか? それとも、私のプログラムがいけないのでしょうか?
840 :
デフォルトの名無しさん :2001/01/24(水) 22:48
>>839 それはNT本来の仕様です。レジストリのキーにもセキュリティ属性があります。
regedit32.exe(古いレジストリエディタ)で見ると各キーのセキュリティが見れます。
841 :
デフォルトの名無しさん :2001/01/25(木) 10:25
だれでも、レジストリがいじれたら、セキュリティーも何も有ったものじゃない NTはいちおう、セキュリティーをうりにしてるんだから・・・
842 :
デフォルトの名無しさん :2001/01/25(木) 10:52
>>840 ありがとうございます。
iniファイルに変更して、すすめてみます。
843 :
デフォルトの名無しさん :2001/01/25(木) 15:03
以下のプログラムでリンクエラーがでてしまいます。 main.cppファイル #include "mydebug.h" #include "test1.h" void main(void) { MyAssert(0,"main"); Test1(); } test1.hファイル extern void Test1(); test1.cppファイル #include "mydebug.h" void Test1() { MyAssert(0,"Test1"); } mydebug.hファイル extern void MyAssert(int a,char *s); mydebug.cファイル #include <stdio.h> void MyAssert(int a,char *s) { if(!a) printf("%sでエラーだ\n",s); } Visual C++でWin32 Console Applicationで作りました。 どのように変更すればよいのでしょう?
void main() なのは嫌がらせでしょうか?
>>844 main.obj : error LNK2001: 外部シンボル ""void __cdecl MyAssert(int,char *)" (?MyAssert@@YAXHPAD@Z)" は未解決です
test1.obj : error LNK2001: 外部シンボル ""void __cdecl MyAssert(int,char *)" (?MyAssert@@YAXHPAD@Z)" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
>>845 初心者なのでよくわかりませぬ
>>846 mydebug.cファイルの名前をmydebug.cppに変えるか、
mydebug.hファイルの内容を
extern "C" {
extern void MyAssert(int a,char *s);
}
にしろ。CとC++が混在しててリンカが混乱している。
コンパイル時にエラーを発見できるので
test1.cppファイルに#include "test1.h"を追加
mydebug.cファイルに#include "mydebug.h"を追加
しといたほうがいい。
直りました。ありがとうございます。 混在させる時は明確に宣言する必要があるんですね
850 :
デフォルトの名無しさん :2001/03/28(水) 22:03
,一-、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■-っ < んなーこたーない ´∀`/ \__________ __/|Y/\. Ё|__ | / | | У.. |
851 :
デフォルトの名無しさん :2001/05/03(木) 14:47
>>1 くだらない スレ いくつも立てて喜んでるんじゃねえよ アホが
削除依頼
852 :
デフォルトの名無しさん :2001/05/03(木) 14:49
あげるな、ぼけ さっさと死ね
854 :
デフォルトの名無しさん :2001/05/03(木) 14:59
ヽ(`Д´)ノ ゴルァ!
855 :
"削除"人 :2001/05/03(木) 15:07
>>851 了解しました
重複スレに該当します
よってどちらかを削除します
はいはい、ボクちゃん、君はえらいね〜。
857 :
デフォルトの名無しさん :2001/05/03(木) 15:23
,一-、 / ̄ l | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■-っ < んなーこたーない ´∀`/ \__________ __/|Y/\. Ё|__ | / | | У.. |
858 :
デフォルトの名無しさん :2001/05/03(木) 20:14
( ゚Д゚)ノ ( ゚Д゚)ノ
859 :
デフォルトの名無しさん :2001/05/03(木) 20:16
( ゚Д゚)(゚Д゚)
860 :
デフォルトの名無しさん :2001/05/03(木) 20:57
( ゚Д゚)ノ ( ゚Д゚)ノ ( ゚Д゚)(゚Д゚) ギコ猫 うぜえから さっさと一つにまとめろや
861 :
うし :2001/05/03(木) 22:01
MS-DOSのPATCH.EXEに対応するDIFファイルって,どういう フォーマットなんでしょうか?たとえば,次のようなとき。 00011456: 90 20 0001499d: 10 30
862 :
デフォルトの名無しさん :2001/05/04(金) 01:01
一応プログラミングを勉強しているんですけど、 プログラムを作るプログラムはいつできるんですか。 ちょい先にできるようなら、早めに見切りつけたいんで。
んなもん沢山あるzoo
864 :
デフォルトの名無しさん :2001/05/04(金) 02:34
>>863 もうプログラマは必要ないですか?
違う道も真剣に考えてみます。
少なくともきみは必要ない。>864 他の道考えてね。
>>860 ( ゚Д゚) (゚Д゚ )
( ゚Д゚) (゚Д゚ )
( ゚Д゚) (゚Д゚ )
( ゚Д゚)(゚Д゚ )
(゚Д゚)(゚Д゚)
(゚Д゚|゚Д゚)
(゚Д゚Д゚)
(゚||゚)
(゚Д゚)
(゚Д゚)ゴルァ
(・∀・)ナンテネ