( ゚Д゚)ノ ギコ猫のプログラム相談室part4

このエントリーをはてなブックマークに追加
1新米ギコ@いいかげん
ギコ猫相談室 for プログラム技術板
                             ∧ ∧ ──────
スレッドを立て逃げするくらいならここで聞け! >(゚Д゚ ) ──────
                              ⊂⊂ \──────
                               \  〜 ────
前スレ↓                           し し ─────
http://piza.2ch.net/test/read.cgi?bbs=tech&key=965916840&ls=50
2名無しさん@お腹いっぱい。 :2000/10/13(金) 23:33
常に計算量が(n log n)であるようなソートが
新しくできたって聞いたんですが、どんなのですか?

# ヒープソートも(n log n)固定ですが
# オーバーヘッドが大きすぎて
# 誰も使わないみたいですね
3渡りに船です :2000/10/13(金) 23:38
今は全くの初心者なんですが、趣味としてこれから
プログラミングを楽しんでみたいなあと思っています。
きめの細かい言語をこつこつと勉強していくには
どの言語が最適ですか?
4名無しさん@心配性 :2000/10/13(金) 23:44
どーもいやな予感がする
>>3に答える人はその言語のメリット・デメリットを
ちゃんと説明するよーに
5新米ギコ@いいかげん :2000/10/14(土) 00:08
 ∧ ∧
 ( ゚Д゚)  < >>2 計算量の書き方は、O(n log n )だ! Oを忘れるな!
  |∪ |つ∀                 ~~
  |  |
  U U
 ∧ ∧
 ( ゚Д゚)  < >>3 CかC++だ! いろいろなぷらっとふぉーむで使える強みがあるぞ!
  |∪ |つ∀
  |  |
  U U
 ∧ ∧
 ( ゚Д゚)  < >>4 教えてもらいたいのならもっと素直になれ!
  |∪ |つ∀
  |  |
  U U
6名無しさん@心配性 :2000/10/14(土) 00:16
あっ、ごめんなさい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と比べるとどの辺りに気を付け他方がいいですか。
11名無しさん@お腹いっぱい。 :2000/10/14(土) 12:30
二進数を指で数えることがどういうものなのか今分かった。
面白れえい。
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
初心者向けのホームページあったらおしえて?
16dd s :2000/10/14(土) 19:09
すません。上の方に「お勉強ページへのリンクスレ」ってのが
あった。たくさん紹介されてる。
17名無しさん@お腹いっぱい。 :2000/10/14(土) 19:10
>>15
あんた最高。
18名無しさん@お腹いっぱい。 :2000/10/14(土) 20:52
printf()を使わずにわざわざfprintf(stderr,"Error\n");
とかって書くのは人が見て分かりやすい以外に理由がありますか?
19名無しさん@お腹いっぱい。 :2000/10/14(土) 20:58
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やってました。
今、ウィンドウズでアプリケーションを作るのに勉強量&労働時間を少なく
するにはどの言語を覚えたらいいか教えてください。
26名無しさん@お腹いっぱい。 :2000/10/15(日) 10:38
>25 日本語と英語
2725 :2000/10/15(日) 12:26
マジレスきぼーん。
28dd :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  \_____________
3410 :2000/10/15(日) 23:44
>>32
IDE ってHDDのことじゃないですよね。
しばらくブランクある上にヘタレなんでもう少し教えてくだされ。
3510 :2000/10/15(日) 23:49
>>32
IDE ってHDDのことじゃないですよね。
しばらくブランクある上にヘタレなんでもう少し教えてくだされ。
36名無しさん@どーでもいいことだが。 :2000/10/15(日) 23:50
31です。ぎこねこさんありがとう。
図書館で見てくるよ。
3710 :2000/10/15(日) 23:54
Serverエラー出たんで二回投稿してましたわ…。
やはりヘタレ厨房でした。逝ってきます。
38c++初心者 :2000/10/16(月) 02:13
Windowsのフリーウェアなんかのソフトのソースを後悔してるHP
があったら教えてください。(言語問わず。)
VBやVC++なんかはけっこうありそうだけどないんです。
やっぱり生のソースを見て、ここがこんな風に
かかれてるんだなどと、勉強しながら覚えていくのが一番わかりやすいかと思うんです。
39名無しさん@お腹いっぱい。 :2000/10/16(月) 02:50
>>38 prog板「ソース公開ページへのリンクするスレッド」
http://mentai.2ch.net/test/read.cgi?bbs=prog&key=962188959&ls=50
40814 :2000/10/16(月) 14:53
bitmapファイルから表示される縦横のピクセル数を知りたいのですが
どうすればいいでしょう。
41名無しさん@お腹いっぱい。 :2000/10/16(月) 15:17
>>40
ファイル先頭のBITMAPINFO構造体を見ろ。
42814 :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で使う事が多いかも。
4543 :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
で判定するのが普通だと思う。。。
4843 :2000/10/16(月) 20:37
ええっと、何度もすみません。
文字コードを参照した比較処理を行う場合に
signedとunsignedを使い分けるには具体的な
コードの種類ってあるのでしょうか??
数字やアルファベットを使用して比較処理を
行う場合はsigned char
カナや漢字を使用して比較処理を行う場合は
unsignedはっていうようなカンジで
変数を宣言すればよいのでしょうか。
4943 :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はどういう意味ですか?
52名無しさん@お腹いっぱい。 :2000/10/16(月) 23:53
>>51
よく書いてあるか?はじめて見た。
53名無しさん@お腹いっぱい。 :2000/10/17(火) 00:15
>>51
いや、それだけじゃ全然なんのこっちゃわからんぞ。

具体例を出しなさい。あるいは企業秘密か?
5451 :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板の方が適切でしょうか??
5553 :2000/10/17(火) 01:54
それって本当に"XXX"なの?伏字じゃなくて? >>54

それだったら、ヤバそうなとこマークしてるだけかもな。
あとで解決法が出来たときに"XXX"を検索して修正する。
俺も似たようなことやったことがある。
5654 :2000/10/17(火) 01:59
>それって本当に"XXX"なの?伏字じゃなくて?
そうです。オープンソースのプログラムには広く使われているような
ので、昔からの慣習なんだと思います。

>あとで解決法が出来たときに"XXX"を検索して修正する。
>俺も似たようなことやったことがある。
なるほどなるほど。そういう使い方がありますねー。
UNIX板の方でも「その解釈でいいんじゃないか」と言われたんですが、
自分でも解説してるサイト探してみます。
# XXXだとエロページばっかひっかかる…
5753 :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のようなイメージです)
可能でしょうか?
62名無しさん@お腹いっぱい。 :2000/10/17(火) 12:47
>>61
でも、スシエってSDIじゃんよ?
タスクバー、ウィンドウ毎にでるぞ。
63名無しさん@お腹いっぱい。 :2000/10/17(火) 12:49
>>58
俺はZzz
気分でZzz...
6461 :2000/10/17(火) 13:42
>>62
デフォルトの動作はそうなのですが、
設定によってMDIっぽい動作に変えられるのです。
-
[ファイル]-[設定]-[ウィンドウ]の[アイコンはアイコントレイに]と
[タスクバーにウィンドウ名を表示]のチェックをはずして、
[ファイル]-[設定]-[メニュー]の[コモンメニューバーを表示する]を
チェックするとそれらしい動きになります。
(susie32 ver0.45aの場合)
-
タスクが複数になっているのはかまわないので、
表示上の動作を外部のプログラムから制御できたらなぁと。
ウィンドウの一覧の取得と、切り替えぐらいは出来ると思いますが、
タスクバーの表示を消す方法がわかりません。
6561 :2000/10/17(火) 13:50
>>61 の件は、下記のスレッドにお答えを頂きました。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=971731456
66名無しさん@お腹いっぱい。 :2000/10/17(火) 14:57
レジストリ関連のセキュリティアトリビュートとか
セキュリティディスクリプタってなんに使うの?
9xの人間だからわからん。
67名無しさん@お腹いっぱい。 :2000/10/17(火) 18:38
Windowsmの
メニュー項目の表示/非表示の切り替えは
どうやってやればいいんでしょうか?

ハンドルとってなにかメッセージ投げるのでしょうか?
要点だけでいいので教えてください
68名無しさん@お腹いっぱい。 :2000/10/17(火) 20:27
COLORREFの値からどんな色か一目でわかるツールって
どなたかご存知ないですか?
69名無しさん@お腹いっぱい。 :2000/10/17(火) 20:32
>>68
CColorDialog
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なのれす。

だから、どれか特定のアドレスだけでサーバするなら、
それを指定してやらにゃダメれす。
マシンにふられてるアドレスを知るには他の方法を使ってくだしゃい。
72名無しさん@お腹いっぱい。 :2000/10/18(水) 16:00
>>62
スシエって何だよ、スシエって。
どうせネタだろうが、マジだったら嗤うぞ。
7370 :2000/10/18(水) 17:06
>>71
ご返事ありがとうございます。
ああ、そうなんですか。結構使えないっすね。いや、使えるのか、場合によっては。
仕方ないんで、生socket作ってlisten()したあと調べることにします。
74名無しさん@お腹いっぱい。 :2000/10/18(水) 18:35
>73
gethostbyname("");
7570 :2000/10/18(水) 18:50
>>74
えーと、LAN内でプライベートアドレスをDHCPによって振り当てられるので、
ホスト名は使えないのです、多分。
それとも、空っぽの文字列を渡すとカレントのIPアドレスとかくれるんでしょうか?
76名無しさん@お腹いっぱい。 :2000/10/18(水) 19:07
> ホスト名は使えないのです、多分。
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 ;
とでもして、スタティックメンバの初期化をしとけ。
7977 :2000/10/19(木) 12:59
>>78
どこでですか?
コンストラクタで初期化はしてるんですが…。
80名無しさん@お腹いっぱい。 :2000/10/19(木) 13:10
>77
宣言/定義+初期化の違いが分かってないらしい。
81名無しさん@お腹いっぱい。 :2000/10/19(木) 13:10
ClassAとfuncA()の間でいいだろう。
スタティックメンバの初期化はスタティックに行うべし。
8277 :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()
だ。
8477 :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
>>86
知らんだけだろうからいいんでない?
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 ) );
}
92c++初心者 :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;
}
93c++初心者(続き) :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&);
};
*********************************
94c++初心者(続き) :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&);
};
95c++初心者(続き) :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;
}
96c++初心者(続き) :2000/10/20(金) 13:55
以上です。途切れ途切れですいません。
97c++初心者(続き) :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;
というようにします。
99c++初心者 :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というのはどういう関数かを教えてくれ。
それが分からないと、回答しようがない。
108106 :2000/10/23(月) 15:43
失礼しました。
簡略して書いたつもりが分け解らなくなってしまいました。
これはC++で作っていて
まずfuncというのはクラスの関数で、
bFlgというのはそのクラスのメンバ変数です。
findというのはCString::CompareNoCaseです。
実際は「sBuf.CompareNoCase(_T("TRUE"));」
こんな感じで書いてあります。
bFlgを何に使用しているのかというと、
"TRUE" or "FALSE"を検索し、TRUEならフラグが立ち、
FALSEならフラグがたたないようにしてあります。
文字列に"TRUE" or "FALSE"がなかったらエラーを返します。

109107 :2000/10/23(月) 16:00
>>106
メンバ変数?
じゃ、せめて関数の外に書いてくれ。あれじゃローカル変数にしか見えん。

それで回答だが、TRUEならTRUEを、FALSEならFALSEを、それ以外なら例外を
投げるようにしたらどうだろう?
110106 :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;
}

112106 :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はできなかったよね?
だから上みたいにしてみたんだけど)
116!112>115 :2000/10/24(火) 01:40
エラーだとif文のなかでreturn FALSE;としたいというのが
112の希望ではなかったんか?
なぜそれをわざわざこんな変なことするのか理解不能。
単純に行を減らしたいだけならば、なんでbReltがいるねん?
return find("TRU‥‥‥
と書けばいいやん。
117115>116 :2000/10/24(火) 02:18
そんなにせめないでくれ、へたれな俺なりに色々考えたんだから。
俺みたいな奴が日本のプログラマーのレベルを下げてるんだろうな...
あとbReltはただの趣味、returnに式を書くの好きじゃないだけ。
なんか良いやり方ないもんかね〜、俺も気になってきたよ。
111のやりかたで十分よいと思うのだが‥
未練スレッドはどこへ行ったのですか?
120名無しさん@お腹いっぱい。 :2000/10/24(火) 15:29
CString型の変数にUniCodeの文字列を入れたら
UniCodeじゃなくなってしまったんですけど何でなんですか?
StrBuf = lpwRedBuf←これにはUniCode文字列が入っています
(デバッガで調べた)

121agelle :2000/10/24(火) 15:34
>>119
沈んでます。
サルベージしてやってください。
122ミレン:2000/10/24(火) 17:33
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の構造体と違うようなのでうまく行かない気がします。。。
 うまく行かないとしたらどうすればいいでしょうか?
124123: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);
じゃねーか?
127123: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: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
レスありがとうございます。

仕様上、是非構造体に格納したいんです。
ほかの方法にしようとすると、他の人の担当分もいろいろ
改造する必要がでるので。
135名無しさん@お腹いっぱい。:2000/10/24(火) 23:52
>みたいなのを100回書けばいいってのは分かるんですが・・・。

そーいう発想する人はプログラム向いてない。
136名無しさん@お腹いっぱい。:2000/10/25(水) 00:02
>128
C++なんでしょ。構造体っつっても結局クラス。

ストリームを引数にしたコンストラクタつくりゃれ。
あと、ストリームへのoperator<<つくりゃれ。

それでそのクラスオブジェクトのロードセーブし放題。
マクロを使うと多少楽かも
#define SET_S(ident,value) if(strcmp(s,#ident)==0) strcpy(bar.ident,value)
しかしこんなソース俺はメンテしたくないな
138名無しさん@お腹いっぱい。:2000/10/25(水) 01:18
>132
そのテキストを読みこんでCのソースを吐くツールでもつくれば?
139名無しさん@お腹いっぱい。:2000/10/25(水) 01:42
>138
その間に力業で完成するに一俵。
140名無しさん@お腹いっぱい。:2000/10/25(水) 03:08
>>134
> 仕様上、是非構造体に格納したいんです。
「設計上」ではなくて?
悪い設計の下でいくらプログラムを頑張っていじくり回したところで
良い物にはならんだろう。
短期的に
> 他の人の担当分もいろいろ改造する必要が
あるとしても、悪い設計を改善した方が結局得になるかも知れない。無論
そのプログラムが使い捨てのプログラムであって、今後ほとんどメンテ
やカスタマイズがあり得ないのならばどうでもいいことかも知れないが、
使い捨てのつもりのプログラムが延々保守され続けるということも、
決して珍しくはないからな...
141>131:2000/10/25(水) 11:37
まず、内之浦か種子島へ逝け。
142名無しさん@お腹いっぱい。:2000/10/25(水) 20:31
CWinThread::m_bAutoDelete
のデフォルト値は何ですか?
143名無しさん@お腹いっぱい。:2000/10/25(水) 22:30
C++で、大雑把な数値計算の結果を
画面にプロットしてグラフっぽい物を描きたいんですが
Basicのlineやpsetみたいに簡単にグラフィックを
扱うことは出来るんですか?
144>143:2000/10/26(木) 00:04
C++では言語中にはグラフィック関係のものはとくに定義はされていない。
しかし、処理系によってはライブラリでサポートされているし、ライブラリの
サポートがなくてもOSに(たとえばApiで)サポートがある場合もある。
なんにしろあなたのOSなどの環境がわからないとなんともいえない。
145なーなー:2000/10/26(木) 01:53
>>143
大雑把で構わないなら、iostreamでキャラクタ文字でもいいんじゃない?
↓こんなの
+----------------------------+------
|******************** hage
|********** hige
|****** huge
|*** hege
|** hoge
146なーなー:2000/10/26(木) 01:56
あとは、将来グラフィックLIBでも使えるように描画インタフェースだけ揃えておけば良いと思う。C++なら簡単でしょ?
147143: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という文字は、
具体的にどのような値なのでしょうか?
152名無しさん@お腹いっぱい。:2000/10/26(木) 11:23
>>151
0x45,0x4f,0x46
153>>151:2000/10/26(木) 11:28
EOF は EOF っつう事だよ。
具体的な数値を知ってどうする?
特殊な組み込み機器でも開発しているんで無い限り、気にするとろくな事は無いぞ
154名無しさん@お腹いっぱい。:2000/10/26(木) 11:55
>>151
いわゆるテキストファイルの場合、0x1aをもってEOFとする
場合もある。ということを聞きたかったんじゃないだろうか、
と思うが、153さんが正しい。
155名無しさん@お腹いっぱい。:2000/10/26(木) 15:26
旧スレが上がってるのでage。
156名無しさん@お腹いっぱい。:2000/10/26(木) 21:01
というか、イマドキのOSのファイルシステムにおいて、ファイルの
終端をファイル内のある特定の文字によって管理しているような
ものは無い筈だ。
EOFという抽象によって表されるところの、ある特定の文字が実際に
ファイルの終端に存在するのではなく、ファイルの最後まで来たら
取りあえずEOFという文字を返すようにライブラリが設計してあるだけ。
157なーなー:2000/10/27(金) 00:50
>>151
多分、
EOF → End Of File
EOL → End Of Line
この辺から教えないとだめなかんぢが…
こーゆうのはUNIX系OSなら良く出会うので、一度触わる程度してみると良いかも。
158名無しさん@お腹いっぱい。:2000/10/27(金) 10:51
何処かにSSEを日本語で解説してるとこありませんか?
GOOで検索したもののひっかかりません。
MMXなら結構あるんですが。
159名無しさん@お腹いっぱい。:2000/10/27(金) 10:52
インテルのpdfにゃ載っとらんの?
160名無しさん@お腹いっぱい。:2000/10/27(金) 13:09
>>159
日本語の解説ありますか?
検索して出てきたのに
http://www.intel.co.jp/jp/developer/design/servers/softdev/ia32simd.htm
ってあったんですが全て英語なもんで、
うー、やはし英語をちまちま訳してくしか無いですか。
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
http://www.intel.co.jp/jp/developer/design/pentiumiii/manuals/index.htm
これのPenIII命令セットリファレンスに一応SSEの項目があったと思うけど、
動作の解説があるかは知らない。
164160:2000/10/27(金) 14:09
>>163
なんかそれらしい感じですね、
早速落として読んでみます、ありがとう
165>162:2000/10/27(金) 14:10
複雑になりそうで、尚且つスピードが要求されるなら、
ASMの方がすっきりする。(経験上)
166>161:2000/10/27(金) 21:16
 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
169名無しさん@お腹いっぱい。:2000/10/29(日) 23:19
そうだな、ここはちゃんとあげとかないと
他で暴れ出すやつがいて困ったことになるようだ
170名無しさん@お腹いっぱい。:2000/10/30(月) 01:33
>>169
じゃ、sageんなや。(藁
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の他に何があるんでしょうか?
177名無しさん@お腹いっぱい。:2000/10/30(月) 20:36
K&Rの事か?
つーか、なんかその著者の書き方もナニだな...
178177:2000/10/30(月) 20:40
ちなみに、本気で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の指摘通り、同期処理は必要だ!
185173の学生: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 その手法でいつも思うんですが、プログラムカウンタを
つっこんだコードのところに飛ばすのは、どうやるんですか?
187名無しさん@お腹いっぱい。:2000/10/31(火) 01:55
> sizeofがどうやって書かれているか
sizeofは関数でなくて演算子だからね。
たいていの場合コンパイル時に決定されちゃうし‥
188名無しさん@お腹いっぱい。:2000/10/31(火) 03:15
>187
>たいていの場合コンパイル時に決定されちゃうし‥
コンパイル時に決定できない場合なんてあるのか?

>186
void test(void)
{
 int a[1];
 a[1] = 0;
}
あ、「絶対ジャンプ」だ・・・
189名無しさん@お腹いっぱい。:2000/10/31(火) 06:04
発展形。これを呼び出せば思い通りの番地にジャンプ出来そう。
void AbsoluteJump(unsigned Addr)
{
  unsigned a[1];
  a[1] = Addr;
}
190名無しさん@お腹いっぱい。:2000/10/31(火) 06:26
>>189
>ジャンプ出来そう。
テストしてから出直してこい。
191189@出直しました:2000/10/31(火) 07:08
//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;
}
192189:2000/10/31(火) 07:14
ごめん、もうどうでも良くなってきた。汎用性無いし。
お騒がせしてすみません。
193名無しさん@お腹いっぱい。:2000/11/01(水) 04:54
mallocとかで動的にメモリ取れなかったときって
if (p = NULL)
でキャッチしたとき、exit (0)で終了?exit (1)で終了?
それともOSにもよるし、たいして変わらない?
>193
それはOSというよりプログラム仕様に依存する。
195193:2000/11/01(水) 06:49
じゃあ、メモリ確保出来なかったんで終了しまーす。
ってときはどうですか?
196名無しさん@お腹いっぱい。:2000/11/01(水) 07:27
それが「エラーで中断」だと思ったら1以上を返せばええんでない?
197一応つっこみ:2000/11/01(水) 10:50
>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って存在するでしょうか?

(;´Д`)ノ
つまり、ほんとに待ってるヤツらがじゃんけんで取りに行くかんじで、
ずっと負けつづけるヤツとかが発生しうるみたいな
201名無しさん@お腹いっぱい。:2000/11/01(水) 17:14
>>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
205199:2000/11/02(木) 00:53
>>201
レスありがとうございました。
参考にさせていただきます。
(年月日が必要なのをすっかりわすれてました。)
206名称未設定:2000/11/02(木) 00:54
Perlをあらかじめコンパイルして使用する事は可能なのですか?
207>206:2000/11/02(木) 02:50
perlcc
208名無しさん@お腹いっぱい。:2000/11/02(木) 03:40
シンプルなゲーム(アプリケーション)をつくりたいと思っている馬鹿厨房です。

DelphiとC++どっちがいいでしょうか?
209名無しさん@お腹いっぱい。:2000/11/02(木) 03:43
自分で自由に操れる方
210208:2000/11/02(木) 03:56
あべし
211名無しさん@お腹いっぱい。:2000/11/02(木) 03:59
ちなみに、Delphiは「環境」でC++は「言語」だ。
212208:2000/11/02(木) 04:18
DelphiとC++ビルダーってことで。
っつーかもういいや。厨房なのでここで挫折しておきます(はやすぎ
213203:2000/11/02(木) 04:21
>>204
ありがとございまーす。
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キーワードのサポートを待ちます。。
どもです。
219217:2000/11/02(木) 20:25
>217
別にVCだけの話ではないな。
それと、テンプレートのを使ったクラスって書いたけど、関数でもそうだな。
220217:2000/11/02(木) 20:29
>218
テンプレートがどうコンパイルされるかを考えれば、
リンクできないのが当たり前じゃないですかね。
221名無しさん@お腹いっぱい。:2000/11/02(木) 22:12
テンプレートのexport使える環境を見たことないけど、
リンクできないのが当たり前ってことはないんじゃない。
VC++23.0くらいになればきっとできてるよ。
222名無しさん@お腹いっぱい。:2000/11/02(木) 22:24
jpgファイルの画面サイズを取得するにはファイルのどこを参照すればよいのですか
223>222:2000/11/02(木) 23:09
>>204のAPIのリファレンスを読みなはれ
224名無しさん@お腹いっぱい。:2000/11/03(金) 03:12
>>223
えっ!どれ?
>>204 は全然違うような気が・・・
jpgファイルの画面サイズ(画像サイズだよね?)を取得する方法知りたい。
jpgってフォーマットによってサイズの書かれてる位置(バイト)が違うから面倒。
BmpやGifやPNGは位置決まってるよね。
225名無しさん@お腹いっぱい。:2000/11/03(金) 03:14
>>224
JPEGの仕様書よめやゴルァ
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
>>228
まちがい。
230>226:2000/11/03(金) 10:22
今のコンパイラ・リンカの枠組で考えると難しいけれど、これを一緒に
してしまえばいいのでは。つまりリンク時に、必要な部分のコンパイルを
自動的に行なうという事(リンカとは呼べない?)。すでにテンプレート
で生成される長大なシンボル名を取り扱うのは限界が見えてきている。
このままでは破綻すること必至です。
231名無しさん@お腹いっぱい。:2000/11/03(金) 10:40

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) で適用したフィルタの種類を取得しています。
234名無しさん@優しい人:2000/11/05(日) 02:35
>>233
わたしはいつもSusiePluginのインタフェース使ってるから
他のはあんまり知らないんですが、
多分ここで聞くより何倍もの正確な返答が期待できる手段として、
まず、そのライブラリの作者にコンタクトとかしないわけですか?
マニュアルとかにメールアドレスぐらい書いてあったでしょ?
丁寧に書けば教えてくれると思いますよ。
他にもホームページが存在すれば、そこの掲示板に書込むとか…
フリーソフトの作者達はユーザの確認ができただけでも嬉しいんだから。
235名無しさん@お腹いっぱい。:2000/11/05(日) 02:49
>>234
すみません。作者は外国人なので英語でメール書かなきゃいけないんです。
自分のへっぴり英語で書いて伝わるかどうか自信がないので…
とりあえず資料がないか検索しなおしてみます。
236D使い:2000/11/05(日) 04:05
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)はアウトでした。)
237D使い: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;の場合もそのようになりませんか?
241D使い:2000/11/05(日) 12:09
>240
ありがとうございます。
バグで片づけるのは簡単なんですが、
もしかして「最新のANSI C++」ではこうなのかなぁ、とか勘ぐってました。

>どうも(int)を intへのキャストと解釈しているのではないかという気もします。
>int **pp;の場合もそのようになりませんか?

最初に気づいた(というか聞かれた)のは char **p;だったので
単純化して書き込んでみました。同様です。

結局どうなんでしょ?バグなのかなぁ。
242名無しさん@お腹いっぱい。:2000/11/05(日) 13:44
今C++を勉強しているのですが、入門書に
「Cのマクロ機能は副作用を起こす可能性があるので、それを解決する為にC++ではインライン関数が用意された」
とかいてあるんですけど、マクロの副作用ってどんな事なんですか?
243こんなの>242:2000/11/05(日) 14:13
#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 なのかな。気をつけた方がいいかも。ウソかもよ。
247名無しさん@お腹いっぱい。:2000/11/06(月) 00:29
ギコ猫何処逝った?
俺は寂しいぞ
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
    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   <  じゃ、おやすみ
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
255新米ギコ@代理2:2000/11/06(月) 06:25
    ∧ ∧         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ̄ ̄( ゚Д゚) ̄ ̄|   <  おはよう!
|\⌒⌒⌒⌒⌒⌒\   \
|  \           \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\  |⌒⌒⌒⌒⌒⌒|
  \ |_______|
256233:2000/11/06(月) 12:44
>>246
おおーありがとうございます。
なるほどIDATを展開したそのままがバッファに入るんですね。
PNG仕様をきちんと覚えないといけないな。。。
教えてくださったことを手がかりにソースを追っ掛けてみます。
#2chの懐の深さを改めて実感した今日このごろ
257C言語見習: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に格納されている文字列は書き換えても安全ですか?

258名無しさん@お腹いっぱい。:2000/11/06(月) 15:34
>nekoの先の文字列は書き換えても安全なのでしょうか?
nekoの先の文字列は書き込み禁止のメモリーに保存されるかもしれない。
だから無事に値を変更できない可能性がある。

>gikoに格納されている文字列は書き換えても安全ですか?
gikoの配列サイズより小さい文字列の為今回のケースでは安全
gikoの配列サイズより大きい文字列をstrcpyした結果は保証されない

#ちなみにsizeof(giko)はいくつだかわかってる?
259C言語見習: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ですね。
見た目同じようでも、けっこうちがいますね。むずかしい…。
260あぼーん:あぼーん
あぼーん
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)]]

どなたかご存知でしたら教えて下さい。
262ところで:2000/11/06(月) 18:39
char * giko ="neko";
char * mona ="neko";
としたばあい、giko==monaは成り立つでしょうか?
263>262:2000/11/06(月) 18:50
処理系(のコンパイルスイッチ)に依存するはず。
一般には成り立つ保証はない。

char * giko ="neko";
char * mona = giko;
とすれば成り立つ
264名無しさん@お腹いっぱい。:2000/11/06(月) 18:51
>>262
成り立つこともあるし、成り立たないこともあるかと。
265名無しさん:2000/11/06(月) 18:53
const だったら最適化(giko==mona)することがあると
聞いたが、うーむ。
266262:2000/11/06(月) 18:56
>263>264
ああ、やっぱりどっちもあるんですね。ありがとうございます。
コンパイルスイッチしらべて見ます。
267名無しさん@お腹いっぱい。:2000/11/06(月) 18:57
> char * giko ="neko";
> char * mona ="neko";
> としたばあい、giko==monaは成り立つでしょうか?
Cの規格では保証されていません。(JAVAの場合、保証されている)
たとえ、一致したとしても処理系依存の方法であり、
あまりお勧めできません。

268名無しさん@お腹いっぱい。:2000/11/06(月) 19:15
定数確保して各ポインタごとにアドレス代入したほうが安心だろうな。
269262:2000/11/06(月) 19:27
>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 使え
271名無しさん@お腹いっぱい。:2000/11/06(月) 20:12
>>269
/GFまたは/Gf。つうかCLのマニュアル嫁。
272名無しさん@お腹いっぱい。:2000/11/06(月) 22:35
>270
同じく。使え。
273名無しさん@うんこちんちん:2000/11/07(火) 00:43
ずぶの素人がプログラムを始めるにはどんな言語がいいですか?
今手元にはVC++とVB6があります。

とりあえずPerlかじってたので、変数の使い方等の最低限の理解はあります。
274名無しさん@お腹いっぱい。:2000/11/07(火) 00:50
VC++覚えるのが良いと思うけど、簡単なのはVBかな。
いきなりC++やると混乱する人が多いそうなのでCから始めたらいいのでは?
275新米ギコ@代理の代理は本物か?:2000/11/07(火) 01:00
  ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚) < >>250 複数のコンパイラで挙動が違ったら実装依存だ!
Π ̄ ̄ ̄| \
|つウソデス()    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
  ∪∪
  ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚) < >>262 BCBは最適化のオプションに存在した!
Π ̄ ̄ ̄| \
|つ坊ランド()    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
  ∪∪
  ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (,,゚Д゚) < >>273 目的が無い奴はすぐに挫折するぞ!
Π ̄ ̄ ̄| \
|つ C++ ()    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |___.|
  ∪∪
276262:2000/11/07(火) 01:14
>strcmp使え
いやぢゃぁ
277名無しさん@お腹いっぱい。:2000/11/07(火) 01:57
/Gf /GFつかっても複数のファイルにまたがった場合は成り立たないと思うが…
278名無しさん@お腹いっぱい。:2000/11/07(火) 02:19
>276
ハッシュ表に登録しておいて、"唯一"の文字列へのポインタに変換するのは非効率?

279名無しさん@お腹いっぱい。:2000/11/07(火) 02:30
ていうか、
>> 269
読む限りではDOSで動いていたプログラムをportするって話じゃないのか?
だったら、何でそれを一々strcmpとかhashとかでリライトしなければならない
のか俺には皆目わからんぞ。
すなおに/GFとか/Gfでやってみろよ。で、駄目だったらその時に考えれば
いいだろ。
280名無しさん@優しい人:2000/11/07(火) 03:29
>>273
そうだな。でもそれ文字列のポインタと違う。ハッシュ値だ。
ハッシュ値を持ち回る様にすれば、文字列走査は1回程度で済む
(衝突時は複数回必要)から、うまくすればとても高速に比較/検索できるぞ。
forループで比較するのとは訳が違うからな。
C++ではmapコンテナで、Cではハッシュテーブルは自分で組む必要がある。
やっとまともな答えが出た感じ。

>>262,269,279
>としたばあい、giko==monaは成り立つでしょうか?
結果として成り立つ場合もあるかもしれないが、
それは単なる、ある処理系のデータセグメント最適化の副作用だ。
たまたまだ、と考えろ。
常用はするな。信用もなくすぞ。
281名無しさん@優しい人:2000/11/07(火) 03:34
280の273は278のまちがい。
282おしぇてぎこちゃん:2000/11/07(火) 03:44
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| いつものように2chそーすを見ようとしたらワードパッドが
|  あぶのーまるたーみねぇしょんとかいって終了してしまうのですが
\_____ _______
         ∨
         C∧ ∧
   ___    ○(゚Д゚#)
 /◎\……C|  \
==============================================
283>262:2000/11/07(火) 03:58
/Gfとかやってだめだったら素直にエラーコードにでも書き換えれ。
284名無しさん@優しい人:2000/11/07(火) 04:01
文字列定数同士の比較にしか使わないなら、
定数を1個所(例えばconst char *の配列)にでもまとめておけ。
そうすれば、どの処理系でも期待した動作をするぞ。
#ギコ猫帰ってきたか。猫好きな俺も帰ってきて嬉しいぞ。
#ピカ虫に負けるな。
285名無しさん@お腹いっぱい。:2000/11/08(水) 22:10
BOOL と bool の違いって何ですか?
286名無しさん@お腹いっぱい。:2000/11/08(水) 22:43
ギコ猫っ何だよ。
287名無しさん@お腹いっぱい。:2000/11/08(水) 22:47
>>280
mapはハッシュじゃないだろ。有名。
288名無しさん@お腹いっぱい。:2000/11/08(水) 22:59
>>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
>>287
ありゃ、そうだったのか…
291名無しさん@お腹いっぱい。:2000/11/09(木) 01:28
普通はmapの実装は平衡木だね。
STLの規約さえ満たせば、ハッシュで実装しても良いはずだけど。
292名無しさん@お腹いっぱい。:2000/11/09(木) 01:56
任意の型Tに対して有効なハッシュ関数を書いてみてくれよ。
293名無しさん@優しい人:2000/11/09(木) 03:27
>>289
C++のtrue/falseはちゃんと実装してない処理系が多いので、
あんま使えないね。
実際、Cの非0/0っていう確実な方法が既にあるからそっちしか使わないし…

>>291
規約ってなんかあったっけ。
CマガのP.J.プラウガーの翻訳記事とかで書いてそうだな。(藁

>>292
既に実装して持ってるが、お前には教えてやらん。
294名無しさん@優しい人:2000/11/09(木) 03:35
↑のギコ猫達は全部偽者か…
295名無しさん@お腹いっぱい。:2000/11/09(木) 04:53
>>292
>>293
SGIのSTLにはhash_mapクラスがあるけどこれはどう?
296292:2000/11/09(木) 13:24
「意味論的に」等しいobjectに対して、同じ値を返すようなhash関数
でなければ意味が無い。
例えばchar*であれば、文字列として等しければ同じhash値が
得られる必要がある。
で、俺が書いたのは、そんなテンプレート関数を実装するのは
ようするに不可能(したがって、mapをhashで実装することは
出来ず、外部からhash関数を与えてやるようなインタフェイスが
汎用ハッシュコンテナの設計上は必要)ってこと。

> 既に実装して持ってるが、お前には教えてやらん。
というのがどんなものだが知らんがな(苦笑)。
297名無しさん@お腹いっぱい。:2000/11/09(木) 14:05
BOOL Ellipse( LPCRECT lpRect );
で書いた円の線がどのポイントを通っているか、分かりますか?
やりたいことは、内接する、5角形を書いたりしたいんです。
298名無しさん@お腹いっぱい。:2000/11/09(木) 15:18
>>293
耳学問厨房ウザイ
299名無しさん@お腹いっぱい。:2000/11/09(木) 17:20
あのぅ、XML使ってページ作ってみた(XML+XSL)んですけど、
すべてのコードみられてしまうんです。
これじゃ、データを置いておいて、Perlを使って吐き出したほうが全然ましです。

サーバーサイドで処理して、HTMLで公開したいのですけど、
どうすればいいのですか?

XMLってどこで聞けばいいの?
300魁!名無しさん:2000/11/09(木) 17:44
>>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でまともにコンパイルできないから、
その辺がどうなっているのか知りたいっす。
305名無しさん@優しい人=53:2000/11/09(木) 23:24
>>292
ああ、勘違いしてたよ。
ハッシュテーブルの入れ物の事じゃなくて、ハッシュ関数ね。

>>298
>耳学問厨房ウザイ
そんな突っ込みしか入れられないお前はイタイ(藁
306295:2000/11/10(金) 00:16
>>304
ここから入手できますよ。
http://www.sgi.com/Technology/STL/download.html

reverse_iteratorはこの辺りかな。
http://www.sgi.com/Technology/STL/stl_iterator.h

307ドキュソ先輩のドキュン後輩:2000/11/10(金) 00:52
Linux(赤帽6.2)なんですが、
---
struct TEST {
char moji[ 3];
short suji;
};
---
をsizeofすると6になる。5にならんか?と先輩に聞かれた。
6になる理由と5にできるのならやり方を教えてください。
308304: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
構造体のパック問題というやつですな。
  構造体[バウンダリ|アラインメント]
あたりのキーワードで検索してみませう。

先輩はドキュ「ソ」で、後輩はドキュ「ン」。
この違いが気になる今日この頃。
312311:2000/11/10(金) 01:49
>>309
>>310
かぶりましたな。
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
教えて君で申し訳ありませんが、
どうしてもわからないので教えてください(;´Д`)

http://www.geocities.co.jp/MusicStar-Guitar/9458/help_me.txt

これってどう組むのでしょうか?
316名無しさん@お腹いっぱい。:2000/11/10(金) 08:53
先生に尋ねてください。
317316:2000/11/10(金) 08:57
言い方キツイが教科書と先生に尋ねればわからんかな?
答えは出せるがそれじゃ勉強にならんだろ。
どの程度までならわかるかを掲示せよ。
318>>315:2000/11/10(金) 09:33
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
検索付きってことは等差数列じゃないんでしょう。
だったらテーブルジャンプにはしてくれないと思うぞ。
321315:2000/11/10(金) 13:13
>316
先生がいるのなら、尋ねません。

>317
配列が理解できていません。
仕組みは理解できるのですが、
実際に使うとなるとまるでダメです。

>318
さっそく試してみます。ヽ(´▽`)ノ
ありがとうございます。
322名無しさん@お腹いっぱい。:2000/11/10(金) 13:31
データ圧縮とデータ伸張は、どっちが難しいですか?
アルゴリズムは、構成済み。
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
アルゴリズムによるとしか言えない。
けどだいたい 圧縮>=展開 だな

圧縮より展開のほうが大変なアルゴリズムは寡聞にして聞いたこと無い。
バックアップ用なら使えると思うんだけど。
327SAGE:2000/11/10(金) 23:45
>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にあるから
もうちょい事情が違うと思う。
332( ´∀`):2000/11/11(土) 12:45
JAVAで人為的にメモリを確保することってできる?
333名無しさん@お腹いっぱい。:2000/11/11(土) 16:15
>>332
Cで書いたのを呼び出せば出来るんじゃない?
malloc( XXX);
334499: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]);
}

335>499:2000/11/11(土) 17:18
マルチは氏ね
336名無しさん@お腹いっぱい。:2000/11/11(土) 17:49
499=335
337名無しさん@お腹いっぱい。:2000/11/11(土) 23:09
Win32でmicrosecまで測るにはどうすればいいですか?
unixならgettimeofdayが使えるのに。
338名無しさん@お腹いっぱい。:2000/11/11(土) 23:16
時刻ならGetSystemTimeとか、
時間差だけならtimeGetTimeとか。
339名無しさん@お腹いっぱい。:2000/11/11(土) 23:18
時刻ならGetSystemTimeとか、
時間差だけならtimeGetTimeとか。
340名無しさん@お腹いっぱい。:2000/11/11(土) 23:19
ごめん、2重になっちゃった。
341SAGE:2000/11/11(土) 23:37
>>337
QueryPerformanceCounter
QueryPerformanceFrequency
かな?
342名無しさん@お腹いっぱい。:2000/11/11(土) 23:49
Windowsはリソースの読込みはできますが、
書き込みもできるんでしょうか?
(Macは読み書き両方できるらしい)
できるならやり方を教えてください。
343337:2000/11/11(土) 23:53
338-340さん
thanksです。
344名無しさん@お腹いっぱい。:2000/11/12(日) 00:50
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ @ ` � タ ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・ @ ` � タ ・@
`



・ @ ` � タ ・ @ ` � タ ・@
`



・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`�タ・  @`・・・ ・  、・ 、#  、/ 、k 、w 、・� 、 ッニz <u闕・<「阮・V3z �・ >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
345新米ギコ:2000/11/12(日) 01:08
| ∧ チラリ
|Д゚) < >>344 あんまり相談にのってないオレへの嫌がらせデスカ?
|⊂|   "sag e"ってなってるし、、、
|  |
| U
346名無しさん@お腹いっぱい。:2000/11/12(日) 01:31
週末ですから。
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の日本語版プログラミングガイドを知ってる人はいませんか?
入手方法とか教えてもらえると助かります
357名無しさん@お腹いっぱい。:2000/11/14(火) 17:01
モトローラから取り寄せろ>>356
データシートでわかんなかったら諦めろ
358菊池竹男:2000/11/14(火) 19:18
特定のメンバ変数を専用に管理する関数をクラスにまとめたいのですが、
どう実装するのがスマートなのでしょうか?
または、参考にすべきパターンがあるのでしょうか?
私は以下のような方法を考えたのですが、どうでしょう?

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
> グローバルなものであるため、
という説明では不可解(だって、一般的な意味での「グローバル」
にはなってないでしょ)。
368名無しさん@お腹いっぱい。:2000/11/15(水) 15:39
>>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全体を破壊するやり方はどうやりますか?
370>369:2000/11/15(水) 18:40
「コピーコンストラクタ」「ポインタメンバ」「深いコピー」
この程度のキーワードで考えろ。
全体に適用するのはiterator使え。
371名無しさん@お腹いっぱい。:2000/11/15(水) 18:46
質問です!
インターネット上からファイルをダウンロードすると、保存先を聞いてきますよね?
あれをなくしたいんです。
要は、リンクを貼ったファイル名をクリックすると固定のパスに直接落とすようにしたいんです。
スレ違いかもしれませんが、どなたか教えてください。
お願いします。
372つーか、:2000/11/15(水) 18:51
369の言ってる事って、
 class T;
 T *p1 = new T;
 T *p2 = p1;
 delete p1;
で、p2のオブジェクトがdeleteされるのはなぜですか?
・・・と同じ。
373名無しさん@お腹いっぱい。:2000/11/16(木) 04:48
「深いコピー」… つかわせていただきます(藁
374菊池竹男:2000/11/16(木) 10:28
いろいろ考えたのですが、やはり>>365を基本に
作ることにします。
ミトコンドリ子さん、大変ありがとうございました。

>> 368
すいません、カプセル化ってよく聞くんですがなんなんでしょうか?
あと、抽象化とかオブジェクト指向ってのもよくわからないんです。
375ミトコンドリ子:2000/11/16(木) 12:20
>>374
アナタの問題が解決したのはいいんだけど、ここは公共のノウハウ共有
の場なんだから(ちがう? アタシはそのつもりなんだけど)、説明するべき
ことはちゃんとするべきだと思うの。

具体的には
アナタは当初の設計でなにがやりたかったのか?
365のコードが提示されたことでなにがわかったのか、される前にわかって
いなかったことはなんなのか?
についての説明をいただきたいわ。

そういうまとめがあれば、まとめを読むことで同じ問題を抱えている人
が自分で解決にたどり着いたりすることもあると思うの。
それに言葉にして説明すると思考が具体化するから、自分の課題の整理にも
なってよ。
アナタのためにも、スレを読むほかのひとのためにも、よろしくね。
376368:2000/11/16(木) 12:49
>カプセル化ってよく聞くんですがなんなんでしょうか?
>抽象化とかオブジェクト指向ってのもよくわからないんです。
オブジェクト指向の基本的な概念です
以下のリンクを参考にしてください。
私が1から解説するよりもよいでしょう。
また、書籍なども挙げておきます

・www上での解説
 オブジェクト指向技術の基本概念
 http://mentai.2ch.net/test/read.cgi?bbs=prog&key=964560144&st=4&to=4&nofirst=true

・C++限定
 Effective C++ (改訂2版 )
 スコット・マイア−ズ;吉川邦夫
 アスキ−(1998) ISBN:4756118089

 More Effective C++ ―最新35のプログラミング技法
 Meyers, Scott; 安村 通晃・伊賀 聡一郎・飯田 朱美
 アスキー(1998) ISBN:4756118534
377菊池竹男:2000/11/16(木) 14:16
>ミトコンドリ子
今までのものはクラスを使わずに
ひとつの構造体とそれに特化した関数で作られていたんですが、
関数の構成があまりにも混沌としており、十分な機能別けが
出来ておりませんでした。
そこで、機能ごとにクラスにまとめようと思ったのですが、
メンバ変数を個々のクラスに持たせてしまうと、元々の変数のスコープ的な
意味合いが変わってきてしまうので、どうすればいいかと考えておりました。
結局、365にいただいたものが基本なようなので、無理をして
いままでのスタイルを維持することもないと思ったのです。

>376
ありがとうございます。
これからちょっと読んでみます。
378名無しさん@お腹いっぱい。:2000/11/16(木) 14:25
VCでEditBoxの表示桁数もしくは入力桁数を
2桁とかに制限したいのですが
どなたかご存知の方教えて下さい
379>>378:2000/11/16(木) 14:53
SetLimitText
380( ・∀・)さん:2000/11/16(木) 17:17
ウィンドウクラスを生成する際に窓の縦横幅を指定しますが、枠の幅で微妙にずれてしまうようです。
枠の内部のサイズを厳密に指定したいんですがどうすればいいでしょうか?
381SAGE:2000/11/16(木) 19:53
>380
AdjustWindowRectとかなんとかそんな名前のAPI。
382名無しさん@お腹いっぱい。:2000/11/16(木) 21:17
>>380
AdjustWindowRectじゃ不可能なのでサイズを変更後にひたすら再調整
383( ・∀・)さん:2000/11/16(木) 21:46
多分キャプチャして拡大して見れば枠の幅はわかるとは思いますが
こういうのはレジストリやiniなどの変更で変わることはないんでしょうか。
普通そんなことする人はいないでしょうけど、
逆に考えるとそこを見ればサイズがわかるかなと思いまして。
384( ・∀・)さん:2000/11/17(金) 03:17
とりあえず
横:4+w+4(w>=104)
縦:23+h+4(h>=0)
ということになりました。
ただし95でですが。
385gcc: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
387gcc:2000/11/18(土) 01:27
>>386 そうなんですか?
当方 Linux 2.2.14 & gcc 2.95.3 です。
ちなみに -ansi を抜くと怒られないんですけど、、、。
388名無しさん@お腹いっぱい。:2000/11/18(土) 02:00
アプレットがJavaプログラムをクライアントで実行するのに対し
サーブレットはサーバーで実行するなら、当然サーバへの負荷は
サーブレットの方が大きくなるわけですか?
389名無しさん@お腹いっぱい。:2000/11/18(土) 03:08
そうです
390386:2000/11/18(土) 06:32
>>387
Slackware 7.0(egcs-1.1.2)では怒られたよ。
-D_GNU_SOURCE もしくは -D_BSD_SOURCE 付けなきゃいかんようだな。
391gcc:2000/11/18(土) 07:51
>>387
ありがとうございます。勉強になります。
_D_GNU_SOURCE と_D_BSD_SOURCE の両方ともうまくいきました。
392gcc:2000/11/18(土) 07:52
>>391 あ、_D じゃなくて -D です。
393std::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
オブジェクト指向ってなによ?
397名無しさん@お腹いっぱい。:2000/11/18(土) 19:29
わたしはテンプレートの場合、ソースのサイズがデカイのは全然気に
なりません。
398水原勇気:2000/11/18(土) 21:01
ドリームボールのようなもの<オブジェクト指向
399名無しさん@お腹いっぱい。:2000/11/18(土) 23:38
ドラゴンボールのようなもの<オブジェクト思考
400std::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 文で分岐して、エラーメッセージを表示する程度。
重要な場合はファイルに保存せずにメモリ内で処理する。
処理中に異常終了したときのことも考えてメモリとファイルの両方に保存するときもある。
異常終了の場合はファイルを読み込んで再起動。
403新米ギコ@いいかげん:2000/11/19(日) 00:58
 ∧ ∧ ──────
 (゚Д゚ ) < >>396 object oriental なんつったり
 ⊂⊂\──────
   \ 〜 ────
     し し ─────
 ∧ ∧ ──────
 (゚Д゚ ) < >>400 省機能なら逝けるかもしれん
 ⊂⊂\──────
   \ 〜 ────
     し し ─────
 ∧ ∧ ──────
 (゚Д゚ ) < >>401 生C、とか生C++だとめんどくさいけど一回一回やらないとダメ
 ⊂⊂\─── ファイルオブジェクトが提供されているようなとこだったら適当なとこで
   \ 〜 ─ 例外をキャッチする。
     し し ─────
404名無しさん@お腹いっぱい。:2000/11/19(日) 01:23
>403
ファイルオブジェクトが提供されてないなら、
Proxy自作すべし。そこで投げる例外も自作。
405未熟者:2000/11/19(日) 06:06
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週間程度で完成するレベル・・・と思います)。
また依頼するにあたって気をつけることなどありましたらアドバイスお願いします。
ひょっとしたら根本的な勘違いをしているかもしれませんので
お叱りと共に指摘していただければ幸いです。
よろしくお願いします。
410名無しさん@お腹いっぱい。:2000/11/19(日) 22:39
>409
企業に納品するアプリケーションは、製作が2週間でも、
その仕様をクライアント(あなた)との間で精密に決定して
いく作業と、試験と、クライアントに対する運用トレーニング
とかで、3倍とか4倍とか掛かると思うよ。もちろん、その間の
経費はあんた持ち。

でもって人間一人一ヶ月使うなら100万は覚悟しましょう。

そこまで金使うつもりがないなら、プロに頼むのは無理。
というか、そもそもそんな必要ないものなんでしょ?
411個人事業主:2000/11/19(日) 22:53
>>410
お返事ありがとうございます。
100万ですか・・・。
それ以上になるとキツイですが、
今後のことを考えるとその価値はある投資だと思います。
よろしければ検索のキーワードでも構いませんので
お教え願えませんか?
412名無しさん@お腹いっぱい。:2000/11/19(日) 23:09
>規模的には慣れた方なら2週間程度で完成するレベル
何をもってそう思ったのかはわかりませんが、
そういうそういう考えかたができるということは
あなたもある程度のプログラミングの知識はお持ちなのでしょうか?
でしたら企業対企業ではなく個人対個人でしたらもっと安価にできる
場合もありますよ。
いちばんの違いは信用の部分。
413個人事業主:2000/11/19(日) 23:28
>>412
一応BASICで遊んだことはあります
(そして読んでないC++の本がつんであります)。
パソコンにやらせたい作業の手順(アルゴリズムと言ってよいのでしょうか)
も頭の中ではできています(プロから見たら穴だらけだとは思いますが)。
個人間でできればよいのですが
万が一そのプログラムが商品になるという見込みが発生した場合・・・
プロから見たら痛い厨房的な発想に見えるかも知れませんが
その辺のことを考えると企業かなと、少ない情報ながら判断しております。
・・・・
教えて君ですみません。私はどこに行けばよいのでしょうか?
414名無しさん@お腹いっぱい。:2000/11/19(日) 23:47
>そのプログラムが商品になるという
プログラムそのものを販売する。ということですか?
それだとそのご予算では相当きついのではないかと‥
契約にもよりますが、通常、料金には使用権しか含まれないかと‥
メンテナンスや販売権などは全く別です。
415cafe:2000/11/20(月) 14:58
posix-shで標準出力のバッファを書き出すflush()みたいな
コマンドor設定ってないですか?
とろいマシンなんで同期がとれないみたいなんです。
416名無しさん@お腹いっぱい。:2000/11/20(月) 15:18
PostgreSQLに50万件ほどデータを挿入してみたのですが、
oidフィールドでの問い合わせがやたら遅いです。PostgreSQLの
oidフィールドは、インデックスキーになっていないのでしょうか?
417名無しさん@お腹いっぱい。:2000/11/20(月) 16:00
>416 ???
多分...
oidを求める為の問い合わせが遅いような気がする
# 主キーがインデックスになっていないとか
418名無しさん@お腹いっぱい。:2000/11/20(月) 18:29
>>417 レスありがとうございます。

select * from theTABLE where oid='5487916';
としたときのレスポンスが極端に遅くなります。「theTABLE」
をクリエートするとき「oid」をインデックスに設定しなきゃ
いけないんでしょうか?
419名無しさん@お腹いっぱい。:2000/11/20(月) 23:39
テキストデータの暗号化/複合化が出来る簡単なライブラリとかどこか無いですか?
ポインタだけでいいので教えてください。
420名無しさん@お腹いっぱい。:2000/11/21(火) 00:25
暗号化がしたいのかポインタが知りたいのかどっちだ?
もしかしてポインタってURLのことか?
421名無しさん@お腹いっぱい。:2000/11/21(火) 00:32
419>420
そうです,すいません。まぎらわしい書き方をしてしまいました。
ポインタはURLの事です。
422名無しさん@お腹いっぱい。:2000/11/21(火) 04:50
>>419
crypt(3)は?
と思ったけどだめだ。元に戻せない。
423名無しさん@お腹いっぱい。:2000/11/21(火) 05:50
>>420
必要な暗号強度は?
424上のは:2000/11/21(火) 05:50
>>419 だスマソ
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日空けただけ
なのに、自分の書きこみがだいぶ前になっててびっくりしました。

アルゴリズム的にムダな条件分岐は無かったです。

ただ、今のやり方のまま、例えば数千行にわたる手順をう
まく動くように構成するのは無理っぽいので、かなり危機
感感じてます。
429423>>425:2000/11/21(火) 13:40
既出かはしらないけど、こんなのあるよ。
暗号強度は結構高いというか有名どころがインプリメントされてる。
http://www.eskimo.com/~weidai/cryptlib.html

商用からみで使うなら ? だけど
430:2000/11/22(水) 22:42
>>428
ふつう誰も悩まないのかな・・
431名無しさん@お腹いっぱい。:2000/11/23(木) 01:29
VB始めて2ヶ月足らずのうんこ大学生です。
VBのMEという命令、オブジェクトについて教えてください
使い方がいまいちわかりませぬ(怒)
4320xE104: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);

これでやるとどうなる?
434名無しさん@お腹いっぱい。:2000/11/23(木) 06:18
printfは変数の型をフォーマット文字から推測する仕様なので
そうなってしまうのが正しいのだ。
string は char*、&string は char(*)[]だが
printfはそのどちらも%sをみてchar*だと判断してしまう‥
435暇つぶし:2000/11/23(木) 06:49
double a = 1.0;
float b = 2.0;

printf( "%f %g\n", a, b);

これは正しいけど

scanf( "%f %g\n", &a, &b);

これは正しくない
436名無しさん@お腹いっぱい。:2000/11/23(木) 10:30
>>433 意図不明… だれかテレパスのひとの解説きぼう
437名無しさん@お腹いっぱい。:2000/11/23(木) 13:53
>433

stringも&stringも、値は一緒だから。
本来、&stringの方は間違いなんだけど、ANSIの規格では認めることになったらしい。

コンパイラによってはエラーになったりするよ。
438名無しさん@お腹いっぱい。:2000/11/23(木) 13:54
>432
の間違い
4390xE104: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);
441名無しさん@お腹いっぱい。:2000/11/23(木) 18:13
"%p"のがよくないか?
442名無しさん@お腹いっぱい。:2000/11/23(木) 18:50
437が意味不明
テレパスさんきぼ〜ん
443名無しさん@お腹いっぱい。:2000/11/23(木) 19:11

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が代入されるのですか?
445名無しさん@お腹いっぱい。:2000/11/23(木) 20:06
>444
おれの持ってるコンパイラはbcc5.5なんだけど、

*(&a)=1;

は、"左辺値が必要"ってエラーが出て、コンパイルできない。
だぶん、*(&a) → a と判断されて a = 1になってしまい、配列名への代入になってしまったんだろう。
*((char*)&a) とキャストすれば問題なし。

4460xE104:2000/11/23(木) 20:13
>>443
あ〜、そういうことなんですか。解説多謝。
でも…

>>440
結果:
0x257fdac
0x257fdac
0x257fdac
0x257fdac

ぎゃあああああぁあぁっ!!
447名無しさん@お腹いっぱい。:2000/11/23(木) 20:44
printf("0x%08x\n", &pstring);
もやってみ>>446
4480xE104:2000/11/23(木) 21:00
>>447
0x257fdac
0x257fdac
0x257fdac
0x257fdac
0x257fda8

うむ。
449443:2000/11/23(木) 22:12
string == pstring
なのに
&string != &pstring
なのがミソ
450名無しさん@お腹いっぱい。:2000/11/24(金) 01:56
>>449
そりゃそうでしょ?

char *stringA;
char stringB[256];

stringA は、ポインタ型変数が生成されて、
stirngB は、256バイとの領域が生成される。

&stringA は、そのポインタ型変数を示すアドレスを返す、
&stringB は、256バイとの領域の先頭アドレスを返す。

なんだからさ
4510xE104:2000/11/24(金) 09:06
>>450
>&stringB は、256バイトの領域の先頭アドレスを返す。

でも、普通256バイトの領域の先頭アドレスを返すのには&なしの
"stringB"を使いますよね?

それが混乱の原因だったわけで。
452名無しさん@お腹いっぱい。:2000/11/24(金) 09:49
453名無しさん@お腹いっぱい。:2000/11/24(金) 22:20
eMbedded VisualC++を使っていてH/PC上のアプリで
CTime time( 2000, 11, 27, 0, 0, 0 );
と設定し、time.GetYear()などで年月日を取得すると
1864年10月20日という値が取得されてしまうのですがなぜなのでしょうか?
エミュレータ上ではうまく取得できます。
454453:2000/11/24(金) 22:26
OSはWinCE2.1.1です
455CEしらんけど: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なら、”そんなもんいい加減でいいんだよ”でスーと流すのがスタイルでは?
461名無しさん@お腹いっぱい。:2000/11/25(土) 10:17
#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準拠」らしい。
本来ならどっちが正しいの?

462名無しさん@お腹いっぱい。:2000/11/25(土) 10:17
#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準拠」らしい。
本来ならどっちが正しいの?
463名無しさん@お腹いっぱい。:2000/11/25(土) 10:17
#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準拠」らしい。
本来ならどっちが正しいの?
  
464名無しさん@お腹いっぱい。:2000/11/25(土) 10:17
#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準拠」らしい。
本来ならどっちが正しいの?

  
465名無しさん@お腹いっぱい。:2000/11/25(土) 10:18
#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準拠」らしい。
本来ならどっちが正しいの?

 
466名無しさん@お腹いっぱい。:2000/11/25(土) 10:18
#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準拠」らしい。
本来ならどっちが正しいの?

    
467名無しさん@お腹いっぱい。:2000/11/25(土) 10:18
#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準拠」らしい。
本来ならどっちが正しいの?

      
468名無しさん@お腹いっぱい。:2000/11/25(土) 10:18
#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準拠」らしい。
本来ならどっちが正しいの?

469名無しさん@お腹いっぱい。:2000/11/25(土) 10:19
#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準拠」らしい。
本来ならどっちが正しいの?

答えろグラァ!
470名無しさん@お腹いっぱい。:2000/11/25(土) 10:19
#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をリブート
したいのですが、こんなことってできますか?
472471:2000/11/25(土) 14:26
おっといい忘れた。マシンはWinです。
473>471:2000/11/25(土) 18:30
そーゆー事はたぶんできないです。
(ってゆーかそれを許しちゃうOSはヤバイと思う)

リモートコントロールできるソフトを相手に常駐させれば
出来なくもないとだけいっておきましょう。
474名無しさん@お腹いっぱい。:2000/11/25(土) 18:56
rshがあるunixはヤバイわけか。
475名無しさん@お腹いっぱい。:2000/11/25(土) 18:58
telnet接続もヤバイんだろうな。
476名無しさん@お腹いっぱい。:2000/11/25(土) 19:12
Wake On LAN ?
477>:2000/11/25(土) 19:22
>471
一定時間ごとにとあるファイルが共有フォルダBにあれば
それを削除して「リブートする」ようなプログラムを
Bで走らせておく。
~~
リブートはさすがにさせたことはないが‥
リモートが使えない環境で、あいてになにかさせたいときに
よく使う手だ。
478>:2000/11/25(土) 19:24
s/共有フォルダB/共有フォルダ/
s/Bで/Aで/

かっこわる‥
479471:2000/11/25(土) 21:31
予想通りか…。
480名無しさん@お腹いっぱい。:2000/11/25(土) 22:00
何がぢゃ?固羅。
481名無しさんi486:2000/11/26(日) 00:08
HTTPD立ち上げといて、CGIとして実行させるってのは論外?(汗

いやね、調度こないだ知人にHTTPでEXEファイル拾わせようとしたら
うちで実行されて焦った事あったから。
482481:2000/11/26(日) 00:24
実行した後数秒キャンセル待ちして、キャンセル無かったら標準出力に何か吐いて電源off
「拾い終わったら電源落としといて」とか言えて便利そうだ。 仕込んどこ。
483名無しさん@お腹いっぱい。:2000/11/26(日) 01:09
ある意味恐いが使いようによっては便利だな。
484名無しさん@お腹いっぱい。:2000/11/26(日) 06:56
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するのしか思い付かない・・
487Visual名無しさん: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();
 }
というように書こうとするとできません。
こういうことはできないのでしょうか。
自分はポインタがよくわかっていないようで、
どなたがお教えください。
490Visual名無しさん:2000/11/29(水) 20:14
おい、
 x->func();
もホントにできるのか?
 xx->func();
じゃなくて?
491初心者:2000/11/29(水) 20:20
すいません。490さんのおっしゃるとおり、
xx->func_()
でした。
申し訳ありません。
492Visual名無しさん:2000/11/29(水) 20:45
で、下の方は正解は
xx[i].func();
だろう。
493LSI-名無しさん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へのポインタ…でしょうか?(;´Д`)
495Visual名無しさん: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へのポインタ)を意味する。

説明下手でスマソ。
496Visual名無しさん:2000/11/29(水) 21:32
てゆーかオブジェクトって単語の使い方間違ってる気がしてきたsage。
497名無しさん@お腹いっぱい。:2000/11/30(木) 02:23
助けてください!!

現在インストールされてるDirectXのバージョンは
どのように調べればよいのでしょうか?
498名無しさん@お腹いっぱい。:2000/11/30(木) 04:42
コンパネ…>497
プログラムからなら、COMのインタフェースにそういうの無かったかい?
499名無しさん@お腹いっぱい。:2000/11/30(木) 06:07
>497
mssdk\samples\Multimedia\DXMisc
500初心者:2000/11/30(木) 07:00
>495さん
なんか少しわかったような気がします。
もう少し考えてみます。ありがとうございました。
501名無しさん@お腹いっぱい。:2000/11/30(木) 18:24
C++のテンプレートって、なんで"templete"なんですか?
"template"ぢゃないの?
英和辞典で"templete"引いても乗ってないし。
502名無しさん@お腹いっぱい。:2000/11/30(木) 18:26
>>501 ハァ?
503名無しさん@お腹いっぱい。:2000/11/30(木) 18:42
>>501
今すぐ医者へ逝け。そして帰ってくるな。
504名無しさん@お腹いっぱい:2000/11/30(木) 20:18
ちと書く場所が違うかもしれないけど、純粋?なC++の
仕様書って、何処に行けばあるんですか?
MFCとかいろいろあるけど、どれにも汚染されてない奴が欲しい.

いやーなんでかってstatic_castはC++のキャストだと思ってたんだけど
上司に否定されて、(MFCのキャストじゃないの?とか言いやがった!)
悔しいから調べてるんだけど、わかんないんだよね.
505504:2000/11/30(木) 20:30
お姉さんに聞きます。
506名無しさん@お腹いっぱい。:2000/11/30(木) 20:59
Stroustrup の名前ぐらい知っとけ。
507504:2000/11/30(木) 21:00
うわー無限再帰呼び出しだ〜スタックがー!
508名無しさん@お腹いっぱい。:2000/11/30(木) 21:17
win98でバッチファイル実行時にDos窓が残っちゃうんですが、
これを消すようなオプションみたいなのってないですか?
509>508:2000/11/30(木) 21:33
バッチファイル実行後にエクスプローラで見ると同じ名前の
別のファイルが出来ていませんか? それをマウス右ボタンで・・・・
510508:2000/11/30(木) 22:05
>>509
このショートカットって必ず出ちゃうんですね
とりあえずありがとうございます。
511>504:2000/11/30(木) 23:41
>悔しいから調べてるんだけど、わかんないんだよね.

http://www.google.com/search?q=static_cast+%83L%83%83%83X%83g&num=10&meta=hl%3Dja%26lr%3D&safe=off

ほんとに調べたのか?

512名無しさん@お腹いっぱい。:2000/12/01(金) 05:42
ポイントからポイントへのライン4本(ポイント8つ)で表現された四角ポリゴンの
4ポイントを順に得るにはどう処理したら宜しいのでしょうか。

かなり悩みましたがどうも上手くまとまりません・・・
単純に4ポイント得ると|><|の様に成る可能性があるんですよね。
513512:2000/12/01(金) 05:49
あぁ寝ぼけてた・・書き込むボタン押した瞬間に目覚めました。 多分解決;
514( ´∀`)さん:2000/12/01(金) 06:44
たまにリアルボケってあるよね。
本気で悩んでるのにわかったらあたりまえのようなこと。
515501:2000/12/01(金) 08:15
一体どこで勘違いしたんだろう……
鬱だ氏のう。マジで。
516>501:2000/12/01(金) 08:59
ああ、あるあるそういう事  でもゴメン笑わせて貰いましたよ

よかったね匿名掲示板で
517504:2000/12/01(金) 09:52
>511
うがぁ。
さるですまん。サルなりに頑張ったつもりだったんだけど
だめだめだったようだ。
鬱だ氏のう。
あ、いや、たすかったっす。さんくす。
518501>516:2000/12/01(金) 10:01
ええもう、実名なら社会的信用一気に失墜するところでした。
プログラム板の皆様、今後ともお見知りおきを。
519名無しさん@お腹いっぱい。:2000/12/01(金) 10:52
templete age
520名無しさん@お腹いっぱい。:2000/12/01(金) 11:59
CGIの勉強を始めたいと思います。
何かお勧めの本がありましたら教えてください。
ちなみに自分の知識はHTMLをかじった程度です。
521名無しさん@お腹いっぱい。:2000/12/01(金) 12:17
>>520
そういうことは参考図書スレで訊け。
というか、CGI板にいけ。
http://tako.2ch.net/cgi/index2.html
522名無しさん@お腹いっぱい。:2000/12/01(金) 15:20
>521
2ちゃんねらーらしい親切なんだけど感じ悪い答えですが
そーゆー答えを待ってました。
どーもありがとう
逝って来ます
523名無しさん@お腹いっぱい。:2000/12/01(金) 15:25
>>521
http://tako.2ch.net/perl/index2.html
こっちじゃねーか?
524521:2000/12/01(金) 15:40
む、その通りである。欝山車脳。
とりあえず、自分を晒し上げ。
525名無しさん@お腹いっぱい。:2000/12/01(金) 17:03
char abc[13];
strcpy( abc, "123456789012" );
printf( "%10.2f", atof(abc)/100 );

「1234567890.12」 って出したいのに
なんだかわかんない数列になるのはなんでー?
526525:2000/12/01(金) 17:11
stdlib.h なかったー
527名無しさん@お腹いっぱい。:2000/12/01(金) 18:09
ほのぼのしました>>526
528名無しさん@お腹いっぱい。:2000/12/02(土) 04:01
WindowsSDKの質問なんですけど、メモリを確保するのに、GetProcessHeapを使うのと
HeapCreateを使うのは、どこがどう違うのでしょうか。GetProcessHeapは一プロセス
で一度しか呼んじゃいけないという理解は正しいでしょうか。
529名無しさん@お腹いっぱい。:2000/12/02(土) 04:14
GetProcessHeapは何度でも呼べるよ。普段はこれで十分。
HeapCreateは確保したチェインをHeapDestroyで一括破棄したいときとかに便利だね。
530名無しさん@お腹いっぱい。:2000/12/03(日) 06:08
本屋まわってきたのですが・・・・DirectX8のSDKが付いてくる雑誌って出て
ないのでしょうか。140Mダウンロードするのはちょっとキツ過ぎですので。

まだ早いのかな・・・。
531名無しさん@お腹いっぱい。:2000/12/03(日) 06:33
>530
次号のCマガとかについて来そうですね
自分、普通のネット環境ですが頑張って落としましたよ
ヘルプだけなら10Mくらいなんでそれ見て楽しむべし

バージョンが上がるごとにSDKが太っていくのは
何とかならんものですかね・・・
532530: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は数字、△はスペースを表しています)

▲プログラムの仕方がわかりません。教えて下さい。
534名無しさん@お腹いっぱい。:2000/12/05(火) 00:23
>>533
言語の種類くらいかけよ
日本語でいいのか?
535名無しさん@お腹いっぱい。:2000/12/05(火) 00:46
>>534
ごめんなさい。C言語でお願いします。
536名無しさん@お腹いっぱい。:2000/12/05(火) 01:12
>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
ありがとうございました。
わからないところが解けたのですっきりしました。(´Д`*)
540X:2000/12/06(水) 02:50
プログラムで稼ぐには何勉強したらよいですか?
541名無しさん@お腹いっぱい。:2000/12/06(水) 03:08
>>540
そんな質問をするようでは、稼げるようになるまでに、
何年かかるか知れたもんじゃありません。
プログラムより、コンビニでバイトした方が良いです。
542名無しさん@お腹いっぱい。:2000/12/06(水) 04:16
>540
プログラムでお金を稼ぐのはあきらめましょう。
543名無しさん@お腹いっぱい。:2000/12/06(水) 10:29
>>540
プログラマーには、あらゆるスキルが必要です。
数学:会議で「素数ってなに?」って言わないように
国語:2ちゃんねるを参考に
理科:CPUの中で電子が飛び回ってる図が想像できるように
英語:コメントは英語が一番。馬鹿なコメントがばれません
家庭科:徹夜が多いので、料理・裁縫は出来ないといけません
工作:自作から配線まで
体育:いわずもがな体力勝負
アルコール:酒も飲めなきゃ仕事は取れない。めざせ人間ポンプ
話術:客を煙に巻く。必殺技「仕様です」
度胸:土下座して取った仕事を、平気で納期破れるように

etc...
544新米ギコ@国内某所:2000/12/09(土) 01:35
  ∧∧
 ¶( ゚Д゚) <チョッ、チョット寂シンダナ
 ゝ|U |┐
 (,|/  |┘
  U U
545名無しさん@お腹いっぱい。:2000/12/11(月) 14:57
めちゃ基本的質問ですみません。
構造体の初期化ってどうしてます?
KOUZOUTAI a;
memset(&a,0,sizeof(a));
ですよね、普通。これを、
KOUZOUTAI a = {NULL};
とかやってるやつがいるんですがどう思います?
546名無しさん@お腹いっぱい。:2000/12/11(月) 15:30
>>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
>>545
コンストラクタで初期化する。
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
>>552
移植性は無視ですか?
554名無しさん@お腹いっぱい。:2000/12/13(水) 02:13
float は使用禁止 double を使えって昔言われて以来 float は使ってない。
使ったらいけない理由は未だに不明
555552>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
>>557
ちなみに宣言してる場所はどこ?
559555>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
http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm
ここのO(ND) アルゴリズムで見つけたSEDの経路を保存して
差分を作れるようにするにはどうすればいいのでしょうか?
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を入れておいて、
移植の時に未来の自分や他人が書き直すのを期待したいです…
572567>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にリンクされてるライブラリがわかります。
576574:2000/12/14(木) 03:24
それだと、/usr/lib/libc.so.1 だってことはわかるのですが、
そのバージョンが知りたいのです。
577575: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

とかいうバッチをたたいてやるというのはどうよ。
引数に
コンピュータ名 ユーザ名 パスワード
を渡してやればよい。
586584:2000/12/18(月) 15:54
>>585

 レスありがとうございます。
早速試してみたところうまくいきました。

 エラーのチェックとかはコマンドの最後に > a.txt とつけて、その中に

コマンドは正常に完了しました。

 とか出てることを見る…、これが正しいやり方なのかわからないですけど、
そうしてみます。
587585: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
588584:2000/12/18(月) 17:51
>> 585

 2度に渡るレスありがとうございます。
そのソース見させて頂いて私の考えがかなりあほだと、
わかりました。
 会社のソースにこんなん残していっていいのか、と
正直思ってましたんで。
 そのソース使わせて頂きます。
589名無しさん@お腹いっぱい。:2000/12/19(火) 04:27
Windows上のC/C++で使える定番の文字コード変換ライブラリ
(perlのjcode.pl/Jcode.pm, Delphiのjconvert.pasみたいな)
ってあるんでしょうか?

nkf.dllは外部ライブラリなので、組み込みで使えるやつを。
http://norihisa.washitake.com/freeware/kanji/
とか見つけたんですが、シビアな分野なので実績のあるやつがいいな、と。
590名無しさん@お腹いっぱい。:2000/12/19(火) 10:57
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 をかまします。
594名無しさん@お腹いっぱい。:2000/12/19(火) 11:45
>>593
>この for ループは string の頭から行って最初に 0 でない値に当たるまで回ります。

なにを言ってるかわかりまへん。
正解は「string の頭から \0 の1個前」まで。
595591: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にものってるし、そのまま検索しても
良いページに当たるぞ
597名無しさん@お腹いっぱい。:2000/12/19(火) 12:21
>>595
stringの文字列中にdelim中に含まれる文字が存在するとnew_delimに置換する
例えばquery = "abc*def?efg<hij>"の文字列だとすると
gnut_strdelimit呼び出し後のqueryは"abc def efg hij "
となる
598名無しさん@お腹いっぱい。:2000/12/19(火) 12:21
あ"あ"へぼなオレ
半角スペースでインデント打ってもだめなのね・・・
次からは、全角で入れよう
599名無しさん@お腹いっぱい。:2000/12/19(火) 12:24
>>596
すげー細かいが個人的には
> if (strchr(delim,*c)){
if (strchr(delim,*c) == NULL){
かなぁ
600598: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;
}
602596=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" になる。
604591:2000/12/19(火) 13:48
どうも有難う御座いました。
ほんとに初心者なんで、さっぱり分からなかったのですが
どうにか、やっと理解できそうです。
今、学校でソースコードの解読を突然させられてて、結構
楽しいのですが、こうも意味がわからないと、先に進めなくて
困ってたところでした。
軌道にのるまで、また、いろいろ質問させてください!
605名無しさん@お腹いっぱい。:2000/12/19(火) 14:05
>>599
眠たいんか?
そのコードは NULL ポインタをさがしてるんじゃなくて、NUL文字('\0')を
探してるんじゃ。ポインタとchar型を比較してどうする。
そんなんでよくコンパイラ通せるな。
書くんだったら
if (strchr(delim,*c) == '\0){
と書け。

>>600
偉そうなこと書いてコードも読めんのか。


606名無しさん@お腹いっぱい。:2000/12/19(火) 14:10
>>605
おまえも寝てるだろ
if (strchr(delim,*c) == '\0'){
が正解。


607名無しさん@お腹いっぱい。:2000/12/19(火) 14:12
>>605 は無視してください
彼はstrchrを使ったことの無いネタ心者です。
また、厨房なのでstrchrの戻り値を調べずにアホなことを言ってます。

> 偉そうなこと書いてコードも読めんのか。
オマエガナー

608デフォルトの名無さん:2000/12/19(火) 14:19
判定:605が厨房
609591:2000/12/19(火) 14:27
俺から見たら全員よくできます
610名無しさん@お腹いっぱい。:2000/12/19(火) 14:33
>>605
逝ってよし
611名無しさん@お腹いっぱい。:2000/12/19(火) 14:35
>>599 >>602 >>605 >>606
全般的に寝てるだろ。
if (strchr(delim, *c) != NULL)
が正解
==NULLじゃ見つからなかったときにif節が実行される堕炉。
'\0'と比較してるやつは論外。
612名無しさん@お腹いっぱい。:2000/12/19(火) 14:49
まあいずれにしろ。
charをstrchrに渡すのは、符号拡張が引き起こす微妙で腐った問題が
あるので、あまり好ましいとは言えない。
最低でも0xffでマスクするか、unsigned charにキャストしてから
渡すべきであろう。
NULLと明示的に比較するかどうかについてだが、俺はまずしないな。
そういう意味では元のソースの書き方の方が俺の好みに合っている。
ただし第2引数はconst char *にするし、第3引数はintにするだろう。
613599=607:2000/12/19(火) 14:57
>> if (strchr(delim,*c)){
>if (strchr(delim,*c) == NULL){
ifの条件を逆にしている俺、逝ってよし

>> 偉そうなこと書いてコードも読めんのか。
>オマエガナー
オレモナー

# ネタ心者は俺か...611サンキュ
614傍観者:2000/12/19(火) 14:58
>>611 >>612
かっこえぇ。
あとは、みんな厨房だったのねぇ。
615新米ギコ:2000/12/20(水) 01:07
  ∧∧ プハー
 ¶( ゚Д゚) =3 >>614 ヨクアルコトナンダナ
 ゝ| つ日~~
 (,|/  )
  U U
616591: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 *)はこんな形のは初めて見ました。
617591:2000/12/20(水) 12:07
あとshare_item *share_find(int ref)などで、よくrefという
変数が定義されるのですが、refというのは、
一般的に何の略になるのでしょうか?
618591: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というコトバが出てきます。
どうかお願いします。(あつかましくてすみません、
全然分からないのです)
619名無しさん@お腹いっぱい。:2000/12/20(水) 12:20
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 指示対象 かと
622名無しさん@お腹いっぱい。:2000/12/20(水) 12:36
>>618
つか、それって仕事のコードじゃないのか?
こんな所にぺたぺた貼っていいのか?(笑)
623591:2000/12/20(水) 12:41
ありがとうございます。
仕事のコードじゃなくて卒論で使うソフト
の解析をしています。
失礼しました。
624591:2000/12/20(水) 12:46
オープンソースなので大丈夫です。
でも、解析が難しくて大変です。
625むぎ茶:2000/12/20(水) 14:19
デバッガ起動してステップ実行するのもいいぞ
626名無しさん@お腹いっぱい。:2000/12/20(水) 16:17
>>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かな?
627591: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
631名無しさん@お腹いっぱい。:2000/12/21(木) 10:54
>>629
> gnut…GNU関係?
gnutellaもどき
http://www.umr.edu/~jjp/
632628:2000/12/21(木) 23:14
カンマ切り分けはするしかないとして、
書式文字列側は、これも切り分けるのでしょうか?
633591:2000/12/22(金) 00:54
>626
gnutをよまれたことがあるのでしょうか?
今cli_interfaceのメイン関数をかなり雑に読みきったんですが、
こういうソースファイルでは、srcに入っていても使わないc fileとか
も存在するのでしょうか?
一回もみていないようなファイルもあるのですが、
やっぱり間違えてるのかな?
やっぱり初心者にはなにかときついです。
634591:2000/12/22(金) 00:55
つまり、一回もつかわない関数とかがかなり余ってる状況です。
635591:2000/12/22(金) 00:55
またまた抽象的な話ですみません。
636名無しさん@お腹いっぱい。:2000/12/22(金) 01:32
気にするな>633
637名無しさん@お腹いっぱい。:2000/12/22(金) 03:34
>>633
あのねぇ〜
ずっと読んでいたけど、線形リスト・文法・関数ポインタと質問して
ついにはgnutを読んだことある人いますかって?
Cの概念全部ここで聞き出す気か?
K&Rでも読んで、ちっとは自分で勉強しなさいっ!
638591:2000/12/22(金) 09:14
ごめん。
639591:2000/12/22(金) 09:15
微妙に分からんことが多いもので
640名無しさん@お腹いっぱい。:2000/12/22(金) 11:10
>>633 626ですが...
> gnutをよまれたことがあるのでしょうか?
まぁ、ざっと流し読みしたことはあるけど...
それを聞いてどうするつもり?

> こういうソースファイルでは、srcに入っていても使わないc fileとか
> も存在するのでしょうか?
lintかましてみれば、定義したけど使ってない関数とか検出できるよ

あと、解析するときのアドバイスだけど
全ソース1万ステップ超の場合、頭から追っていくだけでは多分理解できない
まず、モジュール構成図とか大まかな地図を作って、
入り組んでいる所はソースを追う様にしていった方が効率がいい

環境があるなら、動かしてみてそれをデバッガで
追っていったりする手もある

楽して人に教えてもらうより、
苦しんで自分で学んだ方がずっとためになる。
頑張れ
641名無しさん@お腹いっぱい。:2000/12/22(金) 15:33
K&Rってすごいよね。
Cをやる環境ならどこにでもある。
絶対誰かが持ってる。
ふと、自分のやつの見ると”第2版221刷”になってた
みなさんのは大何刷?
642639:2000/12/22(金) 15:52
2版253刷さっき買った
643639:2000/12/22(金) 15:54
>640
さんくす もうちょい自力で頑張ります。
でも、また教えてください。
644639:2000/12/22(金) 16:02
さっきまでは、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()使えばいいだろう。
650648: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
>>655
たまたま見つけたから。
TransparentWindow : a one line hack to get a window transparent

http://www.chez.com/fstark/cocoa/examples/index.html
657名無しさん@お腹いっぱい。:2000/12/30(土) 08:28
>>656
ありがとうございます…って公開しとらんのかい>Apple
658新米ギコ@寄生虫:2001/01/01(月) 00:14
  ∧∧
 ¶( ゚Д゚) <あけましておめでとうなんだな。今年もよろしくなんだな
 ゝ|U |┐
 (.|/  |┘
   U U
659デフォルトの名無しさん:2001/01/01(月) 01:51
ギコ猫も、このスレで終りだな。
660デフォルトの名無しさん:2001/01/02(火) 20:49
開けましておめでとう御座います。
さっそくですが質問があります。
あるプログラム内で他のコマンド
(プログラム)を実行させその結果を始めのプログラム
内で使用したいのですが、どんな方法があるのでしょうか?

現在exec関数を調べていたのですが、どうも、exec関数では、
最初のプログラムに結果を戻すことができなさそうなのですが・・・・
どうかお願いします。
661デフォルトの名無しさん:2001/01/02(火) 21:26
age
662660:2001/01/02(火) 21:42
教えて欲しいあげ
663デフォルトの名無しさん:2001/01/02(火) 22:11
>>660
popen
664名無しさん@お腹いっぱい。:2001/01/02(火) 22:18
>>660 popen()
665664: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の対象はいじれないのか?
標準出力拾いたいだけなのか?

668660: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変換ツール
があったら教えてください。
672デフォルトの名無しさん:2001/01/04(木) 18:45
mid2mds>671
673660: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'
というエラーがでます。どういうことなのでしょうか?
行き詰まってます。
674660:2001/01/04(木) 21:14
上のページでは、
sigignore( SIGCLD );
/*子プロセスは勝手に死亡するようにする
(forkを使うときのおまじない。そのうち解説します)*/
と書いてあるのですが、これはこのまま使えるのですか?
675デフォルトの名無しさん:2001/01/04(木) 22:11
age
676660: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
そこまでしなくてもできたような気がする。
ただ、詳しいやり方は知らん。
682デフォルトの名無しさん:2001/01/05(金) 16:50
>>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コードにハイビットが立っただけだったと
記憶してるが、違ったかな?
684D使いβ:2001/01/05(金) 17:48
>>680
LCMapString
685D使いβ:2001/01/05(金) 17:51
違った。スマソ。
MultiByteToWideCharとWideCharToMultiByte
686D使いβ:2001/01/05(金) 17:55
あれ、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
ちと思ったんだけど「継承」って「詳細定義」って
呼んだ方が内容を良く表してる様な気がするんだけど
皆さんどう思います?
702奥さん、名無しです:2001/01/07(日) 00:38
>>701
インターフェイスの実装のときはそうだね。
703デフォルトの名無しさん:2001/01/07(日) 01:24
PASCALやBASICの文字列にはそういう時代があった>694
そもそもCには文字列という型は(でふぉるとでは)ないと思うぞ。
704デフォルトの名無しさん:2001/01/07(日) 01:42
>>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 の使い方として違うよ
うな気がするのだが…。違うかな?
707705: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
>707
どうして一つのクラスにこだわるの?メンバ関数の面子が違うんな
ら別のクラスにした方がいいと思うんだけど。

>708
Emacs の navi2ch は,Range を使って取ってきてるよ(実際今使っ
てる)。UNIX 板の

Navigator for 2ch
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=976032951

っちゅうスレで,そこら辺話してるよ(Range がうまく働かないっ
て話も出てる)。そのまま参考になるかはわからないけど。
710705: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にはコピーが入るって考えていいのでしょうか?
713712:2001/01/08(月) 01:34
あ、もしかして話の腰を折ったかしら
すんません。
714デフォルトの名無しさん:2001/01/08(月) 02:20
>>712

まあそーいうことですな。

より詳しくは,class a で

public:
a() {}
private:
a(const a&);

としてコンパイルして,エラーの出た個所を読んでみるとかすれば
いいかも。
715712:2001/01/08(月) 04:27
ありがとうございます。
716710:2001/01/08(月) 05:33
711 さん どうもありがとうございます。
なるほど、特定の型を引数にとる形で特定するんですね。
同じような形で書いてみて、コンパイルできました。^^

でも、friend 構造がよくわかりませんでした。
関数テンプレートを使った
template<class T> MathVector<T,3> outer_product(MathVector<T,3> a, MathVector<T,3> b);
とは違うのでしょうか?
マニュアル、もうすこし詳しく調べてみます。(^^;
717708:2001/01/08(月) 15:30
>>709
教えていただいたスレを見て、RangeしたらOKでした。
Rangeの方法を間違っていたようです。
どうもありがとうです。
718706=711:2001/01/08(月) 21:22
この outer_product() の実装は,private メンバにアクセスして
いるから friend にしているわけ。

MathVector に

public:
T& operator[](int i) {return element[i];}

みたいな public メンバ関数を作れば,private にアクセスする必
要は無くなるから,friend にしなくてもよくなる。普通の
template 関数でいいわけだ。

ただ,一般にメンバ関数の代わりとして使う場合には,private メ
ンバにアクセス出来ないと困るだろうから,今回のような実装を例
として出したというわけ。
719710:2001/01/09(火) 06:20
718=711=706さま
なるほど理解できました〜
あと friend は宣言と定義も一緒にできる・・と
知らない厨房でした、ごめんなさい(^^;

御蔭で問題をうまく解決できそうです
わかり易く教えていただいて、ありがとうございます(^^)
720名無しさん@お腹いっぱい。:2001/01/09(火) 14:20
logファイルの出力を最新の分何バイト以下とかに抑えたいのですが、
どういうロジックを組めば良いでしょうか?
なお、ファイル名は固定としたいと思います。
721デフォルトの名無しさん:2001/01/09(火) 14:39
1. 現在のファイルサイズを取得
2. 書き込むサイズを取得
3. 現在のファイルサイズ + 書き込むサイズ <= 最大バイト
  の場合、書き込む

で、3.以外の条件の場合どうするの?
722720:2001/01/09(火) 15:16
>>721
最新の分だけでいいのです。古いやつはどっかに消しちゃう。
tempファイルに書いておいて、それをコピーという形になっちゃうんですかね。
ちなみに、ファイルのサイズを取得ってどうやるんでしょう?
環境はVC++&MFCです。
あと、書き込むサイズの取得はCString::GetLength()でいいんですよね。
723デフォルトの名無しさん:2001/01/09(火) 18:01
こんにちは。
プログラムをコンパイルして実行すると
ある程度時間がたってから、Illegal instruction(core dumped)
というメッセージがでてプログラムが強制終了します。
しゅうりょうする場所をしらべてみると、
ある関数を呼び出した、途端に、終了しているようなのですが
どういう原因が考えられるのでしょうか?
もう3日くらい行き詰まっています。助けてください!
724721:2001/01/09(火) 18:15
>>722
スマヌ、C++は良く分からないのだ
Cならファイルのサイズはstatでとってこれる

725ボログラマー:2001/01/09(火) 18:17
>>723
言語何使ってるかくらい書いてもヨサゲ。
どっかでメモリはみ出してんじゃないすか?
printf()デバッグで追うべし。
726721:2001/01/09(火) 18:21
>>724
> Cならファイルのサイズはstatでとってこれる
間違いです。 statは処理系依存です。

Cならfseek()を呼んでファイルの最後まで進んで、
ftell()を使うのが最も移植性の高い方法でしょう。
727ボログラマー:2001/01/09(火) 19:02
>>726
fopen()するときにバイナリで開いてネ。>言うまでもネーか。
728723: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 ・・?ということは互換性のない命令が
書かれているかもしれないので 関数のソースを読んで
特定のプロセッサ向け命令が書かれているか調べてみる。
ってのはいかがでしょうか。
731730とは別人だが:2001/01/10(水) 01:00
他に、
スタック内容つぶしてしまってて、戻った途端に…
てのも有り得る。

まあ、
>ある関数を呼び出した、途端に、終了しているようなのですが
てのが本当に確かなら、これは外れかな。
732723:2001/01/10(水) 01:42
ありがとうございます。
まだよく分かりませんが参考にさせていただきます。

後、デバッグしていたらある関数に入るや、その関数内で宣言されている
配列がとんでもない数字になっていました。そしてバッドアドレスなどと
いわれたのですが、こういう現象は何が原因なのでしょうか?
プログラム自体にエラーはないように思うのですが。
733723:2001/01/10(水) 01:53
やっぱり、配列において
672375230, 672620932, 2, 2, 672549346, -1079267796, 134607838, 2, 672548994,
672620932, -1079268024, 3, 672375230, 672620932, 135020544, 135002948,
672344847, 1346927
という意味不明なものがいっぱいはいっているのが原因かなとおもいあたりました。
どうしたらいいのでしょうか?
かなりまいってます。
734730:2001/01/10(水) 01:58
>>731
sprintf とかミスるとやばいコードになりますねー
スタックのバグはすぐに現れてこないし
コンパイラによってスタックの管理は杜撰だったりしますし・・
735デフォルトの名無しさん:2001/01/10(水) 02:03
単なる初期化忘れ。
736730:2001/01/10(水) 02:05
>>732
関数内で宣言されている配列が動的確保(mallocやnew)でないなら
たぶん、スタック領域に入っているでしょう。(ふつうは)
んでもって、その配列の内容が意図したものとあきらかにおかしいなら
スタック領域を何かがつぶしてます。
sprintf とか、確保した領域を越えて内容を書きこんだりする
ものもありますし、もしスタックに入っているリターンアドレス
(戻り先)がつぶされれば、とんでもないところにリターンして
意味不明な命令を読んで illegal instruction になることも
ありえるかも。
737723:2001/01/10(水) 02:26
初期化はしてると思うんですが。
なんかまちがえてるのかな?打つだし脳。
738デフォルトの名無しさん:2001/01/10(水) 04:07
ダイアログ上に置いたエディットボックスにドラッグ&ドロップで
ファイルを開けるようにするにはどうしたら良いですか?(メモ帳みたいにしたい)
ダイアログ上ならWM_DROPFILESが取得できるのですが
エディットボックス上のWM_DROPFILESの取得の仕方がわかりません
SPY++で見るとメッセージは発生してるようなのですが・・・

ギコ猫様ご教授願います

ちなみにMFCです
739723:2001/01/10(水) 11:21
配列の大きさがでかすぎるとエラーってでるのでしょうか。
c[300][100]とか指定してるのですが。
740デフォルトの名無しさん:2001/01/10(水) 11:27
>>739
cの型は?
doubleとか、でかい構造体などのサイズの大きい型で、かつ
しょぼいコンパイラだとエラーが出るかもしれない
741723: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よ、とりあえず問題のソースぐらいは提示しようぜ。
744名無しさんi586:2001/01/10(水) 17:07
まろーくでまた〜り。
スタックつみすぎでぐた〜り
745デフォルトの名無しさん:2001/01/10(水) 18:43
>>739
静的確保と動的確保の違いは?
メモリー確保時のエラーは基本的に
取る領域が物理的に確保できない時に起こる
でも、300×200位では問題ない気がするので
740が正解かもしれない・・・
746723:2001/01/10(水) 19:50
今日配列の大きさをかなり小さくしてみたら、
なんとかillegal instructionはまぬがれました。
デバッグしながら、みてみたら、たまにあやしげな動き
をするのですが・・・今のところバグはないように思われます。

そのあやしげな動きといのは、デバッグで、最初に問題の関数に
入ったときに変数を一つづつ、displayしてみると
733の例のような配列になっているものと、そうでないもの(初期化されて
0)に分かれ、コードをいじったら、今度は問題の変数は直ったが
さっき初期化されていた変数が733のようになっていたりといった具合です。

747723:2001/01/10(水) 19:53
しかし、配列の大きさをでかくしないとかなり物足りないので
困るのですが・・・・
後ソースは入り組んでいてややこしい(あるプログラムを
改造したので、ものすごくややこしい)のと長いのとで
アップは見合わせています。

ありがとうございました。メモリー確保についてもっと調べて
出なおしてきます。
748追加:2001/01/10(水) 19:59
後、問題のある変数も値を代入すると、
ちゃんと値が入るようになりました。

メモリ確保というのは、関数に入ったときに宣言されている変数
に対しておこなわれるのですね?
確保したときにメモリに入れられる値は、たとえその時点で
まだその関数内でその変数に値を入れる式が現れていなくても
(つまりデバッガで関数に入った直後でも)
最初に変数に値を入れるときの式からとってくるのですよね?
749デフォルトの名無しさん:2001/01/10(水) 20:00
わかりにくい表現ですいません。
750デフォルトの名無しさん:2001/01/10(水) 20:59
>>746
関数内で(staticキーワードなしに)普通に宣言した変数は
初期値は <強調> 不定 </強調> だ。

Cはその設計思想で安全性より効率をえらんだ。
よって確保されたメモリ(auto変数)をわざわざ0で初期化なんかしない。
だからソレよりまえに実行したときのゴミの値が残っている。
751738:2001/01/10(水) 23:30
誰か教えてくださいー
752>738:2001/01/10(水) 23:57
まず、エディットのプロパチーで、ドラッグドロップを許可にする。
CEdit派生のクラスを作り、それをエディトコントロールに割り当てる。
CEdit派生クラスにWM_DROPFILESのメッセージハンドルを追加する。
753738:2001/01/11(木) 00:01
ありがとうございます
さっそく試してみます
754さとこ:2001/01/11(木) 00:07
ウインドウズのダイアログリソースの書き方を教えてください。
ダイアログに貼り付けたスタティックコントロールを親にして
ボタンなどのコントロールを貼り付けるには、どうすればいいの?
誰かおしえてください。
755738:2001/01/11(木) 00:08
おお!!できました
752さんありがとうございました!!!!
756名無しさん@お腹いっぱい:2001/01/11(木) 15:23
スレッドってのがいまいち理解できません。
どこか、説明してあるHP知りたいです。
757デフォルトの名無しさん:2001/01/11(木) 15:52
>>756
1っこのプログラムコードを複数のCPUが寄ってたかって
動かしてるイメージ(実際マルチCPUだとそうなる)
変数とかも共有なのでうまく排他とかしないと
どっかの掲示板みたくすぐデータぐちゃぐちゃになる。
758756: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
どうして引数というのですか?
762デフォルトの名無しさん:2001/01/12(金) 00:50
関数から答を引っ張ってくる数だから。
763新米ギコ@国内某所:2001/01/12(金) 01:24
  ∧∧
 ¶( ゚Д゚) < 同じ時間に別々のことを実行すること >スレッド
 ゝ|U |┐プロセスと違うのはメモリ共有しているとか
 (.|/  |┘同じ時間っつっても見掛け上だけどな
   U U
  ∧∧
 ¶( ゚Д゚) < >>761 argument(議論、主張)すると日本人は大抵引くからな
 ゝ|U |┐
 (.|/  |┘
   U U
764名無しさんi586:2001/01/12(金) 12:58
そういえば引数を「いんすう」と読んでた白痴がいたなぁ。。(遠い目
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に書きこんでしまいました(馬鹿
767デフォルトの名無しさん:2001/01/12(金) 16:15
>>764
俺も昔そう読んでたぞ。鬱だ死のう。
っていうか、「ひきすう」って湯桶読みだし。
768けろ:2001/01/12(金) 16:38
>>765
http://msdn.microsoft.com/library/periodic/period97/samples/MFCPart2.exe

これでも参考にすればいい。というか、CDibクラスをそのまま使えばいい。
769デフォルトの名無しさん:2001/01/12(金) 16:53
名前付きパイプの使用時にConnectNamedPipe()を呼びますが、
接続がされるまでこの関数から制御が帰ってこないですよね。
そのときにアプリケーションを正常終了させるいい方法はないで
しょうか?
スレッドを作ってそこでConnectNamedPipe()をすればいいのかな
とも思いますが、そのスレッドも強制終了させるようになって
しまいその後のOSの動作に支障をきたすのではないかと心配です。
770756: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が悪いのかなあ。
そんなわけないよなあ。どうしたらいいの?
777新米ギコ@国内某所:2001/01/13(土) 00:35
  ∧∧  *
 ¶( ゚Д゚) / < >>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型に格納する方法を教えてください。
784名無しさん23:2001/01/13(土) 12:11
>>783
char s[10]; int i; で、
sprintf(s, "%s", i);
785デフォルトの名無しさん:2001/01/13(土) 12:24
>>784
有難う御座いました。
786デフォルトの名無しさん:2001/01/13(土) 14:31
>784
間違ってないか。
2行目は、
sprintf(s, "%d", i);
sprintf(s, "%x", i);
じゃねーの。
787デフォルトの名無しさん:2001/01/13(土) 15:06
>>786
結局どっちなのでしょうか?
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"でよい。
790デフォルトの名無しさん:2001/01/13(土) 23:46
あれー?そのものずばり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出さなかったか?
792新米ギコ@風呂上がり:2001/01/13(土) 23:54
  ∧∧
 ¶( ゚Д゚) < >>790 その通り! itoaを使えば3進数とかも逝ける
 ゝ|し |┐     ただ、789が書いているが書式指定した10進数とかの
 (_|./ |┘     文字列を作る場合はsprintfの方が楽だったりする
   U U
793デフォルトの名無しさん:2001/01/14(日) 00:56
テキストデータを効率よく圧縮できるアルゴリズムは、
どういうものが、ありますか?

または、紹介されてるサイトでもいいんで教えてください。
794デフォルトの名無しさん:2001/01/14(日) 00:59
テキストデータを効率よく圧縮できるアルゴリズムは、
どういうものがありますか?

または、紹介されてるサイトでもいいんで教えてください。
795デフォルトの名無しさん:2001/01/14(日) 01:17
>794
辞書圧縮
その後エントロピー圧縮
おしまい
796デフォルトの名無しさん:2001/01/14(日) 01:23
797795:2001/01/14(日) 01:26
この手のプログラムはどうやって特許のアルゴリズムを避けるかが鍵だな。
798794:2001/01/14(日) 01:37
>796
紹介してもらったサイトにいってみます。
>797
じっくり考えてみます。
799782:2001/01/14(日) 10:47
>>791
これって初期化してるつもりなんですが、初期化は
必要ないのですか?

配列とかでも初期化でいつも全部に0入れたりしてるんですけど。
(おそらく勘違いだったのかな、自分の)
800デフォルトの名無しさん:2001/01/14(日) 11:33
>>799

変数が使われる前に何らかの値を代入することが保証されているなら
必ずしも初期化をする必要はない。
801名無しさんおっぱい。:2001/01/14(日) 13:37
ギコハハハハハハ
802774です、:2001/01/15(月) 00:42
>>774

  について誰か教えてくださいな、
  お願いします。
803デフォルトの名無しさん:2001/01/15(月) 00:46
>>802
MSDN読め
804746:2001/01/15(月) 13:36
>>746
ですが、やっぱりだめです。
配列を大きくすると問題が起きてしまいます。
こういうのは何でなのでしょうか?鬱です。
805masaka sage:2001/01/16(火) 22:26
>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
>>807
正解!
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デプロイで、
「そんなクラス知らんぜ」と言われてしまう。

そこらへんのノウハウ持った人いません?
813foo:2001/01/19(金) 01:07
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);
}
817>813:2001/01/19(金) 06:47
当然hogeに決まっておる。
http://www.selab.tutkie.tut.ac.jp/~yoshida/hoge.html
818デフォルトの名無しさん:2001/01/19(金) 17:38
http://www.wotsit.org/ 落ちてない?
819デフォルトの名無しさん:2001/01/20(土) 06:22
タスク、スレッド、同期について勉強したいのですが
どこから手をつけていいのかわからなくて困っています。
おすすめの本やURLがありましたら、どうか教えて下さい。
820デフォルトの名無しさん:2001/01/20(土) 19:11
>>819
Windowsなら
「Win32マルチスレッドプログラミング」
ISBN4-7561-1404-0
5100円
っていう本が一番判りやすい。
(ちょっと情報が古い様だけど。)
いままで見てきたその他の本はここまで詳細に載っていなかった。
他にもお勧めが在ったら教えてくれ。
821819: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の実行を許してしまう」という記事があった
のですが、何が悪いのか理解できません。わかるかた教えてください。
824デフォルトの名無しさん:2001/01/22(月) 02:02
ブラクラー(゚Д゚)ブラクラー
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に保存しました。
827826:2001/01/22(月) 15:52
すいません。正確によめてるのか。でした。
828デフォルトの名無しさん:2001/01/22(月) 17:20
>>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は効率良く使われている。」とかいうツッコミはいりませ〜ん。
832新米ギコ@国内某所:2001/01/23(火) 00:47
  ∧∧ プハー
 ¶( ゚Д゚) =3  OS側でやってくれてるんだな、BeOSは。
 ゝ| つ日~~  スレッドを最大限逝かしてるかは、、、
 (,|/  )
  U U
833デフォルトの名無しさん:2001/01/23(火) 01:42
>>831
ネットワーク対応の一種の画像ローダみたいなやつ
ブラウザみたくロード中のやつからリアルタイムで見えてくる
同時に何個ロードできるか設定可

つかこのばあいCPUを有効活用ってより
回線の有効活用だな、、、Regetとか、、、
834826: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(+コンパイラ?)が面倒見てくれるわけ?
838デフォルトの名無しさん:2001/01/23(火) 14:06
>>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で作りました。
どのように変更すればよいのでしょう?
844デフォルトの名無しさん:2001/01/25(木) 15:18
>>843
エラーメッセージも書いてくれ
845デフォルトの名無しさん:2001/01/25(木) 15:22
void main() なのは嫌がらせでしょうか?
846デフォルトの名無しさん:2001/01/25(木) 15:32
>>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
初心者なのでよくわかりませぬ
847デフォルトの名無しさん:2001/01/25(木) 16:00
>>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"を追加
しといたほうがいい。
848843:2001/01/25(木) 16:19
直りました。ありがとうございます。

混在させる時は明確に宣言する必要があるんですね

849新米ギコ@開店休業:2001/01/27(土) 00:08
  ∧∧
 ¶( ゚Д゚) <新スレ移行!
 ゝ|し |┐http://piza.2ch.net/test/read.cgi?bbs=tech&key=980521175
 (_|./ |┘
   U U
850デフォルトの名無しさん:2001/03/28(水) 22:03
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |


851デフォルトの名無しさん:2001/05/03(木) 14:47
>>1
くだらない スレ いくつも立てて喜んでるんじゃねえよ アホが
削除依頼
852デフォルトの名無しさん:2001/05/03(木) 14:49
あげるな、ぼけ
さっさと死ね
853デフォルトの名無しさん:2001/05/03(木) 14:53
854デフォルトの名無しさん:2001/05/03(木) 14:59
ヽ(`Д´)ノ ゴルァ!
855"削除"人:2001/05/03(木) 15:07
>>851
了解しました
重複スレに該当します
よってどちらかを削除します
856デフォルトの名無しさん:2001/05/03(木) 15:10
はいはい、ボクちゃん、君はえらいね〜。
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
一応プログラミングを勉強しているんですけど、
プログラムを作るプログラムはいつできるんですか。
ちょい先にできるようなら、早めに見切りつけたいんで。
863>862:2001/05/04(金) 02:19
んなもん沢山あるzoo
864デフォルトの名無しさん:2001/05/04(金) 02:34
>>863
もうプログラマは必要ないですか?
違う道も真剣に考えてみます。
865デフォルトの名無しさん:2001/05/04(金) 02:36
少なくともきみは必要ない。>864
他の道考えてね。
866デフォルトの名無しさん
>>860
( ゚Д゚)   (゚Д゚ )
( ゚Д゚)  (゚Д゚ )
( ゚Д゚) (゚Д゚ )
( ゚Д゚)(゚Д゚ )
(゚Д゚)(゚Д゚)
(゚Д゚|゚Д゚)
(゚Д゚Д゚)
(゚||゚)
(゚Д゚)
(゚Д゚)ゴルァ
(・∀・)ナンテネ