1 :
デフォルトの名無しさん :
2001/01/14(日) 00:27 ウルトラ初心者はこちらへ ギコの所とうまく住み分けよーぜ…。
やばっ、もうできてるじゃん…って事でSage
自分で削除依頼だしてこい。>1
どっちも失敗ぎみだな どっちも削除!
どっちも削除か(藁
いや、やっぱ向こうの1よりおいらの方がかいてる事ましだから こっち残す事に決めた(藁。 ってー事で向こう削除以来出してもらってね♪(はぁと
7 :
>1 :2001/01/14(日) 05:07
Ver2.0ってなんだお?
9 :
デフォルトの名無しさん :2001/01/14(日) 05:15
10 :
案内役 :2001/01/14(日) 05:27
もう一つのスレッドに、誘導メッセージを書き込んできました。 削除依頼も出してきました。
11 :
案内役 :2001/01/14(日) 05:28
Perl超初心者なんだけど、もしかしてPerlって範囲コメント出来ないの? 行末の方は調べたらすぐ分かったんだけど。
14 :
名無しさん@お腹いっぱい。 :2001/01/14(日) 07:55
むかしどっかにさ 2chに書き込めるぐらいの ちいさなゲームのプログラムを発表する スレがあったと思うんだけど どこいったっすか? しらないですか?
ごめん、わかりました。
16 :
15 :2001/01/14(日) 08:05
15は13の自己レス。失礼。
17 :
デフォルトの名無しさん :2001/01/14(日) 09:33
return分の戻り値はスタックに積まれるんですか?
18 :
デフォルトの名無しさん :2001/01/14(日) 11:41
すべてのデータは0と1なんですか?
20 :
デフォルトの名無しさん :2001/01/14(日) 12:44
uchar型で宣言されている変数をfwriteで保存し その後、別のプログラムで、uchar型で宣言しといて freadで取り込もうとしたら、 test.c:17: syntax error before `変数' という風なエラーがでました。 ucharのuに対してエラーが起きてると思い、 仕方なく、char型で宣言しなおしたら、エラーなく 取り込めたのですがどうしてこういうことが起こるのですか? 困るのですが。
21 :
デフォルトの名無しさん :2001/01/14(日) 12:56
>>20 uchar って型が C の仕様にあるの? あるいは
どこかで typedef されてるの?
22 :
pikio :2001/01/14(日) 13:00
VC買いました。よろしくお願いします。
23 :
名無しさんおっぱい。 :2001/01/14(日) 13:35
>22 いくらするの?
24 :
pikio>23 :2001/01/14(日) 13:42
アカデミック版だから税抜き13500円・・・
フラグ用の定義名ってどんな名前がいいのかな? どんな風にしたらいいですか? と思ったけど、MFCにもいくらでもサンプルありますね 打つ山車脳・・・・・
26 :
デフォルトの名無しさん :2001/01/14(日) 15:55
数万から数十万行からなるファイルを重複行をカウントして その大きさ順に並び変えたいのですが、 最も高速に処理するアルゴリズムを教えていただけないでしょうか
27 :
デフォルトの名無しさん :2001/01/14(日) 16:00
昔から疑問に思ってたことなんだけど.... 例えば C++ でWindowsアプリを作るときは、Windows上で走る開発ツール使うよね。 (C++ Builder 等) では、Windows そのものを作る時は、開発環境ってどうなってるのかな???
28 :
デフォルトの名無しさん :2001/01/14(日) 16:07
1つ古いバージョンのWindows
31 :
20 :2001/01/14(日) 21:33
>>21 ucharっていうのはunsigned charっていうので、、
c言語にある型ではないのですか?
ないとしたら凄い勘違いをしていました。
>31 typedef unsigned char uchar;
33 :
SAGE :2001/01/14(日) 23:08
>>31 unsigned char はC言語の基本型としてほぼ必ずあるが、
uchar はそうではない、というかむしろデフォでtypedefされてる方が特殊なような。
34 :
デフォルトの名無しさん :2001/01/14(日) 23:10
C++には <static cast>とか<reinterpret cast>とか があるみたいなんですが、これらは普通のキャストと 何が違うのでしょうか?
35 :
デフォルトの名無しさん :2001/01/15(月) 00:38
>>34 C++ではconst_cast,static_cast,reinterpret_cast,dynamic_castが
普通のキャストです。詳細は本や、MSDNを調べるのをお勧めします
37 :
名無しさん@お腹いっぱい。 :2001/01/15(月) 03:07
>>35 ウルトラ初心者の質問なんだからさ、そういうレスはなしにしようよ。
static_castはint→doubleとかの比較的安全なキャスト
reinterpret_castは、メモリマップが同じ構造体同士のキャストなどの
などの比較的危険なキャスト。
これはどんな変換でもコンパイラが文句を言わない。
Cのキャストに一番近いのはこれかも。
プログラムをしていく上でC++のキャストを使わないといけないということはないが
間違ったキャストを使った時にコンパイラでエラー検出できる可能性が増えるので
出来れば使ったほうが望ましいくらいのものですか。
39 :
デフォルトの名無しさん :2001/01/15(月) 17:11
delphi5を買った、プログラミング未経験のsuper biginerです。 目的は、「縦書きのアウトライン・プロセッサーを作ること」 だけなのです。というのも探してもそういうソフトがなかった からですが、買ってから気が付いたのは、もしかしたら縦にする のはものすごい大変な事でしょうか。だからないということなの でしょうか。どうか教えて下さい。
40 :
デフォルトの名無しさん :2001/01/15(月) 17:57
>>39 そういうじっくりとした質問は、2chでないところで聞いたほうがいいと思われ
アウトラインプロセッサは実物を見たことがないのでよー分からんのですが、
縦書きのエディタなら、
uses
SysUtils,...;
と並んでるところにRichEditと付け加え、フォームをダブルクリックして出てくるprocedureに、
RichEdit1.Perform(EM_SETOPTIONS, ECOOP_OR, ECO_VERTICAL);
と書けばできる。
後は知らん。
41 :
40 :2001/01/15(月) 18:04
あ、もちろんまずフォームにWin32のTRichEditを貼り付けて、ね。
42 :
pikio :2001/01/15(月) 19:26
WinampのSkinなんかはひとつの画像にいくつものパーツの絵が書いてありますけれど あれって、何ピクセル目から何ピクセル目を表示する、などと指定できるのでしょうか? そうでしたらどうやるのでしょう? 違うのならどうやってるのでしょうか?
43 :
名無しさん@お腹いっぱい。 :2001/01/15(月) 21:34
14です どーもね>19
>36,37さん ありがとうございました。
45 :
デフォルトの名無しさん :2001/01/16(火) 02:45
最近、プログラミングに興味を持って C の入門書を一生懸命読んでいる中年男です。 いま、ポインタのところを読んでいるのですが、 *ptr = "ABC"; とかやると、 文字列 "ABC" の先頭アドレスを指すポインタ ptr が 作られるのですね?(ああ、不安だ) じゃ、その "ABC" というのは、いつの間に作られたんでしょう?
46 :
デフォルトの芝村さん :2001/01/16(火) 03:13
>>45 その記述では、まともなOSならばメモリ保護違反でエラーになろう。
char *ptr;
ptr = "ABC";
が意図すべき記述ではあるまいか?
その前提で言うなれば、"ABC"などはコンパイルの時点で
実行ファイルの内部に格納されてる(場合が多い)。
これが実行開始時にスタートアップコードにより
メモリ空間に展開(配置)される故、何時の間にと聞くならば、
「最初から在る」という答えになろう。
47 :
45 :2001/01/16(火) 03:17
>>46 レス、どうもです。
char *ptr = "ABC";
です(型を書くのを忘れてました……汗)
「最初から在る」ですか……。
うーん、イメージしにくいですが、慣れるようにします。
48 :
初心者教育係 :2001/01/16(火) 03:23
コンパイル、リンクするときに割り当てられます。 →静的記憶領域 static storage duration area 正しくは char * ptr; ptr = "ABC"; です。 ポインタ ptr を宣言して それに "ABC" (文字列リテラルという)を指すアドレスを入れます。 *ptr はポインタの指す先の対象のことなので間違えないでください。 ちなみに ANSI では *ptr = 'a'; などして上書きすることは未定義っぽいです。
あ、おもいっきりかぶった スマ
50 :
ダン :2001/01/16(火) 03:26
すっごい簡単なテニスゲーム(棒と球だけの) を通信対戦可能にするにはどうすれば?
51 :
デフォルトの名無しさん :2001/01/16(火) 03:38
DirectPlay つかってください。>50
52 :
デフォルトの芝村さん :2001/01/16(火) 04:50
通信以前に、壁がないとテニスゲームにならぬであろう。 というのはさておき、 まずは通信しない対戦を可能にするのが近道であろうな。 対戦の仕組み(プレイヤー間の情報交換)さえ構築できれば、 マシン内の情報交換もマシン間の情報交換も、 (遅延を考えねば)さほど変わらぬ。 実際の通信手段を考えるのは、その後でも遅くはあるまい。 その時は、DirectPlayなりBSD socketなり、好きに選ぶがよかろう。
53 :
デフォルトの名無しさん :2001/01/16(火) 05:03
54 :
39 :2001/01/16(火) 14:12
40さん、ありがとうございました。遅くなりました。 パソコンがぶち壊れたので、マンガ喫茶にきています。 ほかのところでも聞いてみます。あと今日初心者用の 参考書を買います。
55 :
奥さん、名無しです :2001/01/18(木) 00:47
MS Visual Stadioってどういった人がつかうんですか? 社会人になってからVC++やVBを買うよりも(必要になったときに) 学割効くうちに三万ちょいで買っておいた方が後々得かな? 等と阿呆な事をかんがえているんですが・・
56 :
デフォルトの名無しさん :2001/01/18(木) 01:06
>55 今すぐ使わないなら買わない方が良い。 そのうちバージョンがあがる。 それに社会人になってから必要になれば会社が買ってくれる。(多分)
57 :
デフォルトの名無しさん :2001/01/18(木) 01:47
>55 今買うべしなのです! バージョンがあがったらまた買えなのです!!
58 :
名無しさん@お腹いっぱい。 :2001/01/18(木) 01:54
>55 今のうちに後輩をてなづけておいて、必要になったら買わせる。
59 :
デフォルトの名無しさん :2001/01/18(木) 01:56
VisualStadio.Netってオンラインで登録しなきゃいけないみたいじゃん。 気分悪いよなー。そういうことで、今買うべしなのです。 バージョンあがったのが必要になったとき、子供を使って買うといいです。
60 :
デフォルトの名無しさん :2001/01/18(木) 04:08
ネットワーク環境がないと使えないの?>VisualStudio.Net
61 :
デフォルトの名無しさん :2001/01/18(木) 14:21
めちゃくちゃ初心者です。 オブジェクト指向プログラムってなんなんですか? 属性?クラス?継承?メソッド?オブジェクト?ポリモーフィズム 本とかよんでも難しい事ばっかり書いてあって・・・・ 簡単に説明してください。お願いします。
本を読んでわからなかったのにここで説明しても 恐らくわからないだろう。
63 :
デフォルトの名無しさん :2001/01/18(木) 16:05
intel系のCPUで 例えば0x0123という値をshortの変数に格納したい場合、 short a a = (0x01 << 8) + (0x23); などとやりますよね? でも、上のやり方でリトルエンディアン(intel)だと格納値って0x2301 にはならんの?(ってゆうかちゃんと0x0123になるのが不思議)
>>61 本を読んでわからなかったということは、その本に書いてある
以上の事を説明しないとわからんちん。って事か?
その本、何ページありました?(笑)
>>63 いいやぁ
short a = 0x0123
としますが。
バイトオーダーの問題は、オーダーの違うマシンでバイナリ
を交換したときに発生しますね。
単一のコンパイラで収束している場合は、関係なし。
66 :
63 :2001/01/18(木) 16:26
char *p short a p = &a *p = 0x23 *(p+1) = 0x01 ↑きっとこんな場合のときだけ意識するんでしょうかね? くだらないことでスミマセンでした。
67 :
デフォルトの名無しさん :2001/01/18(木) 17:36
>>63 つーか、そこ意識しなきゃいけないなら
何のための言語なのか?
全然ハードの差を吸収できてないじゃん
66の問題はOSによりそうだが?
いま、試験できる環境が無いから例を出せない
unionなら確実に差が出るだろう
68 :
SAGE :2001/01/18(木) 17:59
>>63 つーかそれじゃぁ、
short a;
a = 256 + 35;
ってやると 8961 にならないのが不思議って言ってるようなもんだぞ。
69 :
デフォルトの名無しさん :2001/01/18(木) 18:04
オブジェ苦吐思考・・プログラムを切り分けてまとめて 部品化して・・・。 その場限りでなく、管理、再利用しやすいわけだ。 その場限りのプログラムには、あまり必要ないかもめ・・。
70 :
名無しさん@お腹いっぱい。 :2001/01/18(木) 18:40
VC++5.0つかっているんですが、そのデバッガをつかって一つずつ実行しようとデバッグ→ステップインを選択しました。mainの先頭から実行されていきますが、しょっぱなかなら心当たりのないソースファイル(dgbheap.cやらのパスの指定を強制されます。ドライブのなか探してもないし・・・・これはいったいなんでしょうか?
71 :
デフォルトの名無しさん :2001/01/18(木) 18:53
>>70 ランタイムライブラリのソースです。ランタイムライブラリに対してステップインを実行するとでてきます。
デバッグの必要のない関数はステップオーバー(F10)でとばしましょう。
72 :
デフォルトの名無しさん :2001/01/18(木) 19:05
>>63 メモリーは意識できてるようだけどレジスタのことをど忘れしてるよ。ちみ
73 :
デフォルトの名無しさん :2001/01/19(金) 01:51
ウルトラ初心者でごめんなさい。 「『銀行口座』が持つべき情報(残高)及び 『銀行口座』に対する操作(作成、残高照会、入金、引出)の 内容を決め、『口座』のクラスを定義せよ」 と問われました。さっぱりわかりません。 お助け下さい。
74 :
デフォルトの名無しさん :2001/01/19(金) 01:53
↑ JAVAです。
75 :
デフォルトの名無しさん :2001/01/19(金) 02:02
class 銀行口座 { private int 残高; public 銀行口座(int 制作時の入金額) { 残高=制作時の入金額; } public int 残高照会() { return 残高; } public void 入金(int 入金額) { 残高+=入金額 } public int 引出(int 引出額) { if(残高<引出額) // 引き出せね~ぞ!ゴルァ!! { return 0; } 残高-=引出額; return 引出額; } }
76 :
デフォルトの名無しさん :2001/01/19(金) 02:43
都合によりVCのデバッガ使えないのでターボデバッガ使おうとしたらVCのように簡単ではないですね。VCのように変数と変数の中身を表示できるようにはできませんか?
77 :
73 :2001/01/19(金) 11:30
>75 感謝感激!! ありがとうございます!!
78 :
むぎ茶 :2001/01/19(金) 12:56
>>75 引き出せない時には 例外投げるほうがよいのでは?
79 :
通りすがり :2001/01/19(金) 13:00
なぜ、正常処理中に例外?
>>79 きっと口座からは無尽蔵に引き出せると勘違いしているのです(笑)
try { 自分の口座.引出(必要な金額); } catch( 金が足らない ) { 無人君.ご利用は計画的に(必要な金額); }
>>81 足りなかったら自動的に借りるのか?
迷惑だぞ(笑)
83 :
名無しさん@夢いっぱい :2001/01/19(金) 15:14
将来、コンピュータのインターフェイスは、キーボードやマウスから 音声や視覚へと変化していくと思うのですが、それに伴ってプログラミング はどう変化していくのでしょうか?
84 :
デフォルトの名無しさん :2001/01/19(金) 15:17
OOPを勉強したいんだけどC++とJavaのどっちがいいのでしょうか
>>84 それはもう Ruby と言いたいところですが、
C++ か Java ということなので Java です。
・SDK が無料で手にはいる
・ポインタがない
・friend 関数なんてものもない
・多重継承もない
と C++ に比べて OOP に専念できると思います。
Java World でも読むと OOP についての記事がちょくちょくありますよん。
86 :
デフォルトの名無しさん :2001/01/19(金) 18:28
>>85 どうもありがとうございます。ところでJavaのクラスライブラリと、
MFCやVCLのC++クラスライブラリとを比べてるとどちらが使い易いと
考えますか。
87 :
デフォルトの名無しさん :2001/01/19(金) 23:41
>>83 MSやIBMが入力インターフェイス用のAPI群を作り公開する。
他のプログラマはそれを使用するだけ。
基本的にはキーボードやマウスを制御してる現在のコーディングと変わらないと思うが・・・
>>85 C++だって優良なコンパイラがタダで(しかも沢山)手に入るよん。
>>84 JAVAは遅すぎるので却下。
最初はC++で泥沼にはまりましょう。
…と、言いたい所だけど、JAVAは標準ライブラリが充実してるので、プロトタイピングが早いのが良ければやっぱりJAVAかなあ。
C++ってなにもかも中途半端な気がするし。(STL気持ちわるい派です。)
89 :
名無しさん@お腹いっぱい。 :2001/01/20(土) 02:49
いまSDKでWindowsプログラミングを勉強しています。 最近メッセージクラッカを使い始めたのですが、windowsx.hの中に WM_NOTIFYに関するものがありません。 HANDLE_WM_COMMNOTIFYというものを見つけましたが、これは逆に WM_COMMNOTIFYというメッセージがなくて(?)よくわからなくなってきました・・ すなおにウィンドウプロシージャの中で case WM_NOTIFY: ~ と書くしかないのでしょうか。
90 :
デフォルトの名無しさん :2001/01/20(土) 04:40
C++のカオスティックなセカイが好きだ(藁) クラスに多重継承にテンプレートにgoto STLに果てはインラインアセンブラ, パーサにインタプリタスクリプト なんでもアリ 言語仕様は貧相だが
91 :
デフォルトの名無しさん :2001/01/20(土) 23:31
すいませんが、本当にウルトラ初心者な質問をさせてください。 「型」のある利点は何なのですか? メモリを効率よく使えるとか、そういう事なんでしょうか?
92 :
デフォルトの名無しさん :2001/01/20(土) 23:53
>>91 特になし。
あるのが普通。CPU(レジスタ)の構造上あって当然。
ないと無駄。
特に数値と文字列の区別がないってのは処理が遅くなる。
93 :
SAGE :2001/01/20(土) 23:55
>>91 型があった方がバグが少なくて済む。少なくとも俺の場合は。
94 :
デフォルトの名無しさん :2001/01/21(日) 00:24
オブジェクト指向を理解するのに何か適当な課題はないでしょーか。 本を何冊か読んだので後は体で覚えようと思うのですが。
95 :
91 :2001/01/21(日) 00:38
>>92 さん、
>>93 さん、ありがとうございます。
要は、ウルトラ初心者はそんなこと気にしないで
「そういうものだ」と覚えておけば十分という事ですね。
Perlから入って、Cを覚えようと本を読み出したのですが
型宣言が面倒に感じられたので。慣れの問題ですかね。
ありがとうございました。
Perlにも型あったでしょ?
>>91 コンパイル時にエラーを見つけることができるので型ありのほうが楽。
98 :
デフォルトの名無しさん :2001/01/21(日) 02:26
初歩的な質問で申し訳ありません 「インストール」 はどうして必要なのでしょうか? 私的に思うところでは実行ファイル(*.exe)とDLLを同一フォルダにおけば 困ることはないと思うのですが。
99 :
デフォルトの名無しさん :2001/01/21(日) 02:38
>98 インストーラ付いてないと「使い方が分かりません。」って言って来る奴がいるから(マジ)
100 :
デフォルトの名無しさん :2001/01/21(日) 04:23
Javaについて聞きたいのですが、Javaって聞くとアプレット記述言語で お手軽とゆう印象があるんですけど、今現在のJavaの状況ってどうなって いるんでしょうか?
101 :
デフォルトの名無しさん :2001/01/21(日) 04:43
>>100 GUIの互換性を保つのが難しいとみんな悟ったので
GUIのいらないサーバーサイドで最近は使われてます
つか新規案件はNTじゃなきゃほとんどJava
あと、UNIX,Win,Max対応ルータの設定ツールでJava使ってるのが
あったような、、
102 :
デフォルトの名無しさん :2001/01/21(日) 04:47
>>100 携帯もJavaだな。
Javaは便利だと思うよ。
.Net が唯一の不安要素。
多分負ける。
>>102 UNIXに.NET移植とか自分の首しめるだけだからゲイシはやんないでしょ
(少なくともWin版のほうにアドバンテージがあるようにはするはず)
だからサーバーマシンのNTシェアがUNIXを超えない限り。NETに負けることはないとオモウ。
Win :.NET
その他:Java
で安定すると思う
104 :
名無しさんだがね :2001/01/22(月) 02:41
>>98 >私的に思うところでは実行ファイル(*.exe)とDLLを同一フォルダにおけば
「ファイル」「フォルダ」「実行ファイル」「.exe」「DLL」と聞いただけで
固まっちゃう人もPCを使ったり、あなたの作ったプログラムを使ったり
するとは思わない?
マウスのダブルクリックだって大変な人もいるんだからね。
だから、プログラムの内容とか想定する利用者にも依るけど、
インストーラーが必要な場合だってあるわけ
105 :
160 :2001/01/22(月) 03:21
>98 exeは単独で使う物ですがDLLは複数のexeで共有する物なので別の場所になってしまうのです。
>98 レジストリとかいろいろ大変なの。 >私的に思うところでは実行ファイル(*.exe)とDLLを同一フォルダにおけば それは誤認だよ、動かないものもたくさんあるよ。
107 :
ウルトラ初心者 :2001/01/22(月) 11:18
変数のルートを計算するにはどうしたらいいのですか? √変数っていう関数はにのですか? cです。
>>107 >変数のルートを計算するにはどうしたらいいのですか?
sqrt
>√変数っていう関数はにのですか?
ワケワカラン
109 :
デフォルトの名無しさん :2001/01/22(月) 11:48
あまたある数(配列が1000な変数)の中から 一発で最大値を求める関数はないですか?
110 :
デフォルトの名無しさん :2001/01/22(月) 11:48
↑ cです。
>>109 Cにはそんな関数無いです。
自分で作りましょう。
113 :
デフォルトの名無しさん :2001/01/22(月) 12:30
>>98 昔は*.ini
で、設定保存してたからその方法でOKだったけど
今は、レジストリ書かなきゃいけない場合が多いのでインストール作業が必要になる
*.keyをダブルクリックさせればレジストリ書けるけど
それって、インストールとかわらないっしょ?
114 :
突然失礼します :2001/01/22(月) 17:36
Win2000でデバッグできないのですが、どうすれば良いでしょう?
115 :
デフォルトの名無しさん :2001/01/22(月) 18:04
客観的な視点が無いのか?おまえは・・・ どう答えれば良いか言ってみ?
116 :
デフォルトの名無しさん :2001/01/22(月) 18:06
>>107 整数なら奇数を何回加算してその数になるかという方法が
遅いが簡単な方法として知られています
117 :
デフォルトの名無しさん :2001/01/22(月) 18:10
ブレークポイントを設定しても止まらないんです。 「カーソルの位置まで実行」も効きません。 F5押してもWinMainからスタートしません。 VC++4.0です。よろしくお願いします。
>116 私は107ではありませんが、その方法は知りませんでした。 興味があるのでもう少し詳しく教えていただけませんか?
1^2 = 1 2^2 = 1+3 3^2 = 1+3+5 4^2 = 1+3+5+7
120 :
114 :2001/01/22(月) 18:33
Win95,98では問題なかったです。 Microsoftのホームページ探してもそういう情報は無かったです。 同じような状態になっている人いませんか?
>>119 の補足
(n+1)^2
=n^2+2n+1
というやつですね
>>120 つーかWin2000でVC++4.0なんてサポートされてないっしょ。
ちなみにWin2000で公式にサポートされてるのはVC++6.0のSP4から。
124 :
デフォルトの名無しさん :2001/01/23(火) 01:11
>>123 SP4ってバージョンみたいなものですか?
同じ6.0ならバージョンアップみたいのは出来るのでしょうか?
ま、無理なんでしょうねぇ・・・
>>124 サービスパックの略。
リリース版 > SP1 > SP2 > ...
と続く、MS方式のバージョンっちゃバージョン。
雑誌とかに付いてたり、MSのサイトから無料でDL出来る。
ただし100Mとかあるので注意。
「明快なのがプロフェッショナル。そうでないのが素人」 というのをどこかで聞きました。私もそう思います。 では、なぜ素人は明快なコードを書けないのでしょう?
127 :
デフォルトの名無しさん :2001/01/23(火) 02:15
複数の関数があって、その中から一つを選択したら以降ずっとその関数を使いつづけるようにしたいのですけど、そうするにはどうすればよいでしょうか? switch文は最初決定するときのみという条件でお願いします。
>>126 経験不足、知識不足、時間に追われる開発でできるかぎり開発効率を
重視したコードを書いたことが少ないから
>>127 static 変数を使って判断する、呼び出される関数が同じ形式なら関数
ポインタを使うとか
129 :
デフォルトの名無しさん :2001/01/23(火) 10:16
VC++でやってたのですが、相手の必要があって、 VBでプログラム組むことになったのですが、 VB6のIDEでif~then~else~endifのネストのタブ位置を 自動的にやってくれないのでかったるくて仕方ありません。 IDEのオプションで設定できませんか?
130 :
デフォルトの名無しさん :2001/01/23(火) 10:25
131 :
ミトコンドリ子 :2001/01/23(火) 12:14
>>127 身近なオブジェクト思考言語(C++,JAVA,etc.)の資料で
「ポリモルフィズム」「動的束縛(dynamic binding)」について
調べてごらんなさい。
皆様ありがとうございます。あとは自分でがんばってみます。
133 :
デフォルトの名無しさん :2001/01/23(火) 14:46
ある2種類の数字が1000個ほどあるのですが、 それを種類頃に分類したいです。 そこで、qsortを用いて、分類したのですが、 最初の数字と最後の数字だけ、入れ替わってしまいます。
134 :
133 :2001/01/23(火) 14:48
具体的にいうと 134と135の2種類の数字が 134 134 135 134 135 134 135 と並んでいたとすると、 これを 134 134 134 134 135 135 135 という形に替えたいのです。
135 :
133 :2001/01/23(火) 14:50
しかし、qsortで行うと 数字の大小でflagをつけて、結果を出すと 134 135 135 134 134 134 135 というように最初と最後だけいれかわってしまいます。 どうすればいいですか?
136 :
デフォルトの名無しさん :2001/01/23(火) 15:02
あげ
137 :
デフォルトの名無しさん :2001/01/23(火) 15:08
>>133 $ cat qsort.c
//
// qsort.c
//
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int compare(const void* p1, const void* p2);
int main(int argc, char** argv)
{
int i = 0;
argv++;
argc--;
qsort((void*)argv, (size_t)argc, sizeof(char*), compare);
for(i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
int compare(const void* p1, const void* p2)
{
return strcmp(*(char**)p1, *(char**)p2);
}
$ ./qsort 134 134 135 134 135 134 135
134
134
134
134
135
135
135
比較関数はどうしている? 最初の数字<2番目の数字:負の整数 最初の数字=2番目の数字:0 最初の数字>2番目の数字:正の整数 を返すようにしないと行けないのだが?
138は
>>133 ね
あと比較関数の2つの引数は「ポインタ」として扱われます。
>>138 は文字の場合を示してくれましたが、
数値の比較関数の場合
int numcmp(int *p1, int *p2)
{
return (*p1- *p2);
}
となります
140 :
133 :2001/01/23(火) 15:49
char型配列のip[4] を定義して、 そのうちのip[3]の値を比べています。 この場合は139のようにやっても、138のようにやっても 135のようになってしまいます。 更にstrcasecmp(a->ip[3];a->ip[3])とやってもそうなります。 どこに原因があるでしょうか?
141 :
133 :2001/01/23(火) 15:50
flag=strcasecmp(qr1->ip[3],qr2->ip[3]); return flag; とやっているのですが・・・・・
142 :
デフォルトの名無しさん :2001/01/23(火) 16:03
あ
flag=strcasecmp(qr1->ip[3],qr2->ip[3]); qr1->ipの型は何? charの配列の場合、警告が出ない?
144 :
デフォルトの名無しさん :2001/01/23(火) 16:41
unsigned char (ucha)r型です。 ここに問題があるのでしょうか?
145 :
デフォルトの名無しさん :2001/01/23(火) 16:41
(uchar)です
146 :
デフォルトの名無しさん :2001/01/23(火) 16:45
strcasecmp(qr1->ip[3],qr2->ip[3]); uchar型の文字の比較の場合 以外にflagを決定する方法があるでしょうか?
147 :
デフォルトの名無しさん :2001/01/23(火) 16:46
間違えました。 2重カキコすみません。 uchar型の文字の比較の場合 strcasecmp(qr1->ip[3],qr2->ip[3]); 以外にflagを決定する方法があるでしょうか?
> uchar型の文字の比較の場合 strcasecmpは大文字・小文字を意識しない「文字列」を比較する為の関数です この違いは重要なのでもう一度確認しますが、 あなたは「文字」を比較したいんですか?「文字列」比較したいんですか?
149 :
133 :2001/01/23(火) 17:03
文字を比較したいのですが、 139の方法で比較しても、135 のようになります。 flagを決定するのに、strcmpでも139の方法でも大体のソート はできるのですが、最初と最後だけやっぱりおかしくなります。 char型(uchar型)の文字を比較する場合は、どのようにして、 flagを決定するのがいいのでしょうか?
文字を比較する場合は、 flag = qr1->ip[3] - qr2->ip[3]; です。 あと比較関数が正常動作しているかどうかの確認の為、 printf("%d = %c. %c\n", flag, qr1->ip[3], qr2->ip[3]); を入れてみる事をお勧めします。
151 :
デフォルトの名無しさん :2001/01/23(火) 17:46
Z-80を使いロボットを作っているのですがプログラムを書いた 後、アセンブラの方法がわかりません。 何か良いアセンブラソフトがあれば教えてください。
152 :
名無しさん@@ :2001/01/23(火) 18:23
LSIC80付属のアセンブラがベスト。
153 :
デフォルトの名無しさん :2001/01/23(火) 18:44
あき8でも買ってきなさい アセンブラもちゃんとついてきます つーか、敷居高いんでそれなりの時間と本代を覚悟しよう
154 :
137 :2001/01/23(火) 19:26
>>149 $ cat qsort.c
/* qsort.c */
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define ARRAY_SIZE (5)
typedef struct {
unsigned char ipa[4];
}QR;
void print_array(QR* p, int size)
{
int i;
for(i = 0; i < size; i++)
printf("%d.%d.%d.%d\n", p[i].ipa[0], p[i].ipa[1], p[i].ipa[2], p[i].ipa[3]);
}
int compare(const void* p1, const void* p2)
{
QR* qr1 = (QR*)p1;
QR* qr2 = (QR*)p2;
return (qr1->ipa[3]) - (qr2->ipa[3]);
}
int main(int argc, char** argv)
{
int i = 0;
QR p[ARRAY_SIZE];
srand(time(NULL));
for(i = 0; i < ARRAY_SIZE; i++) {
p[i].ipa[0] = p[i].ipa[1] = p[i].ipa[2] = i;
p[i].ipa[3] = rand() % 255;
}
print_array(p, ARRAY_SIZE);
qsort((void*)p, ARRAY_SIZE, sizeof(QR), compare);
printf("------------------------------\n");
print_array(p, ARRAY_SIZE);
return 0;
}
$ ./qsort
0.0.0.243
1.1.1.2
2.2.2.79
3.3.3.221
4.4.4.45
------------------------------
1.1.1.2
4.4.4.45
2.2.2.79
3.3.3.221
0.0.0.243
155 :
133 :2001/01/23(火) 20:28
いろいろ教えていただき有難う御座いました。 なぜかどうやっても、出来なかったため、 むりやりな手法(最初と最後のみ交換) でとりあえず、解決しておきました。 またで直してきます。
>>155 > むりやりな手法(最初と最後のみ交換)
> でとりあえず、解決しておきました。
た、頼むそれで解決だけは止めてくれ!!
そんな結果じゃぁせっかく付き合った137さんもがっかりだと思うぞ。
# 少なくとも私はがっかり...
そのデータの場合はうまくいってるように見えるが、
別のデータの場合はうまくいかない可能性もあるぞ!
Z80アセンブル方法教えてやるからメールしな。
158 :
デフォルトの名無しさん :2001/01/23(火) 22:09
メールまでしておしえてくださるなんて、なんて親切なんでしょう・・・・感動しました。
159 :
133 :2001/01/23(火) 22:16
>>156 わかりました。
もう少し頑張ります。
実はこれ卒論のデータをだすのに使うもので、
期日が後3日なので、とりあえず、データを出した後
もう一度トライしてみます。
できたら報告にまいります。
160 :
屑マカでふ :2001/01/23(火) 22:17
Max/MSPやNato とは一体どんなプログラムなんでしょうか?
161 :
デフォルトの名無しさん :2001/01/23(火) 23:25
C#が出てくることでMFCってどうなっちゃるんで消化?
162 :
初心者 :2001/01/24(水) 00:18
Cでアークタンジェントの 関数を作りたいのですがどのようなアルゴリズムにすればいいのでしょうか?
>>162 math.h の atan(x) か
自分でつくりたいなら主値を限り級数展開なり連分数展開なりを使って。
164 :
デフォルトの名無しさん :2001/01/24(水) 01:23
おう!てめえらに質問してよろしいでしょうか?お忙しいところまことに恐縮ですが 実はVB6.0ってのをDLしたいんですが、 いろいろあってどれをDLしたらいいかわかりません どうかご指導のほどよろしくお願いいたします
165 :
デフォルトの名無しさん :2001/01/24(水) 01:27
>164 泥棒のやり方を人に聞く奴があるか。
166 :
デフォルトの名無しさん :2001/01/24(水) 01:29
>>165 >いろいろあってどれをDLしたらいいかわかりません
ランタイムのことじゃないの?
sage
168 :
デフォルトの名無しさん :2001/01/24(水) 02:11
=====終了=====
なぜ急に終わる?
170 :
デフォルトの名無しさん :2001/01/24(水) 05:33
>>164 VB6.0ランタイムならどれでもOKだよ~
>>168 おまえVC++にもいなかったか?
どこぞの質問無視されて逆切れやろうか?
173 :
151 :2001/01/24(水) 12:36
>>157 マジっすか!!
本気でメール出そうかな・・。
でも何でメールでなんですか?
ここでは書けないほどややこしい方法なんですか?
あとなんでそんなに親切なんですか?
友達から「口は悪いが本当はいい奴」って言われませんか?
っていうかネタですか?
174 :
デフォルトの名無しさん :2001/01/24(水) 13:43
↑ 157じゃないけど、人の親切は素直に受け入れろ。
cで整数の1と文字列の"f_" を使ってf_1という値が欲しいのですが #include <stdio.h> #include <string.h> main { char *a,*c; int b; a = "f_"; b = 1; c = (char*)b; strcat(a,c); } としても"f_1"には余裕でなってくれません。 どうしたらよいでしょうか?
>>175 >main
>{
論外
>a = "f_";
aのポインタは何処を指している?
>c = (char*)b;
キャストが分かっていない。
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[10];
int b;
b = 1;
sprintf(&a[0], "f_%d", b);
printf("%s\n", a);
return 0;
}
>どうしたらよいでしょうか?
まず、Cの本を1冊通読する事をお勧めする。
177 :
デフォルトの名無しさん :2001/01/24(水) 17:35
>>175 っていうか落ちないか?
#define BUFFSIZE 16
main {
char a[BUFFSIZE], c[BUFFSIZE];
int b;
strcpy( a, "f_" );
b = 1;
/* この部分は
sprintf( c, "%d", b );
strcat(a,c);
*/ 一行に出来る
sprintf( c, "%s%d", a, b );
}
>>ALL
お気持ちは分かりますが、初心者の内は大目に見ましょう。
175 さんはポインタを一から勉強しようね。
178 :
自己レス :2001/01/24(水) 17:41
>>176 すいません。私、やはり根本的に理解できていなかったんですね。
>>177 暖かいお言葉頂けて嬉しいです。出直してきますね。
お二人ともありがとうございました。
180 :
デフォルトの名無しさん :2001/01/24(水) 18:12
>>162 実際に atan() を自作する場合は,x が大きいと単純に級数で計算
するだけでは駄目だったり(収束しない or 遅い),結構いろいろ考
えなくちゃならんと思う。
浮動小数点計算は,基本的な問題で引っかかりがち(0.1 を十回足
しても 1 にならないとか)だから,ちゃんと本で勉強したほうがい
いでせう。
> >a = "f_"; > aのポインタは何処を指している? つーか、ここは特に問題ないと思うが‥ 何か勘違いしてないか?
>>181 >つーか、ここは特に問題ないと思うが‥
aは変更不可領域を指している可能性が高い。
そしてその後の処理でstrcat(a,c);をやっているので、
変更不可領域を書換える可能性が高い。
> strcat(a,c);
も引用しておくべきだった。訂正する。
183 :
デフォルトの名無しさん :2001/01/25(木) 05:45
それより誰か、Cのサンプルが載ったアルゴリズムのド入門書を 教えて緒。 「Cによるはじめての・・・」 「定本・・・」 以外でお願い。
184 :
デフォルトの名無しさん :2001/01/25(木) 09:37
>>183 やっぱ、K&Rでしょ。
いくら「ど初心者」でも、「入門」とか「はじめての」とか
うたってる本はお薦めしない。嘘ばっかり書いてあるから。
難しくても、がんばって、正確なことを書いてある本を読む
ことをお勧めします。
>いくら「ど初心者」でも、「入門」とか「はじめての」とか >うたってる本はお薦めしない。嘘ばっかり書いてあるから。 こういう分かったようなことをいって、K&Rを勧める人を信用しないように。
186 :
デフォルトの名無しさん :2001/01/25(木) 10:19
独習シリーズは?
187 :
デフォルトの名無しさん :2001/01/25(木) 10:20
ああ、あと、シリーズもので 初級、中級、上級、 みたいになってる奴はそれなりに良いものが多い (経験談)
188 :
デフォルトのななしさん :2001/01/25(木) 11:20
独習シリーズは分かりにくいので、キライ。 かといって、K&R読めとはいえないんで。 オライリーシリーズを全部嫁。
189 :
デフォルトの名無しさん :2001/01/25(木) 12:09
独習ってわかりづらいの? 独習C++しか読んだこと無いけど ものすごく良かったけどな~ まあ、絵が無いから好き嫌いがありそうか・・・
190 :
デフォルトの名無しさん :2001/01/25(木) 12:27
C実践プログラミング・・・・(オライリー) 一応お薦め・・・・・。
公的なタイムサーバーってあるんですか?
time-nw.nist.gov とかは公的なのかな? 政府機関だし。
193 :
デフォルトの名無しさん :2001/01/25(木) 14:46
東大にあるって話を 小耳に挟んだことがある
小耳ねぇ…
明石の電子台から直接時刻を取ってくる
タイムサーバーなら正確無比でベストなんですが・・・
>>192 グリニッジ世界標準時刻?
>>192 telnetで接続してログとって見ました。
51934 01-01-25 07:50:32 00 0 0 361.5 UTC(NIST) *
バッチリそうです。ありがとうございました。
199 :
デフォルトの名無しさん :2001/01/25(木) 21:22
>>184 >>183 はアルゴリズムを知りたいんだろう。それにK&Rを勧めてどうするかな。
K&Rは一冊持っとくべきだと思うが。
で、何年か前にアルゴリズム事典を何冊か眺めてみたんだけど、なんつーか、
どれもコーディング規則に一癖あるようなのが多かった記憶がある。
まぁ、丸写しするにせよ、読み解くにせよ、どれでも一緒だと思うぞ。
>>199 > アルゴリズムを知りたいんだろう。それにK&Rを勧めてどうするかな。
K&Rはアルゴリズムの宝庫だと思うのだが。
2分木探索、クイックソート、mallocの実装、再帰下降パーサ
streamの実装、tree構造、etc
201 :
183 :2001/01/25(木) 23:37
アルゴリズムのド入門書のこと、アドバイス色々サンクスね。 K&Rは立ち読みして、そのままそっと本棚に返した。 多くの人が絶賛する本だから内容はいいんだろうけど、 相性みたいなのがあるでしょ? ちょっと俺には合わなかった。まぁ、そのうち読まなきゃいけないんだろうけど、 必要なときがくれば考えてみるね。 そんで、K&Rにはアルゴリズムが載ってるとしても、Cのプログラミングの説明と して、何かのアルゴリズムを使ってるんじゃない? それはそれでいいんだけど、俺が知りたいのは、基本的なアルゴリズムそのもの、 その考え方、チャートの描き方、それをコードに直す手順、みたいな感じの ことなんだよ。 みんながあちこちで紹介してくれてる本はざっと目を通したけど、しっくり こなかったんで。 引き続き、オススメがあれば教えてちょうだいな。 プリーズ。
202 :
デフォルトの名無しさん :2001/01/25(木) 23:50
>>201 そんな君には、「算法表現論」岩波書店
だ。
203 :
デフォルトの名無しさん :2001/01/26(金) 03:06
>201 共立出版の「アルゴリズム辞典」 A5、976Pで25000円・・・。すまん、ネタだ。 でも、どんな内容なのかスゴク興味ある。
204 :
デフォルトの名無しさん :2001/01/26(金) 09:34
共立出版「ナノピコ教室」「続ナノピコ教室」
205 :
デフォルトの名無しさん :2001/01/26(金) 12:45
>>201 >多くの人が絶賛する本だから
ちょっと、私が感じているK&Rの評価と違うなぁ
K&Rは、その他のCの本とは別格でしょ。
Cコンパイラの仕様書とでも言えると思う。
つまり、その他のCの参考書のコードがコンパイルできなければ
その参考書が間違ってるわけだが、K&Rのコードが通らなければ
そりゃコンパイラがバグってる、と言えるほどCの標準なわけで
絶賛しているのではなくて、基準なのだと思うよ。
日本語に対する「広辞苑」みたいな感じかな。
で、内容的にどうかというと賛否が分かれるね。
206 :
デフォルトの名無しさん :2001/01/26(金) 13:03
みんな、K&Rと言うと納得するようだが ANSIとかISO,JISがなんでできたか考えれば そんなに盲信できるものとは思えないんだけどね 205のコンパイラがおかしいってのは言い過ぎなのでは? それでも、そこらの解説本とは比べられないが・・・ 私は、K&R読むくらいなら ANSI読んだほうが良いと思っている
207 :
pikio :2001/01/26(金) 16:51
世にあるMP3を扱ったソフトはみんなライセンス料を払ってるのですか? 払わないと集金にきますか?
208 :
デフォルトの名無しさん :2001/01/26(金) 17:08
>>206 「プログラミング言語C 第2版」は
C89(いわゆる ANSI Cというやつかな..??)で書かれているよ。
209 :
デフォルトの名無しさん :2001/01/26(金) 17:27
>>206 いつの時代のK&Rですか?
今、一般にK&Rといえば「プログラミング言語C 第2版」のことだと思いますが。
当然、この本はANSI準拠。
>>207 MP3は確かフリーフォーマットだと思ったけど。
まあ、GIFじゃあるまいし多分問題ないかと。
K&RよりもANSIを読んだ方がいいというのは言語オタクかコンパイラ関係の人。 かたぎには手に入れやすいK&Rのほうがいいんです。
>多くの人が絶賛する本だから ってよりも昔はK&Rしかなくて、Cを熟知している人は大抵そんな時代からの人で んで、アセンブラもよく知ってる人で、他の本はあんまり知らなくて 「とりあえずK&R読め」ってことさ。んだんだ
212 :
デフォルトの名無しさん :2001/01/26(金) 18:15
>>209 MP3は最近さわがれてるだろーが!
よく問題ないとかいえるな。おい。
213 :
209 :2001/01/26(金) 18:55
>>212 最近騒がれてるって、どういう意味で?
MP3の規格自体はフリーフォーマットだろ。違うのか?
214 :
デフォルトの名無しさん :2001/01/26(金) 23:44
そこらへんの怪しい解説本よりはいいんじゃない。>K&R へたに問題のある本で洗脳されるよりずっとマシ
215 :
デフォルトの名無しさん :2001/01/27(土) 12:13
フォルダにパスワードをつけたいんですけどもどうすれば良いのでしょうか? ちなみにWin機です。
自分が作ったアプリやゲームが雑誌に掲載されると、 掲載料とかもらえるんですかね?
217 :
デフォルトの名無しさん :2001/01/28(日) 18:35
>212 久々ドキュソ発見。論点がちがうぞ。
218 :
デフォルトの名無しさん :2001/01/28(日) 19:07
GIFもフリーフォーマットだろ。違うのか?
スマソ。213の言うとおりです。 ということで、MP3は問題なし。 エンコーダ、デコーダ自由に作ってよしということで。
220 :
デフォルトの名無しさん :2001/01/28(日) 19:56
DirectX 7のサンプルなどって手に入りますか?
221 :
デフォルトの名無しさん :2001/01/28(日) 20:36
デコーダはともかく、エンコーダはマズイだろ。 GIFのような問題がある。
>>219 午後のこ~だのページ見るべし。
結構詳しい経緯とか書いてあったよ。
223 :
デフォルトの名無しさん :2001/01/28(日) 21:08
パテントプールが必要だよね。 mpeg2でも必要だし、厄介な世の中だよ。
224 :
名無しさん :2001/01/28(日) 22:42
高速の拡大縮小の処理ってどうすればいいんでしょうか? ヒント、キーワードを教えてください。
225 :
デフォルトの名無しさん :2001/01/30(火) 17:13
たとえば line[] = "こんにちわ"; って入ってる配列の中身をshift-jisからEUCにするにはどうしたらよいのでしょう?
226 :
デフォルトの名無しさん :2001/01/30(火) 17:43
自前で SJIS2EUC(char *) 書く
227 :
デフォルトのななしさん :2001/01/30(火) 17:56
愛と勇気!
228 :
デフォルトの名無しさん :2001/01/30(火) 19:23
229 :
デフォルトの名無しさん :2001/01/30(火) 19:48
230 :
デフォルトの名無しさん :2001/01/31(水) 01:32
Qtってどんな感じですか?使ったことのある人いたら教えて下さい。
231 :
デフォルトの名無しさん :2001/01/31(水) 03:21
rand で乱数を作ってもいつも同じ乱数列から 同じ結果が出てしまいます。どうやって乱数作るんですか?
232 :
デフォルトの名無しさん :2001/01/31(水) 03:29
srand(time(0));
ノーモアネタ・・・
234 :
デフォルトの名無しさん :2001/01/31(水) 08:19
途中文章が変だが気にしないでくれ。
236 :
デフォルトの名無しさん :2001/01/31(水) 15:52
仮にテストの成績を順位付けしたいと思います。 クラス、学年と付けたいんですけどそうすると 配列はどのようになるのでしょうか。
237 :
JAVAC :2001/01/31(水) 16:26
Cドライブ残り容量400MBなんですが、JDKをいれても大丈夫ですか ??
238 :
デフォルトの名無しさん :2001/01/31(水) 17:48
>>237 ぜんぜんおっけー
ダウンロードモジュールの大きさから考えてみろって。
悪くても3倍以上になるこたあない。
239 :
デフォルトの名無しさん :2001/01/31(水) 17:53
240 :
デフォルトの名無しさん :2001/01/31(水) 17:59
>>236 java.util.TreeMap
を使え。入れると同時にしかるべき順位の場所に挿入される。
C++はSTLのえらい人にパス
241 :
デフォルトの名無しさん :2001/02/01(木) 12:20
>>236 構造体配列
って、ここ、ウルトラ初心者板だっけか、んじゃ例をば
typedef struct PERSONAL_INFO{
int grade;
int class;
int name;
int score;
}PERSONAL_INFO;
#define N ??
main(){
PERSONAL_INFO *person,*sort;
person=(PERSONAL_INFO *)calloc(N,sizeof(PERSONAL_INFO));
sort=person;
/*あとは、なんとでもしてちょ*/
free(person);
}
適当に書いたからスペルミス等があるかもしれん・・・
242 :
デフォルトの名無しさん :2001/02/01(木) 18:49
BCCでコンパイルしたら、以下のエラーがでてコンパイルしてくれません。 初めて関数を作成したのが、原因だと思うのですが、対処方法がわかりません。 誰か教えて下さい。よろしくお願いします。 Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland c108.c: エラー E2141 c108.c 7: 宣言の構文エラー(関数 aa ) 警告 W8065 c108.c 24: プロトタイプ宣言のない関数 'aa' の呼び出し(関数 main ) *** 1 errors in Compile ***
243 :
242 :2001/02/01(木) 18:52
解決しました・・・ 変数を宣言した行に";"が抜けていました。恥ずかしい・・・ 警告がでないようにするには、どういった処置をすればよろしいでしょうか?
244 :
デフォルトの名無しさん :2001/02/01(木) 18:59
245 :
242 :2001/02/01(木) 19:08
すいません・・・初心者で独学です。勘弁して下さい。
246 :
デフォルトの名無しさん :2001/02/02(金) 02:49
λ-算法やμ-作用素って、どんな場面(特にプログラムにおいて)役に 立つんでしょうか?
247 :
ななし :2001/02/02(金) 14:09
BorlandC++というのをDLしたんだけど後どうやったらプログラムが打てるように なるんですか?
248 :
デフォルトの名無しさん :2001/02/02(金) 14:13
249 :
デフォルトの名無しさん :2001/02/02(金) 14:45
251 :
デフォルトの名無しさん :2001/02/02(金) 16:17
つーか、ねただろ?
252 :
デフォルトの名無しさん :2001/02/02(金) 18:25
VC6で作ったプログラムが正常に終了できません。 途中の処理は全て問題なく動き、最後にウインドウを閉じる時にエラーが出ます。 デバッガで見ると、WM_DESTROYの最後にrerutn 0を返すところまでは問題なく、 その後のアセンブラっぽいところまで行ってエラーが出ました。 そのままリリースビルドして実行してみたら、特にエラーが出ることも無く終了できたんですけど やっぱりこのままじゃまずいですよね。
253 :
デフォルトの名無しさん :2001/02/02(金) 18:58
やっぱしまずでしょうね‥ エラーの種類なはに?
254 :
252 :2001/02/02(金) 19:35
>>253 エラーメッセージはこんなです。訳してみたけどよくわかりませんでした。
Debug Assertion Failed!
Program: D\Vc\PT\Debug\PT.exe
File: dbgdelcpp
Line: 47
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
For infomation on how your program can couse an assertion
failure , see the Visual C++ documentation on asserts
エキサイト訳:
あなたのプログラムがどう主張失敗を共同使用することができるかについてのinfomationについては、
Visual C++ドキュメンテーションを見る、の上で、主張する。
255 :
デフォルトの名無しさん :2001/02/02(金) 20:35
>>254 それが出たときにありがちなのは、リリースビルドされたDLLでnewされた
オブジェクトを自分のプログラムのDebug版でdeleteしちゃう、とかだな。
256 :
252 :2001/02/02(金) 21:45
どうやらWindows2000だとリリース版でも終了時にエラーが出るみたいです。 Win98では出なかったです。 エラーメッセージ "0x00407733"の命令が"0x00000004"のメモリを参照しました。メモリが"written"になることはできませんでした。
257 :
デフォルトの名無しさん :2001/02/03(土) 09:52
strcpyとlstrcpyって何が違うんでしょうか。 機能自体は同じみたいですが…。
>> lstrcpyはWin32APIなので、string.hがいらない
259 :
デフォルトの名無しさん :2001/02/04(日) 03:07
>>257 lstrcpyは実際にはlstrcpyAまたはlstrcpyWへのalias。
lstrcpyAがchar*用で、lstrcpyWはwchar_t*用。
こういう方式は、文字列を扱う多くのWin32APIで共通。
lstrcpyに相似なのは、strcpyではなくVC++で云えばtcscpyね。
ゴジラとキングコングと何が違うんでしょうか? 機能自体は同じみたいですが…。
>> キングコングはWin32APIなので、string.hがいらない
262 :
デフォルトの名無しさん :2001/02/07(水) 14:58
windowsx.hとかのマクロって使った方がいいんでしょうか? 処理速度やビルド後のサイズは使っても使わなくっても同じですよね?
>>262 できる限り使ったほうが他の人にも理解し易くなります。
ただ、コントロールへのメッセージのマクロ等では
Button_SetText()を使うのとSendMessageを使うのと
どっちがいいかというと、どっちともいえないのが事実ですが。
ただ、プログラム内ではどちらかに統一したほうが良いです。
ちなみに、windowsx.hを見ると解りますが、ただ単にAPIや
SendMessage()にマップしているだけなので、処理速度もサイズ
も変わることはありません(あるとすれば最適化処理くらい)。
>>252 -256
>>254 のエラーメッセージを見ると、VirtualAlloc()等のメモリを
確保するファンクションで確保したメモリを2重解放しているか、
もしくは無効なポインタを解放しようとしているか、いずれかでしょう。
"Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
というのは、解放しようとしているメモリブロックがプロセスから
見て無効であると判断されているということです。
265 :
262 :2001/02/07(水) 15:44
そうですか。 じゃあ、使うようにします。
266 :
デフォルトの名無しさん :2001/02/07(水) 17:44
#include <stdio.h> int main(void) { int a[10000],count; for(count=0;count<10000;count++) { a[count]=count; printf("count=>%d\n",count); } return 0; } こんなプログラムを組んで実行してみたのですけど、 countが7000くらいで、表示がめちゃくちゃになってしまいます。 何がいけなかったのか、どなたか教えてもらえませんか?
267 :
デフォルトの名無しさん :2001/02/07(水) 17:53
268 :
教えてください。 :2001/02/07(水) 17:57
小文字アルファベットのみの文字列をキーボードから読み込んで 表示するプログラム 条件:1)小文字アルファベット以外の文字があったらエラ―表示 2)すべて大文字に変換して表示 3)どのアルファアベットが何個入力されたか表示 #include<stdio.h> void main() { char buff[23]; int ic=0; while(buff[ic]=!'\0') printf("小文字アルファベットを入力してください: "); scanf("%s",buff); { if((buff[ic]<0x41)||(buff[ic]>0x5a)) printf("%d 番目が文字のアルファベットではありません\n",ic); else printf("%s",buff); buff[ic]=buff[ic]+32; ic++; } } というふうにプログラムをしたんですが、多分全然変なプログラム だと思います。あまりにも条件が難しくてこれ以上手が付けられません。 どうすればいいかどなたか教えてくださいませんか? よろしくお願いします
269 :
教えてください。 :2001/02/07(水) 18:00
268です ちなみにVC++です。 長くてスイマセン
isalpha() toupper() int count['Z' - 'A' + 1]; memset(...sizeof(count)); int ch = ?? count[??]++;
>>268 自分で努力して見せるってのも、こういう場所で教えてもらうコツだけどさ。
そのソースはひどすぎはないか?
272 :
デフォルトの名無しさん :2001/02/07(水) 18:33
>>271 268です。コツというか確かにこのソースがひどいのは
重々承知なんですが、実際このソースがどんな風にひどいのかも
わかりません…。
>>270 ありがとうございます。でも、課題だったらどーなるんでしょうか?
273 :
266 :2001/02/07(水) 19:14
すいません。266です。 windows98で、Cで書いてます。
>>272 > 実際このソースがどんな風にひどいのかもわかりません…。
とりあえず添削すると...
まず
> while(buff[ic]=!'\0')
の位置がおかしい
>printf("小文字アルファベットを入力してください: ");
>scanf("%s",buff);
は複数回おこなわないよね?
> if((buff[ic]<0x41)||(buff[ic]>0x5a))
マジックナンバー(0x41, 0x5aなどの意味不明の数値)
がかかれているコードは読みにくいしわかりくいと思わない?
if((buff[ic]<'a')||(buff[ic]>'z'))
のほうがわかりやすいよね。
また小文字かどうかを調べるCの標準関数(マクロ)もあります。
あと、多分
> 3)どのアルファアベットが何個入力されたか表示
がわからなそうですが、
1. a-zまでの26個の配列を定義し、全部0に初期化する
2. hoge[0]aの出現回数を記憶しておく
hoge[1]bの出現回数を記憶しておく
hoge[2]cの出現回数を記憶しておく
:
ようにして
3.小文字アルファベットが出現したら対応する
hogeの要素をカウントUPする
275 :
デフォルトの名無しさん :2001/02/07(水) 19:47
>>273 ソースを見たかんじだとおかしい所は無いです。
一応、うちのWin98+VC6で実行させて見たけど、正常に動いてるよ。
276 :
266 :2001/02/07(水) 19:56
>>275 えっ、そうですか。
私はLSI-C試食版でやっていたのでだめだったのでしょうか。
近いうちにVCは買うつもりなので、買ったらまた試してみます。
教えていただいて、ありがとうございます。
277 :
C++で :2001/02/07(水) 20:31
デバッグ、コンパイル、リンク、ビルド、リビルドとかって それぞれどんな役割・順番なんでしょうか? あと出来上がったプログラムを実行しても その前のプログラムが実行されちゃうんですけどどうしてですか?
コンパイル: C++のソース→バイナリ リンク: ファイル毎にコンパイルしたのとかをくっつけて実行ファイルを作ったり ビルド : コンパイルしてリンクすること リビルド: 前のビルドの時作った作業ファイルを全消去して一からビルドし直し デバッグ: 上4つとは全然別の話
279 :
デフォルトの名無しさん :2001/02/08(木) 09:02
>>274 ありがとうございました。
直してやってみます。
280 :
デフォルトの名無しさん :2001/02/08(木) 11:26
COMポートで相手の機械にデータを流したいのですが、 どのような関数を使えばいいのですか ちなみに整数値(int)をわたしてあげたい!
281 :
( ´∀`)さん :2001/02/08(木) 16:51
int strcmp( const char *str1, const char *str2 ); は1=2のときに0で1≠2の時に0以外ってこれ普通なんすか? 真のときは0以外で偽のときは0だと思ってたけれど、 この場合1と2を比べて合ってたら0って偽ってこと?
282 :
デフォルトの名無しさん :2001/02/08(木) 17:37
>>281 かなり混乱しているようですが...
strcmp(), memcmp()は
str1 > str2 の場合正の数
str1 = str2 の場合0
str1 < str2 の場合負の数
を返すように決まっています。
なぜかというと文字列を辞書順にソートしたい場合など、
文字の大小がわからないと不便だからです。
またif文は式中の値が0以外は真、0は偽として処理を行ないます。
つまり文字列が同じ場合をチェックするのには
if(strcmp(s1, s2) != 0) printf("s1とs2は同じ\n");
か
if(!strcmp(s1, s2)) printf("s1とs2は同じ\n");
などと書く必要があります。
>>282 嘘
>if(strcmp(s1, s2) != 0) printf("s1とs2は同じ\n");
if(strcmp(s1, s2) == 0) printf("s1とs2は同じ\n");
逝ってきます
284 :
281 :2001/02/08(木) 18:09
よーくわかりました。 これからポケットリファレンスでも買いに逝ってきます。 解説系HPの説明は100%足りているわけではないということがわかったっす。
285 :
デフォルトの名無しさん :2001/02/08(木) 18:30
>>281 s1 - s2 の引き算をした結果、
と思えば覚えやすいかもね。
286 :
名無しさん@お腹いっぱい。 :2001/02/08(木) 19:52
直感的にナニだと思う人が多いんでしょうか #define STREQ(s1, s2) (strcmp(s1, s2) == 0) なんてマクロをよく見かけます。
287 :
デフォルトの名無しさん :2001/02/08(木) 20:21
Cを独学で構造体まで勉強しました。 一通りのソートやキャラクター検索のコードを書いてきましたが、 これから何をするのが良いでしょうか? 何していいのかわからなひ・・・。
288 :
2001年宇宙の錆 :2001/02/08(木) 20:27
自分が作ったネットワークプログラムを、ファイアウォールや プロキシサーバーを越えさせるためには「アプリケーションをsocks化」しないと いけないことはわかったのですが、具体的にどうすればいいんでしょうか? UltimaOnlineやディアブロが、学校のPCでできたりしますが、 これらはsocks化されているんですか? それとも単にファイアウォールがポートをふさいでいないだけ?
289 :
デフォルトの名無しさん :2001/02/08(木) 20:40
>>288 Windows ならたしか socksify するアプリがあったはず。
un*x なら #define SOCKS #include <socks.h> して libsocks5 とリンクしろ。
runsocks でも ok。
290 :
2001年宇宙の錆 :2001/02/08(木) 21:30
>>289 ご回答ありがとうございます。
プラットフォームを書くのを忘れていました(^-^;
サーバー、クライアントともLinuxで、開発言語はC++です。
ネットワークプログラミングの勉強をしようと思って
とりあえず簡単なプログラムを書いてみたのですが、
ローカルネットワークでは通信できたものの、インターネット越しだと
できなくて悩んでいるところです。
ご助言いただいたsocks.h、libsocks5のキーワードで検索したものの
ファイアウォールの設定のページしかひっかからなくて泣きそうです。
具体的にやりたいことは、友人に自作のサーバーアプリケーションを立てさせ、
それにつなぐ、という単純なことなのですが。
簡単なプログラム例を出していただければ幸いです。
#そもそも私がsocksの概念を勘違いしている可能性も有り。
291 :
デフォルトの名無しさん :2001/02/09(金) 01:24
はーい、質問。 Texinfoファイルって、Windowsで見るにはどうすればいいんでしょう? bison.texinfoが読みたいっす。
292 :
デフォルトの名無しさん :2001/02/09(金) 08:10
>>291 やらずに言ってますけど…。
texi2html を cygwin でコンパイルすればコンバートできるかも。
293 :
デフォルトの名無しさん :2001/02/09(金) 09:00
294 :
デフォルトの名無しさん :2001/02/09(金) 13:09
COMポート(COM1)を使って相手の機器に整数値を送信するやり方は 以下の方法でいいのですか? HANDLE handle; DWORD dwNumber; BOOL bRetW; BOOL bRetC; CString strErr; int iData = 1; //とりあえず整数値の1を送る // 送り先のクリエート handle = CreateFile("COM1", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(handle == INVALID_HANDLE_VALUE){ MessageBox("クリエート時エラー", "エラー", MB_ICONERROR | MB_OK); } // 送り先へデータの送信 bRetW = WriteFile(handle, &iData, sizeof(iData), &dwNumber, NULL); if(bRetW == 0){ MessageBox("データ書き込み時エラー", "エラー", MB_ICONERROR | MB_OK); } // ハンドルのクローズ bRetC = CloseHandle(handle); if(bRetC == 0){ MessageBox("ハンドルクローズ時エラー", "エラー", MB_ICONERROR | MB_OK); return; }
295 :
292 :2001/02/10(土) 01:37
>>268 すくなくとも Linux の場合、
#include <ctype.h>
isalpha()
は ア ル ファ ベットかどうか調べる。これは標準の"C"
localeでは (isupper(c) || islower(c)). と等し い。
他 のlocaleでは、大文字でも小文字でもない他の文字で
も isalpha() がtrueを返すことがある。
準拠
ANSI - C, BSD 4.3. isascii()はBSDやSVIDの拡張であ る。 ま
た、isblank()はGNUの拡張である。
という標準関数があります。Windows だとどうなんでしょ…?
296 :
新規投稿 :2001/02/10(土) 02:06
Windowsにおいて DLL が持つエクスポートされた関数のアドレスというのは バージョンに依存せず、常に一定なものなのでしょうか? やはり GetProcAddress で関数名か序数を指定して取得するべきなのでしょうか。
297 :
デフォルトの名無しさん :2001/02/10(土) 16:48
C++のプログラミングをこれからはじめようと思いますが、 VC++とBCBではどちらがお勧めでしょうか?
>>297 C++だけならgccとかでもOKだよ。
299 :
297 :2001/02/10(土) 17:00
>>298 Win32APIをつかったプログラムでも大丈夫なんでしょうか?
301 :
297 :2001/02/10(土) 19:11
>>300 せっかくだからWin32も覚えようと思いまして。
303 :
297 :2001/02/10(土) 19:43
>>296 >やはり GetProcAddress で関数名か序数を指定して取得するべきなのでしょうか
すべきでしょ。
てか、不可欠。
まあ、暗黙リンク使えるなら(.libがあるなら)それでも良いけど
305 :
296 :2001/02/10(土) 23:10
>304さん やはりそうですよね。バージョンごとに変わらないなんて 保証というか規約なんてないですものね。
306 :
名無しさん@お腹いっぱい。 :2001/02/10(土) 23:18
MFCを覚えるのがしゃくなんですが、VBのように 簡単に開発できるC++環境って何でしょうか?
308 :
デフォルトの名無しさん :2001/02/10(土) 23:28
VCLを覚えるのがしゃくなんですが、VBのように 簡単に開発できるC++環境って何でしょうか?
C#ってJavaみたくIE上でアプレットとしても動かせるんですか?
311 :
デフォルトの名無しさん :2001/02/10(土) 23:57
VisualStudio.netのVisualC++ってVBみたいに簡単になってるんですか?
MS に電話してね♥
VB使い「僕たちも仲間に入れて~」 VC使い「お前らこっちに来んな!!」
VC++を買ったので、勉強しているのですが、 1.関数に対して、引数を渡すのに、値とポインタとどちらを渡すのか・・・ と、いうところは、どこで見分けられているのでしょうか。 (構造体や、そのポインタを渡すとか・・・) 関数のパラメータに書かれているのは分かるのですが、いまひとつ つかみきれません。どんな時は、こんな引数という例を教えて頂き たいのです 2.関数の返値を使う場合と、構造体などのポインタを引数として渡して、 そこに値がセットされるのを望む場合の、見分け方はどうされている のでしょうか? 関数の返値がvoidだったりすると、ポインタを渡して、そこに結果が 設定されるのかな・・・とか思いますが ヘルプを見ながら勉強用のプログラムを組んでいるのですが、まだまだ ピンとくることがなく、苦労しています
315 :
デフォルトの名無しさん :2001/02/12(月) 14:36
*
317 :
偽名無しさん :2001/02/12(月) 20:18
>>314 親切教えてやろう。
void f1(struct hoge h); //値渡し
void f2(struct hoge* h); //ポインタ渡し
boid f3(struct hoge& h); //参照渡し
呼ぶとき
struct hoge h;
f1(h); //値渡し
f2(&h); //ポインタ渡し
f3(h); //参照渡し
struct hoge g1(); //値返し
struct hoge* g2(); //ポインタ返し
void g3(struct hoge* h); //ポインタに返り値を期待
void g4(struct hoge& h); //参照に返り値を期待
呼ぶとき
struct hoge h;
struct hoge* ph;
h=g1();
ph=g2();
g3(&h);
g4(h);
319 :
あなたのうしろに名無しさんが・・・ :2001/02/12(月) 23:01
C言語でテトリスを作ってみたのですが、これで初心者から 脱することができたでしょうか?ちなみに、WinSDKでやりました。
初心者かどうかなんて自分で思っとけば良いんじゃない? んな、明確な基準なんて無いよ。 と、いつまでたっても初級が抜けられない人の戯れ言でした。
int KyoutuNanndesu(void); void CMentDlg::OnButton1() { 処理を書いてます } int KyoutuNanndesu(void) { ここで、CMentDlgにおいてあるエディットボックスとか、 その他のコントロールに対して、処理を行いたい } と、いうときは、どうしたらいいのでしょうか (コントロールを使用した処理を関数に切り出したい時) KyoutuNanndesu()の引数に各コントロールのハンドルを渡すのかな? それとも、同一ソース内なので、記述の仕方だけで解決できるのかな? とか、いうような感じはするのですが、 渡し方とかのコーディングがわかりません ご伝授下さい・・・
>>321 記入モレ・・・
コントロールに対して処理を・・・
というのが、ダイアログに貼り付けてある、エディットボックスの
メンバ変数に値を設定したい時です
コントロールに対して処理を行いたいときは
int KyoutuNanndesu(CEdit *);
void CMentDlg::OnButton1()
{
処理を書いてます
KyoutuNanndesu(&m_edit1_ctrl);
}
int KyoutuNanndesu(CEdit *m_edit1_ctrl)
{
ここで、CMentDlgにおいてあるエディットボックスとか、
その他のコントロールに対して、処理を行いたい
[[m_edit1のメンバ変数にゼロを設定したい]]
m_edit1_ctrl->SetFocus();
}
で、行えますよね・・・。(これが、定石から外れるとかだったら
それも指導していただけるとうれしいのですが)
323 :
デフォルトの名無しさん :2001/02/13(火) 13:12
KyoutuNanndesu() は CMentDlg のメンバにしたほうがわかりやすかないですか?>322
324 :
デフォルトの名無しさん :2001/02/13(火) 13:33
CMentDlg以外でも使いたいからだろ? まあ、KyoutuNanndesu()をメンバに持つクラスを基底クラスにして CMentDlgを作る、というのはありかもしれんが。
325 :
デフォルトの名無しさん :2001/02/13(火) 16:40
COMポートを使ってパソコンから 相手の機器へデータを転送するには、 以下のコードでいいでしょうか? // 送り先のクリエート handle = CreateFile("COM1", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if(handle == INVALID_HANDLE_VALUE){ // クリエート時エラー } // 初期設定の取得 GetCommState(handle, &lpdcb); // 必要に応じてここでlpdcb構造体のメンバを変更 // COMポートの設定をセット SetCommState(handle, &lpdcb); // 送り先へデータの送信 bRetW = WriteFile(handle, &iData, sizeof(iData), &dwNumber, NULL); if(bRetW == 0){ // データ送信時エラー } // ハンドルのクローズ bRetC = CloseHandle(handle); if(bRetC == 0){ // ハンドルクローズ時エラー }
326 :
偽名無しさん :2001/02/13(火) 17:42
>>321 KyoutuNanndesu()って共通なんですかよ。
今日鬱なんですにしか見えなかった。
327 :
デフォルトの名無しさん :2001/02/13(火) 18:00
質問なのですが char a[10]; と char a; ではどう違うのでしょうか?
328 :
デフォルトの名無しさん :2001/02/14(水) 00:03
char a; やってる事は char a[1]; と同じような門。
>>326 鬱坊が書いたんだろ、きっと
ローマ字関数むかつくー!
>>327 どう同じだと思ってるのかい?
330 :
デフォルトの名無しさん :2001/02/14(水) 03:01
配列?
331 :
デフォルトの名無しさん :2001/02/14(水) 06:59
>325 自分はやったこと無いので分かりませんが ソース見て勉強になりました。 どうもどうも。
332 :
デフォルトの名無しさん :2001/02/14(水) 07:12
>>328 char a[0];
........
333 :
デフォルトの名無しさん :2001/02/14(水) 07:16
char a[-1];
334 :
デフォルトの名無しさん :2001/02/14(水) 08:26
1組[出席番号]
335 :
即レス求む :2001/02/14(水) 11:02
プログラミングの講義で 何でもいいから自分で課題を決めて作れ!と宿題を出されたんですが 何でもいいといわれるとかえって何を作ればいいか分かりません。 ユニークな課題を考えてください。お願いします。 ちなみにC言語です。
336 :
デフォルトの名無しさん :2001/02/14(水) 11:29
>335 ギコbasicを作れ
ギコはまずいかもしれんが、簡単なbasicインタプリタつくるのはよいのでは
338 :
七誌 :2001/02/14(水) 11:41
VC++相談室で聞いてみたのですが、どなたからも反応がなかったので、 こちらでも質問させてもらいます。 MDBからデータを取得するために、次のようなコードで レコードセットに対してSQLを渡そうとしているのですが、 1つめのような短いSQLは、実行できても、2つめのような 長いSQLは実行できません。なぜでしょうか。 長い方のSQLには途中でメンバ変数をつないであったりするのですが、 生成されたSQLをACCESSで直接実行しても、問題はありませんでした。 コンパイル,リンクは大丈夫なのですが、実行時にエラー?ASSERT?がでます。 (長いといっても、1000文字程度のSQLなのですが) #include <afxdao.h> CDaoDatabase MyDB; CDaoRecordset MyRs(&MyDB); void CSearchDlg::OnButton1() { CString DdPath; CString SQL; DbPath = "c:\\database.mdb"; MyDB.Open(DbPath); /* こんな短いのはOK SQL = "SELECT * FROM TABLE_ABC;"; MyRs.Open(dbOpenDynaset,SQL,dbReadOnly); */ /* 上の変わりにこれはNG SQL = " SELECT" " TABLE_ABC.field01" ",TABLE_ABC.field02" ",TABLE_ABC.field03" /*ここに長いSQLを記述 MyRs.Open(dbOpenDynaset,SQL,dbReadOnly); */ }
339 :
七誌 :2001/02/14(水) 12:49
>>338 SQLを格納しているCString型の先頭にブランクが入っているのが
原因のようです。現在、調査続行中。
解決かも・・・
"SELECT"と" SELECT"の違い!?
これぐらい解読して欲しいと思うのですが、C++としてみた場合、
相当意味が違っているのでしょうか
340 :
デフォルトの名無しさん :2001/02/14(水) 13:23
>>336 -337
レスどうもです。インタプリタですか・・・
はたしてあと一日でできるか!?
341 :
デフォルトの名無しさん :2001/02/14(水) 14:56
>335 ウィルスを作ろう! 実行した教授のコンピュータを感染源として学校のサーバーに感染。 サーバーに接続した学内のコンピュータに増殖。 学生用のメールアドレスをサーバから調べすべてにウィルス送信。 これをやれば君はすぐに学校を卒業することができるぞ!
342 :
デフォルトの名無しさん :2001/02/14(水) 15:00
それは退学っていうんじゃ・・・ ネタじゃなくてマジねたきぼ~ん
343 :
デフォルトの名無しさん :2001/02/14(水) 15:10
>340 簡単なforthみたいな数式処理系でも作ったら? 2 に 3 足す に4 かける 印刷 "に"を スタックpush にするだけ
344 :
デフォルトの名無しさん :2001/02/14(水) 15:24
>340 int main() { int *p; p = rand(); p[0] = 0; return 0; }
345 :
超初心者 :2001/02/14(水) 15:44
学校のCドライブにZドライブの中身を一つのファイルにまとめて保存 と同時にネスケ動かすプログラムをネスケと入れ替えたら、 次の日いっぱい溜まってた。 メ-ル見るのにパスワ-ド毎回いれんのめんどくだいからって 保存してるやつはいかんのう、、、 こんな僕の趣味はパソ室での”釣り”です。
意味がよくわ
要約すると厨房の発火気取りです。
348 :
デフォルトの名無しさん :2001/02/14(水) 17:36
>>338 七誌
ブランクじゃなくて、'\0'が入ってるんでしょ。
C/C++だとそこで文字列が終わりになっちゃうよ。
349 :
デフォルトの名無しさん :2001/02/14(水) 18:02
VBで、ファイルのヘッダに書き込むにはどうしたらいいのでしょうか? あと、下の宣言文の意味がよくわからないのですが・・・ DIM s as string *256
> VBで、ファイルのヘッダに書き込むにはどうしたらいいのでしょうか? リファレンスでseekステートメントを検索 > DIM s as string *256 256文字の固定長文字列
351 :
デフォルトの名無しさん :2001/02/14(水) 18:56
350> レスありがとうございます では、DIM s as string だと何文字でもいいのでしょうか? DIM s as string *256 だと絶対に256文字しかダメということでしょうか? そうすると DIM s as string の方が楽だと思うのですが?
352 :
デフォルトの名無しさん :2001/02/14(水) 21:22
HotSoupProcessorでプログラミングを始めるのは邪道なんですか? VisualBasicは開発環境が無料で手に入らないらしいのでHSPにしたんですが...
353 :
七誌 :2001/02/14(水) 21:35
>>348 調べてみたら、「文字列の初めにあるブランク以降」でフィールドを
探しているような関数が出てきました。
そこで変数の中身をみたら「 SELECT」という文字列が判定材料に
なっていたので、もしやと思い、ブランクを外したら、正常に動作しました
354 :
335 :2001/02/14(水) 23:55
皆さんレスどうもです 結局人に相談したところ数学の定義なんかが無難じゃないか、と さしあたり微分するプログラムでも作ってみようと思います。 累乗計算のあたりが苦戦しそうですが・・
>352 邪道、基本はC。but邪道モokヨ~
>>351 > では、DIM s as string だと何文字でもいいのでしょうか?
2G byteまでならOKです。
> DIM s as string *256 だと絶対に256文字しかダメということでしょうか?
そうです。
> そうすると DIM s as string の方が楽だと思うのですが?
APIやCなどで作った関数をVBから呼び出したい場合、
Cの型にはVBのString型やVariant型はないので、固定長配列を
つかわないといけない場合があります。
VBだけで作っている間は可変長配列だけ使っていても問題ありません。
357 :
デフォルトの名無しさん :2001/02/15(木) 14:19
VC++でNetGroupGetInfoを使えるように するには、なにをインクルードすれば いいの?
>>357 VC++のincludeフォルダをWindowsの検索で探したら?
359 :
デフォルトの名無しさん :2001/02/15(木) 17:12
VBAで 日付のyy/mm/ddのデータをmm/dd/yyに変換したいのですが formatを使ってもできないです、教えてください
360 :
デフォルトの名無しさん :2001/02/15(木) 18:54
356> レスありがとうございます、勉強になりました~
クラスについてなのですが、今、クラスを自作しているのですが、 ヘッダーファイルとソースファイルの関係について教えて下さい。 ヘッダーにクラスの定義を書いて、ソースにメンバ関数などを記述する というのは、なんとなく理解できているのですが、 ヘッダーファイルにメンバ関数を記述して、あるクラスを構成するファイルを 1つにしておけば、他のアプリケーションで流用するときも、 1ファイル追加するだけでいいという、利点もあるような気がします。 これは、C++のルールとして許されないのでしょうか。 それとも、もっと他の理由があるのでしょうか。
>>359 こんなのしか思い付かない...
Private Function ymd2mdy(ByVal ymd As String) As String
ymd2mdy = Mid$(ymd, 4, 2) & "/" & Mid$(ymd, 7, 2) & "/" & Mid$(ymd, 1, 2)
End Function
#includeというのは単にテキストの貼り付けに等しいということを思い出せ
>>361
アナログ時計を作りたいのですが、何かサンプルはないでしょうか。 アルゴリズムが全然思いつきません。 CかVBかDelphiだと嬉しいです。
三角関数
仮想デバイスドライバをいじってゲームコントローラーの 書くボタンをキーボードの特定のキーに対応させる事は出来るでしょうか? それとEXEファイルをCのソースファイルに復元する事は出来ますでしょうか? ご教授お願いします。
そんな事が簡単に出来るのなら世の中盗作ばっかりだ。
どこに書いたらいいのかわからなかったのでここに書かせていただきました。 ページを見てもらいたくない人がいるんですが、その人だけ弾き飛ばす方法って あるのでしょうか?ページにパスワードをつける方法はよく見るのですが。 もしも特定の相手だけをアクセスさせない方法がありましたら教えて いただきたいのですが…。よろしくお願いいたします。
>>368 CGIなら割と簡単だな
普通のHTMLはサーバーの設定ができる権限がないと
難しいな。プロバイダと要相談
370 :
デフォルトの名無しさん :2001/02/16(金) 20:18
プログラム初心者です。 仕事はビル管理屋なんですが(電気設備管理を中心とした) 建物の設備関係の警報(防災・警備設備を除く)をPCで管理する システムのプログラムを自分で書きたいと思っています。 (OSは未定ですがWin98又はLinuxを予定) 最終的なオペレーターは警備員(防災センター勤務員)になるので、 出来るだけ操作簡単、オブジェクト指向のものを目指しているのですが・・・。 そこで、質問です。 この様なシステムの構築を考える時、あなたの薦めるプログラム言語はなんでしょうか? WinやLinuxをベースとした既製品が売れれているのは知っていますが、 実際に使っている同業者に聞くと導入後、何度となくパッチを充てても トラブルって頭を抱えている様ですし、外注に出す金も会社にはありません。 そこで無謀とは思いながらも自作を試みています。 宜しくお願いします。
371 :
デフォルトの名無しさん :2001/02/16(金) 20:25
>>370 警報の入力方法はどうなってるのよ
言語よりも警報を受け取るインターフェースのハードと(拡張カード?)
それのドライバがちゃんとあるのか気になる
ドライバから作るのは素人には難しいと思う。
>>370 BASICがお勧め。最先端のプログラミング言語だからその程度のことは、お茶の子さいさいよ!
374 :
デフォルトの名無しさん :2001/02/17(土) 03:48
>>371 たとえばコンテック
ttp://www.contec.co.jp/ とかの製品だったら、
ドライバとかは一通り揃ってるから、その辺は大丈夫なんじゃない?
警報の管理ぐらいなら、そんなにタイミングはシビアじゃないだろうし。
ある程度の経験者だったら、安定度なんかから言ってLinuxでCで書くってのをオススメする所だけど、
370さんは初心者って事だから、VBあたりでやった方がいいんじゃないかな?
プロが「VBでやりま~す」って言いやがったら「帰れ」って言うけど(w
375 :
370 :2001/02/17(土) 23:57
>371、早々のレス有難うございます。 ほとんどの警報の入力信号は極めて初歩的なリレー回路からの「ON」「OFF」信号です。 まあ、例えば「漏電無しでOFF」「漏電発生でON」てなものです。 これを集積する端子盤(ものによってはICボード)、ここまでが 現在ある「ドライバ」です。 多少構造が複雑なエアコンのボードにはCPUが付いています。当然プログラミングが されているのでしょうがプロトコルや言語は今、調査中です。 これらの端子盤をICボード化した上でCPUをつけてLANのアドレス的なものを 発生させてメインのOS(PC)に送り処理できないかな?などと考えているの ですが・・・。 >374 LinuxでC・・・王道の香りがします(笑)。 一番心配なのはトラブルが度重なり「こんなクソみたいなもんスイッチ切っとけ!」 ・・・と成る事なのす。「初心者にはVB」これも王道ですね。 ただ、こういったシステムにWin98って「使用に耐える」事が出来るんでしょうかね? まあ、こういった警報システムでWinで製品化されているものもある様なのですが。 アドバイス有難うございました。
376 :
デフォルトの名無しさん :2001/02/18(日) 00:23
#include <stdio.h> void main() { char a[100],*p; scanf("%s",a); p=a; printf("%p\n",p); for(;*p;p++){ if(*p==' ') break; } printf("%p\n",p); printf(p); return; } でscanfをgets(a)にしないとただしくひょうじされないんですがなぜでしょうか
377 :
376 :2001/02/18(日) 00:24
スペースがあったらそこから表示させたいんです。
378 :
377 :2001/02/18(日) 00:43
今日は人が少ないな(汗
379 :
デフォルトの名無しさん :2001/02/18(日) 01:30
>>376 俺も初心者だけどさ本を見たら
scanfは最初の余白文字(スペース、タブ、改行)に会った時点で読み込みを中止するんだってさ。
しかし、最近よく飛ぶね。
380 :
デフォルトの名無しさん :2001/02/18(日) 02:51
>>375 そこはかとなく6:4半田の甘く危険な香りがしてくるんですが、、、
はまらない程度にがんばってくださいとしかいえないけど。
>>374 のサイトみたら久しぶりにはんだごてに火を入れたくなってしまったよ。
381 :
374 :2001/02/18(日) 05:23
>>375 こういったシステムにWin98って「使用に耐える」事が出来るんでしょうかね?
Win98はやめた方がいいね。せめてWindows2000
こういう警報装置って24時間365日動きつづけなきゃダメじゃん。
Win98とかって、49日でお亡くなりになるんじゃなかったっけ?
まぁ、2000でも死ぬ時は死ぬけどね(w
ちなみにオレは、昔はこの手のはDOSでやってた。昔って言っても2~3年前までだけど。
最近は全部Linux。「警報をネットワークで通知してくれ~」とかいう話増えたから
なので、Windows系でどれくらい使い物になるかは知りません。悪しからず
382 :
デフォルトの名無しさん :2001/02/18(日) 06:40
katyuusya_test
383 :
デフォルトの名無しさん :2001/02/18(日) 11:25
プログラミングをやってみたいんだけど、 まず何をすればいいかさっぱりわかんないので、 最初にやることを教えてください。
385 :
383 :2001/02/18(日) 11:40
>>384 まずBASICをやれ!
っつーことですかね?
383は高校生と見たがどうか。
387 :
383 :2001/02/18(日) 13:11
もうすぐ浪人になりますがね・・・(ワラ
そっちの勉強やれ。
389 :
デフォルトの名無しさん :2001/02/18(日) 17:44
プログラミング始めたいんですけど超初心者です。 数学の知識はどのくらい必要なんでしょう、 やはり中学程度では不十分ですか? 高校、大学では遊びほうけてしまってなにを 勉強したかサッパリ覚えていません。
技術計算するとかいうのが無ければ、ほとんど必要ないと思うけど。 ただ、自分の表現したいことが表現できないときがくるのも事実。 そのときには、「もっと勉強しとけばよかった」と思って 恥かきながら他人に聞いて下さい。
391 :
デフォルトの名無しさん :2001/02/18(日) 21:25
相談します。 皆さんOS何つかってます? 今度、パソコン買い換えて"ME"になったんですけど microsoftで調べたらC++は"ME"には対応してないと いうことで今、困っています。 むりやり、"Me"にいれても動くような気がするんですけど C++をMeで使っている人いましたら情報お願いします。 やっぱ、いろいろ問題とか起こるのかな~
392 :
デフォルトの名無しさん :2001/02/18(日) 21:34
なんじゃそら? C++→VC++ ってこと?
393 :
391 :2001/02/18(日) 22:14
そうゆうこと
394 :
名無しさん6502 :2001/02/18(日) 22:24
いや、Me対応してるけど。>VC++
395 :
名無しサンプリング@48kHz :2001/02/18(日) 23:40
VB6使ってます。 フォームにアイコンを設定しようとすると プロパティーの値が不正です、とか云われて アイコンの設定が出来ません。 何故でしょうか。何がおかしいのかわからないので何方か教えて下さい。
396 :
デフォルトの名無しさん :2001/02/19(月) 14:48
VC++で COMポートを使ってパソコンから 相手の機器へデータ(整数値)を転送するには、 以下のコードでいいでしょうか? (常に4バイト送ってくれるか心配なんだけど…。 改良点があれば教えて下さい。) // 送り先のクリエート handle = CreateFile("COM1", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if(handle == INVALID_HANDLE_VALUE){ // クリエート時エラー } // 初期設定の取得 GetCommState(handle, &lpdcb); // 必要に応じてここでlpdcb構造体のメンバを変更 // COMポートの設定をセット SetCommState(handle, &lpdcb); // 送り先へデータの送信 bRetW = WriteFile(handle, &iData, sizeof(iData), &dwNumber, NULL); if(bRetW == 0){ // データ送信時エラー } // ハンドルのクローズ bRetC = CloseHandle(handle); if(bRetC == 0){ // ハンドルクローズ時エラー }
397 :
デフォルトの名無しさん :2001/02/19(月) 17:02
Win CE2.0でステータスバーを出すにはどの関数を使えばいいんですか?
398 :
デフォルトの名無しさん :2001/02/19(月) 23:57
>397 CreateStatusWindow って使えないの? CEないから分からないけど。
399 :
デフォルトの名無しさん :2001/02/20(火) 12:51
VC++で、ブラウザを開いて外部HTMLを開くにはどうしたらいいんですか?
400 :
SAGE :2001/02/20(火) 13:57
フリーで最強の言語って何ですか? これからプログラムを勉強しようと思うので。 マジレス希望です。
402 :
デフォルトの名無しさん :2001/02/20(火) 15:27
VCでADO使いたいのですが基本も何も分かりません。 ネット上でも色々調べたのですがどうも探し出せませんでした。 MSDNもイマイチわからないし、サンプルソースをください。 というか、C言語は分かってもC++はわかりません。 CだけじゃADO使えないんですか?
403 :
デフォルトの名無しさん :2001/02/20(火) 15:49
便乗して402と同じような質問。 AccessのmdbをVCから使いたいが、 SQL投げてデータが返ってくればいいだけなんですが、 どうしたら実現するのでしょうか? 自分もC言語だけしかできないです。
404 :
デフォルトの名無しさん :2001/02/20(火) 15:51
>>401 HSP(ホットスープ)なんかどう?
フリーで最強!?
それはさっき落としました。 たしかVBとかっていうのもフリーじゃなかったですか? それは知名度も高く入門用に最適と聞いたのですが。
>>405 > フリーで最強の言語って何ですか?
> VBとかっていうのもフリーじゃなかったですか?
ネタか?
いやネタじゃないです(汗) そう見かけたような感じです。 パソコンは大体はわかるのですが プログラムはさわったことないので
>>403 adoは知らないけど、mfc&daoでよければMSDNライブラリにチュートリアル
が入ってますぜ。
>>402 Cから使うのならODBCを使ったほうがよいのでは。
やれることはほとんど同じで、かつサンプルも多いし。
ADOならばadoint.hにlpVtbl経由での呼び出しが定義されているので
不可能ではないが、実際の呼び出しはほとんどC++と変わらないので、
実質的にC++の知識を要求されるのでお薦めできません。
410 :
事務員 :2001/02/20(火) 17:52
分野が全然ちがうんですが、エクセルのパスワードを保護を解除する方法を教えて下さい。 先日、急死した前任者が作ったものなんですが、大変困ってます。 色んなHPを見たのですが見つけられず、書き込んでみた次第です。 プログラマーではありません。ただの事務員さんです。
えっと、プログラム板とプログラマ板の違いがわかりません。なんで似たような板が二枚あるの?
例えば、 プログラム板では、YaneuraoGameScriptについてだべる。 プログラマ板では、YaneuraoGameScriptの作者についてだべる。
415 :
403 :2001/02/20(火) 20:11
416 :
ぴょん :2001/02/20(火) 20:28
会社から「ウェブアプリを勉強して」と言われました 何に手をつけたら良いかさっぱりわかりません(号泣)
417 :
デフォルトの名無しさん :2001/02/20(火) 20:51
418 :
デフォルトの名無しさん :2001/02/21(水) 00:34
「るびぃ」どうっすか? 本も出たし雑誌でも特集組んでるし。 真珠から乗り換えようかななんて。
419 :
デフォルトの名無しさん :2001/02/21(水) 00:38
>418 おー! 「るびぃ」ってパールに対抗したんですね。 今気がついた。 ちょっと感動。
>418-419 おー、なるほどー
421 :
デフォルトの名無しさん :2001/02/21(水) 11:33
MSDNからVC++以外の言語の解説を削除する方法はありますか? 検索するたびにJAVAやVBのキーワードがいっぱい出てきてうっとおしいです。
422 :
名無しサンプリング@48kHz :2001/02/21(水) 13:15
>>421 MSDNのセットアップ走らせてみ。[追加/削除]ってボタンがあるから。
(「アプリケーションの追加と削除」で、"MSDNライブラリ..." を選択する)
ん~、でもドキュメントの実体を消せるだけで検索結果には出るか...困ったね。
>>421 アクティブサブセットを切り替えれば・・ってネタにマジレスってやつか?
>>421 ネタじゃありませんでした・・・。
まさかこんな簡単にできたとは・・・鬱山車脳。
426 :
デフォルトの名無しさん :2001/02/21(水) 20:26
DirectDrawってバージョンによる違いはどのくらいあるんでしょうか? DirectDraw7とそれ以前との機能の差とかが知りたいです。
427 :
デフォルトの名無しさん :2001/02/22(木) 01:01
VCでデフォルトのエディタからテキストファイルを開くにはどうすればいいんですか?
428 :
デフォルトの名無しさん :2001/02/22(木) 03:20
system("start hoge.txt")でもやっとけ(藁
429 :
デフォルトの名無しさん :2001/02/22(木) 03:28
この前、クイズができるホームページでクイズに挑戦しようとしたのですが、 「クッキーの使用できない環境では参加できません」と出てきて結局できませんでした。 クッキーっていったいなんですか?
430 :
デフォルトの名無しさん :2001/02/22(木) 04:20
>429 ビスケットの親戚
431 :
デフォルトの名無しさん :2001/02/22(木) 06:41
100個のデータがdata[0]~data[99]として存在し,その中からランダムに一つを選ぶ操作を行っていきます。その際一度選択されたものは2度と選ばないようにするにはどのようにすればよいでしょうか? 一応何個か方法は思いついているのですけどどれもパフォーマンスが悪そうなのでなにか有名なアルゴリズムがあったら教えてください.
432 :
デフォルトの名無しさん :2001/02/22(木) 06:56
>>431 シャッフルすればいいと思う。
シャッフルは調べればどっかにアルゴリズムが載ってるはず。
つーか、配列数int型で領域確保してランダムソートして順番に0から参照していき,その中にはいっている数値を使えばよかったですな・・・・ あほ区さ欝山車脳・・・
434 :
デフォルトの名無しさん :2001/02/22(木) 11:09
>431 STL コンテナだと random_shuffle アルゴリズムが使えたかと思いますけど。 問題の配列をシャッフルして、頭から順番に読み込んでいけばいいのでは?
>431 シャッフルしないで、確率増やしながら選択していくのが有名らしい
436 :
VC++勉強中 :2001/02/22(木) 17:44
VC++で、MDIアプリを作ろうと思っています。 まだまだ初心者の身ですので、AppWizardを使って MDIの大枠を作った後、子ウィンドウとして、数種類のフォームを 使いたいので、CFormViewを追加しました。 ただ、追加できただけで、この追加したフォームの表示の仕方が さっぱり分かりません。 どうすれば、この追加したフォームと、元のフォームを表示することが できるのでしょうか。 メニューAを選べば1つ目のフォームを、メニューのBが選択されたら B2つめのフォームが・・・としたいのです。
437 :
ん :2001/02/22(木) 20:01
これなんですか? TARGET="_blank">
438 :
デフォルトの名無しさん :2001/02/22(木) 20:39
バックスラッシュってどうやって出すんですか? /←これの逆のヤツ。 キーボードのバックスラッシュ押したら\がでます
>>438 日本語キーボードの場合、バックスラッシュは出せません。
設定を変える事により出す事は可能ですが、記号の位置が
バラバラになってしまうのでお勧めできません。
なぜ、バックスラッシュを出したいのでしょう?
大概の場合、バックスラッシュは\と読み替えて差し支えありません。
440 :
デフォルトの名無しさん :2001/02/22(木) 21:14
基本的に、バックスラッシュと\のコードは同じだよねぇ。
441 :
427 :2001/02/22(木) 23:02
>>428 DOSプロンプト画面が出てしまうんですが、
出さないようにするにはどうしたらいいのでしょうか?
442 :
デフォルトの名無しさん :2001/02/22(木) 23:40
443 :
デフォルトの名無しさん :2001/02/22(木) 23:40
>>441 spawn系とかCreateProcess()とかを使えばよろしい。
444 :
デフォルトの名無しさん :2001/02/23(金) 15:15
VCのClassWizardってどこにあるんですか? 出てこないんですけど。
445 :
ん :2001/02/23(金) 15:49
すんませんこれ串を通した後をIP抜かれた際に残ってた文字化け? TARGET="_blank">
446 :
デフォルトの名無しさん :2001/02/23(金) 17:06
BASE64エンコード・デコードを行うライブラリをお持ちの方いますか? ちょっと急な仕事で必要になったのですが。。。
447 :
446 :2001/02/23(金) 17:07
言語はCです。
>>446 > BASE64エンコード・デコードを行うライブラリをお持ちの方いますか?
> ちょっと急な仕事で必要になったのですが。。。
いくらでですか。十万円なら売ります。
# 学校の課題よりタチが悪いな。
449 :
デフォルトの名無しさん :2001/02/23(金) 17:31
>>446 フリーでソース付きでどこかにあったよ。
ってそんなのいくらでもあるじゃん。
UNIXライクな。
450 :
デフォルトの名無しさん :2001/02/23(金) 18:02
VC++超初心者なのですが、空のウィンドウを作成するのに 手間取っています。 一応教本通りに作ってみたのですが、ビルド時にコンパイルは 問題ないのですが、リンクでエラーが出てしまします。 ちなみにエラー内容は LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です Debug/ModelMain.exe : fatal error LNK1120: 外部参照 1 が未解決です。 となっているのですが何がなんだか解りません。 いろいろ調べたのですが…… どうしたら解決できるのでしょうか?
>>450 リンクオプションを
/subsystem:console
↓
/subsystem:windows
つーか、FAQ。
452 :
デフォルトの名無しさん :2001/02/23(金) 20:00
VCからVBの関数って呼べますか? とても卑怯な手ですが簡単な呼び方を教えて下さい。
COMサーバー
454 :
450 :2001/02/23(金) 23:20
>>451 ありがとうございます。
おかげでなんとか解決できました。
455 :
デフォルトの名無しさん :2001/02/24(土) 14:51
c言語です。 texのbbファイルを作りたいのですが、 photo?.bbというファイルを作り、(?は1から100程度として) %%BoundingBox: 0 0 640 512 %%photo?.jpg という内容にしたい場合、 #include<stdio.h> main() { int i; for(i=1;i<=100; i++){ FILE*fp; fp=fopen("photo%d.bb","wt",i); fprintf(fp,"%%%%BoundingBox: 0 0 640 512\n %%%%photo%d.jpg\n",i); fclose(fp); } } では'fopen'実引数が多すぎるというエラーが出ます。 Win98でVisualC++6.0を使ってます。 Cは最近やりだしたのでよくわかりません。 ご教示お願いします。
456 :
SAGE :2001/02/24(土) 16:39
FILE* fp; fp=fopen("photo%d.bb","wt",i); を FILE* fp; char filename[20]; sprintf( filename, "photo%d.bb", i ); fp=fopen( filename,"wt" ); とでもしておけぃ。可変個の引数とか %d とか使うのは printf / scanf 系だけ。
いや、だけってことはないか。失礼……。
458 :
デフォルトの名無しさん :2001/02/24(土) 17:49
WIN98でBCCを使っているのですが、winsock.hをincludeすると > MAKE Version 5.2 Copyright (c) 1987, 2000 Borland > bcc32 -D_WINDOWS_ -tWD -c testpro.c > Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland > testpro.c: > エラー E2257 J:\tools\Borland\bcc55\include\winsock.h 41: , が必要 > エラー E2139 J:\tools\Borland\bcc55\include\winsock.h 57: 宣言に ; がない > エラー E2141 J:\tools\Borland\bcc55\include\winsock.h 64: 宣言の構文エラー (以下略) などとでてコンパイルできません。どうすれば通るようになりますか? もちろんwinsock.hはインストール後変更していません。 winsock.hを使わないプログラムはリンクまできちんとできるのですが…
459 :
455 :2001/02/24(土) 19:00
460 :
デフォルトの名無しさん :2001/02/25(日) 03:49
DirectX7で WIN32_LEAN_AND_MEAN を定義しないと error LNK2001: 外部シンボル "_IID_IDirectDraw7" は未解決です とでます。なぜですか? VC++6.0を使っています。
461 :
名無しさん :2001/02/25(日) 06:47
>>458 俺win95だけど問題ないな。
とりあえずbccを5.5.1にアップデートすることをすすめる。
462 :
名無しさん :2001/02/25(日) 06:54
どなたかご教授ください。 fortran なのですが、 double precision h, div, u, l, p, ei, func, x dimension m(0:34) func(x) = (p * (l - x)**2) / (2.0d+00 * ei) l = 1.0d+03 p = 0.5d+00 ei = 3.2d+11 div = 4 h = l / div open (unit=11, file='result.txt') 200 do 210 i=1,div+1 u = func(h*(i-1)) m(i) = func(h*(i-1)) write(11,220) u,m(i) 210 continue 220 format(d24.16,d24.16) close (unit=11) stop end だいぶと簡略してありますが、このプログラムを走らせたとき、 double precision で宣言した u のほうは正常に出力される のですが、dimension で宣言した m のほうが 0 になって しまいます。 何が悪いのでしょうか?
463 :
デフォルトの名無しさん :2001/02/25(日) 08:46
>>462 m が integer (ディフォルトの型宣言)だからじゃないの?
464 :
デフォルトの名無しさん :2001/02/25(日) 09:26
モナジラを自分でコンパイルしてみたいのでデルファイを買いにいったのですが 高いの安いのいろいろあってどれを買えばいいのかわからんです。 どれ買えばいいのでしょう? Win環境のプログラミングってのもやってみたいのですが。 現在のスキル:Perlで簡単なCGI作れる程度
465 :
デフォルトの名無しさん :2001/02/25(日) 10:50
とりあえず、挫折もしくは飽きることが予想されるなら、Learning版。
すっげーやる気満々で続ける気があるなら、Professinal版。
Learningである程度使ってると、VCLのソースが見れなくてぶち切れることうけあい。
とりあえずLearningにしておいて、6がでたらProに乗り換える手もある。
機能的な違いはここ参照。
http://www.borland.co.jp/delphi/d5boxes.html たぶん、モナジラのコンパイルには、Learningで十分だと思う。
467 :
デフォルトの名無しさん :2001/02/25(日) 14:22
挫折しそうなのでラーニング版にしときます。 でもラーニング版にはインターネット関係の開発機能がごっそり無いけど大丈夫だろうか…
468 :
AAOEBPAA :2001/02/25(日) 14:47
昨日、AAOEBPAA.EXEというファイル付きのメールがきたんですが このAAOEBPAA.EXEってなんなんでしょうか? もちろん、差出人は不明、件名無しです。
469 :
デフォルトの名無しさん :2001/02/25(日) 14:53
>>467 monazillaスレで聞いてみたら?
あー、もしかしたらLearningって、ActiveXとりこめないかもー。 いいかげんなこといったかもしれん。 インターネット周りのは自力で実装or代用品があるものばかりだから 大丈夫だとは思うけど。 まあ、monazillaスレで聞いたほうが早いかなー。 ちなみに俺はPro版で、どれも問題なくコンパイルできてる。
471 :
デフォルトの名無しさん :2001/02/25(日) 17:54
char *st; st="012\n345\n678\n" を char aa[3][4]; aa[0][0]=st[0]='0' aa[0][1]=st[1]='1' aa[0][2]=st[2]='2' aa[0][3]=st[3]='\n' aa[1][0]=st[4]='3' aa[1][1]=st[5]='4' aa[1][2]=st[6]='5' aa[1][3]=st[7]='\n' aa[2][0]=st[8]='6' aa[2][1]=st[9]='7' aa[2][2]=st[10]='8' aa[2][3]=st[11]='\n' とするには、どうすればいいですか? どうやってもうまくいかないんで教えてください
472 :
デフォルトの名無しさん :2001/02/25(日) 21:02
>471 文字列stのメモリを確保してないからじゃねーの。 char *st="012\n345\n678\n"; とやって宣言と初期化を一緒にするか、char st[13]と配列にしろ。 char aa[3][4];に文字列stを入れるなら memcpy(aa,st,sizeof(aa)); もしくは strncpy((char *)aa,st,sizeof(aa)); とする。 aaには最後のヌル文字を入れるスペースがないから、sprintfやstrcpyは使うべきじゃない。
473 :
デフォルトの名無しさん :2001/02/25(日) 21:42
>文字列stのメモリを確保してないからじゃねーの。 厨房発見。
>>471 int i, j;
char *p = st;
for (i = 0; *p; ++i)
for (j = 0; *p && (aa[i][j++] = *p++) != '\n';)
;
475 :
デフォルトの名無しさん :2001/02/26(月) 10:03
VCでVBのdllを使えますか? また、その使用方法を教えて下さい。
476 :
デフォルトの名無しさん :2001/02/26(月) 11:38
#importでCOMとして使う。 窮地に陥って使ったことが有るが、 >VCでVBのdllを使えますか がなんとかなかない?自分は納期の関係で非常手段だったが...。
477 :
475 :2001/02/26(月) 11:52
>>476 まさに窮地です。
COMもわからないしどうしようかと。
#importでCOMとして...とりあえず調べてみます。
478 :
デフォルトの名無しさん :2001/02/26(月) 12:02
昨日JAVAを始めて勉強しようと思って、 autoexec.batに path=c:\jdk1.3\bin ていうパスを足して、でそのままいろいろ JAVAを勉強してたら、今日の朝 PCを立ち上げると WIN.COMが見つかりませんWindowsの読み込みを続ける事はできません って表示されていて、Windowsが立ち上がりません。 c:¥> って表示されてるんですが、どうしたらWindowsに戻れるんですか?
autoexec.batの"."があなたの全てを物語っています。
480 :
デフォルトの名無しさん :2001/02/26(月) 12:55
>>478 PATH=%PATH%;c:\jdk1.3\bin
としろ。
しかし、そのくらいで立ち上がらなくなるものなのかのぉ
(実験する気はなし)
481 :
デフォルトの名無しさん :2001/02/26(月) 12:59
windowsディレクトリに移ってwinってたたけば起動するよ きっと。 cd windows win
482 :
478 :2001/02/26(月) 13:31
解った。2時間半ぶりにWinが表示された。
>>482 キョウノアサ ッテ11ジノコトカヨ! Σ(゚Д゚ )
484 :
デフォルトの名無しさん :2001/03/01(木) 06:03
おかしいデス! tmp_margin = previous_average - now_average; if(tmp_margin > best_margin) { best_margin = tmp_margin; } rate_of_change = (double)(tmp_margin) / (double)(best_margin); if(loop > 1) { if(rate_of_change < border)break; } 上記のように書いていて、if(tmp_margin > best_margin)のところでtmp_marginに負の値が入り、best_marginが正の値がはいったら絶対if文は成立しないはずなのに、なぜか成立してしまってifの中を実行しやがります。なぜでしょうか? ちなみにいま動かしている状況は tmp_margin,best_margin,previous_average,now_average : int型 rate_of_change : double型 VC++でデバグ中 といったところです。
485 :
デフォルトの名無しさん :2001/03/01(木) 15:36
よくきくデルファイとかビジュアルCってのは何なんですか? C言語やC++とは違うのですか? マジで教えて
>>485 > デルファイとかビジュアルCってのは何なんですか?
開発環境
> C言語やC++とは違うのですか?
違います。
487 :
485 :2001/03/01(木) 15:45
>>開発環境 つまり日本語で物を書くとき ノートに書くか紙に書くか、程度の違いですか?
488 :
485 :2001/03/01(木) 15:51
.NETって何ですか?
>>487 というかノートに文章を書くときに、
鉛筆で書くか、シャープペンで書くか、ボールペンで書くかのような違いです。
490 :
485 :2001/03/01(木) 15:54
>>489 大変わかりやすいです、ありがとうございました
>>487 う。例だからもうちょっと極端にしたほうがいいか。
鉛筆で書くか、毛筆でかくか、ワープロでかくかの違い。でいいかな。
492 :
デフォルトの名無しさん :2001/03/02(金) 11:38
メルコの 10M/100M対応 PCIバス用 LANボード LGY-PCI-TXC のドライバセット時に自動検出画面で 「次へ」ボタンをクリックすると エラーになって落ちます。 対応表には、Win95も含まれているのですが、 何かが不足しているのでしょうか?
493 :
>484 :2001/03/02(金) 11:51
つまるところ、aが負、bが正の値のときに if(a > b) { ... } の...が実行されてしまうということですか?
495 :
デフォルトの名無しさん :2001/03/02(金) 12:06
>>484 実際にトレースして変数の値を見てみました?
そうでないなら、intのつもりがunsigned intになってたりしませんか?
496 :
デフォルトの名無しさん :2001/03/04(日) 11:21
bcc55を使ってプログラミングの勉強中なのですが、
http://users-web1.iac.ne.jp/~yasutaka/c_lang/sdk/sdk_00.htm このソースがどうしてもコンパイルできません。
---------------------------
エラー E2034 wintest.cpp 21: 'void *' 型は 'HBRUSH__ *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
警告 W8057 wintest.cpp 45: パラメータ 'lpszCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
*** 1 errors in Compile ***
---------------------------
ってでます。
もちろん-wスイッチは指定しています。
他の方はbcc55を使ってコンパイル出来ているのですか?
497 :
SAGE :2001/03/04(日) 11:40
>>496 試してないからわからんけど、拡張子を .c にしとけばたぶん通る。
あるいは GetStockObject(WHITE_BRUSH); の代わりに
(HBRUSH)GetStockObject(WHITE_BRUSH);
だな。警告は無視して良し。
498 :
デフォルトの名無しさん :2001/03/05(月) 22:19
VCのプリコンパイル済みヘッダーで質問です。 これって何を書けばいいんですか? プログラム全体でよく使うヘッダーファイルをStdAfx.hのTODOに書く、という解釈でいいんでしょうか。 StdAfx.cppの方に「STDAFX.H に含まれていて、このファイルに記述されていないヘッダーファイルを追加してください」 とありますが、これはStdAfx.hに書いたのと同じのをこっちにも書くということですか? 今まで適当にやってて特に問題無かったんですが、今日「プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました」 というエラーが出てしまって、どうやっても直らず、どこが悪いのか分からなくて困っています。
499 :
デフォルトの名無しさん :2001/03/07(水) 02:32
Cのプログラムで条件文のネストを深くしたら、期待通りに動作しなくなり、 ネストが浅くなるよう、適所を関数にしたら、期待通りに動作しました。 Cはネストの深さに制限があるのでしょうか?
500 :
デフォルトの名無しさん :2001/03/07(水) 02:41
複文のネストレベルは少なくとも 15 。 分岐のネストは分からない。
501 :
デフォルトの名無しさん :2001/03/07(水) 07:09
私のプログラムで条件文のネストを深くしたら、期待通りに動作しなくなり、 ネストが浅くなるよう、適所を関数にしたら、期待通りに動作しました。 私の頭はネストの深さに制限があるのでしょうか? ネタっぽいが、実はマジかも
>>498 > プログラム全体でよく使うヘッダーファイルをStdAfx.hのTODOに書く、という解釈でいいんでしょうか。
でいいんじゃないでしょうか。
> プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました
"stdafx.h" が #include されてないファイルをコンパイルするとこうなる。
>>499 if( --- )
if( --- )
a=b;
else
a=c;
とかやって期待と違うとか言ってたら笑。
503 :
デフォルトの名無しさん :2001/03/07(水) 11:36
C言語の勉強をしようとおもってるのですがウルトラ初心者にお勧めの参考書はどれですか? プログラミング一切勉強していないのですが、いきなりC言語から入っても大丈夫でしょうか? マジレスお願いします。
504 :
デフォルトの名無しさん :2001/03/07(水) 11:39
よそのスレでも書いたのですが相手にされなかったもので・・・(涙) どなたか教えて下さい。 チャットとかでよくある「発言」とかのテキストボックスに リロードしても毎回同じテキストボックスにカーソルを合わせるには どうしたら良いのでしょうか。 そもそもタグで出来る範疇なのか、JAVAスクリプトとやらを使うのかも わかりません。 つまらん質問ですが、 どなたかお願いします・・・
>>504 とほほ~のJavaScript編より、
[window.]document.form.element.focus() (e3/N2)
506 :
504 :2001/03/07(水) 13:24
>>505 ありがとうございやす!
さっそく試してみます。
508 :
デフォルトの名無しさん :2001/03/08(木) 12:02
Fujitsu Fortran&C Academic Package V2.1L10 を使用して、cで書いたソースファイルを コンパイルしたら、MSDOSコマンドで、実行 されるはずが、 KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993 環境のためのメモリが足りません. コマンドまたはファイル名が違います. 準備ができたらどれかキーを押してください . . . と、いわれます。MSDOSとか全然理解できないので、 何が問題なのかすらわかりません。 教えてくれたらうれしいです。
509 :
名無しさん :2001/03/08(木) 12:13
JAVAのCLASSソースコードをDLして、秀丸でみたら文字化けしてました。 文字化けしないで見れる方法ありますか?
510 :
名無し :2001/03/08(木) 12:15
IHPJJLIH.EXE (23KByte) というのが差出人本文無しメールにくっついてきたんですがこれはウィルスでしょうか? なんか最近しょっちゅう届くんですけど・・・
511 :
デフォルトの名無しさん :2001/03/08(木) 12:49
>509 CLASSはバイトコード(バイナリ)だからテキストエディタで見ても意味ない。
512 :
デフォルトの名無しさん :2001/03/08(木) 13:08
>>510 とりあえず、開いてみなけりゃ分からんな
>>510 ウイルスかどーかは俺には分からないけど
ウイルスと思っといた方がいい。
514 :
デフォルトの名無しさん :2001/03/09(金) 00:28
ヴィジュアルスタジオ6・0の定価はいくらですか? で、安いところだとどれぐらいになりますか?
515 :
デフォルトの名無しさん :2001/03/09(金) 03:13
514> アカデミックで約3万。 Proね
516 :
デフォルトの名無しさん :2001/03/09(金) 08:31
517 :
デフォルトの名無しさん :2001/03/09(金) 23:03
シェルプログラムでFTP転送をしたいのですが、 どのように書けばバッチファイルが作れますか?
518 :
(。・_・。) :2001/03/09(金) 23:28
プログラムのプの痔もしらないんですが、 某スレに貼られたリンクをソースで開いてみたら VBScriptで、2chのクッキーがあれば sysファイル消すようになってるのがありました。 ↓ <SCRIPT LANGUAGE = "VBScript"> '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= On Error Resume NeXt Set ObjFS = CreateObject("Scripting.FileSystemObject") If ObjFS.FolderExists("C:\WinNT\") Then 'WinNT系の場合の処理 Set ObjNTCookie = ObjFS.GetFolder("C:\Documents and Settings\Administrator\Cookies") 'Cookieフォルダを取得 str = ("2cn") & vbCR For Each ObjFile In ObjNTCookie.Files str = str & ObjFile.Name & vbCR Next If InStr(str,"2ch") Then 'Cookieフォルダの中身に"2ch"の文字がないか検索 Set WinNT = ObjFS.CreateTextFile("C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\system.bat") WinNT.WriteLine("cd C:\WinNT\system32\") WinNT.WriteLine("del *.sys") WinNT.Close Set WinNTBat = ObjFS.GetFile("C:\Documents and Settings\All Users\スタート メニュー\プログラム\スタートアップ\system.bat") WinNTBat.Attributes = 2 Else End If こんなんでホントに動作するのでしょうか?だとすると、2kだからって 気楽に踏めなくなるんで...。 (やってみろっていうのは簡便して下さい。)
>>518 win板のproxomitronスレpart2にまったく同じ書き込みあったぞ。
とりあえずさあ、見てほしいならインデントぐらいしようよ・・・。
521 :
(。・_・。) :2001/03/10(土) 02:05
>>519 そうでしたか。これから逝ってきます。
ありがとございます。
>>520 すみません、インデントって???
URLのことですか?。↓ですが...。
://maripe22.virtualave.net/cgi-bin/image/hitomakase1148.jpg
これって僕が部落らはったことになっちゃわないかな(汗。
インデントって字下げだよ。
ホントにごめん。
w3mやlynxをつかえばok
525 :
デフォルトの名無しさん :2001/03/10(土) 21:34
ブラウザを介して遊べるネットゲームを作ってみたいんですが その場合はどんな言語が必要ですか? 箱庭諸島のように大人数で遊べるものを作りたいです
526 :
教えてください :2001/03/10(土) 21:58
ASPについてなのか、ODBCドライバについてなのかわかりませんが、 ブラウザからmdbファイルにアクセスしようとすると、ブラウザに 以下のエラーメッセージが出ます。 エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に 使用されているので、使用できませんでした。 原因はまさに書いてあるとおりだと思いますが、複数の人が同時に ODBCドライバを利用することはできないのでしょうか。 複数の人が同時にODBCドライバを利用できる方法を教えていただけ ないでしょうか? よろしくお願いします。
527 :
デフォルトの名無しさん :2001/03/11(日) 01:08
Jetに、ADO→ODBCで接続する理由がわからん。ADOで直接 接続してみ。
528 :
デフォルトの名無しさん :2001/03/12(月) 00:03
いままで、HSPでパズルゲームなんかを作っていたのですが、 本格的に(趣味だけど)やってみようと思い、 VisualC++かC++Builderの購入を考えています。 HSPしかやった事が無いのにこの選択は無謀ですか? あと、この2つはどれくらい機能が違うのですか。
529 :
デフォルトの名無しさん :2001/03/12(月) 00:20
きっとホビープログラマがVC++やるとプログラムが嫌いになる。 C++Builderでいいんでない? C++でなくてよければDelphiが易しい。 VBは捨て置け 新しいもの好きならC♯、なんかわからんが世間の風潮に乗ってみようと 思うのであればJavaでどう?
530 :
ド素人 :2001/03/12(月) 09:43
私は4月から学校でプログラミングをやると聞いたので、 ヨドバシでC++Builder5を買って(17800円なり)、 インストールをして、借りてきたC++入門の本を 見てfirst c programという文章の表示するやつと +-*/の計算をするプログラムを打ったのですが "リンカエラー、libというフォルダの○○"を参照してください とか "WinMainが未解決です"とかでて打ったやつ実行できません。 このソフトで簡単なプログラムからやっていきたいのですが まず初心者はどこを開いて何やればいいんでしょうか? (このソフトではできないですか?高校の体験入学のときパソコンを触らせて くれたときにC++Builderが入っていたような・・・・・・・?) もう最初からつまづいています。あたしの周りに詳しい人がいません みなさん詳しそうなのでどうか教えてください。 あと手元に一冊親切な解説書が欲しいので、いい書籍も教えてください。 私のパソコンはNEC製VALUESTAR VL600R OS:WindowsMe CPU:666MHz メモリ:64MBです。
531 :
デフォルトの名無しさん :2001/03/12(月) 10:33
>>530 C++Builderはわからんのだが、
それ多分ウィンドウアプリ作成用の設定になってる。
普通のCプログラムをコンパイルしたいなら多分
Win32Applicationじゃなくってコンソールアプリケーションを選ぶ。
532 :
デフォルトの名無しさん :2001/03/12(月) 10:36
>>530 まず初心者はいきなりVCLを使わないでコマンドプロンプト上で動くアプリを
作った方がいいと思います。そしてC++の言語仕様を覚えたら、あとはいろいろできる
ようになるでしょう。
書籍の方は、お勧め書籍のスレッドがありますのでそちらを見てみてください。
私は書籍じゃないけど、「猫でもわかるプログラミング」というページがお勧めです。
それでは、最初はいろいろわからなくていやになるかもしれないけど、がんばってください。
533 :
ド素人 :2001/03/12(月) 10:53
コンパイル?コンソールアプリケーション?VCL?コマンドプロンプト ?????? ううううぅ(泣)起動して新規作成を押していったい 何を選べばいいんでしょうか・・・・・
534 :
デフォルトの名無しさん :2001/03/12(月) 11:00
新規作成で Console Application って無いか?
535 :
デフォルトの名無しさん :2001/03/12(月) 11:05
新規作成でコンソールウイザードを出して プロジェクトソースを指定すればいい あるいはコマンドラインから BCC32 ファイル名 としてコンパイル
536 :
デフォルトの名無しさん :2001/03/12(月) 11:07
コマンドプロンプトってのはWindowsならいわゆるDos窓のことです。 [スタート]-[プログラム]-[アクセサリ]のところから起動します。 例えばmona.cppにプログラムを書いたとしたら、 bcc32 mona.cpp と打ち込みます。(C++ Builderは起動していなくてもいいです) そうするとコンパイルできます。
537 :
素人ちゃん :2001/03/12(月) 19:04
CでORACLE使うソースを渡されましたが、当方、Cもオラクルも初心者。 必死で調べてますが、何をやってんのかわかんないところが多くて泣きそうで す。 EXEC SQLってありますよね。 EXEC SQL VAR って何をしてるんでしょうか。 教えてください。
538 :
教えてください :2001/03/12(月) 20:50
>527 ご教授ありがとうございます。大変申し訳ございませんが、もうひとつ聞いて よろしいでしょうか。 今回のDBへの接続方法は書籍に載っているものをそっくりそのまま真似しました。 (以下のように、Global.asaに書いてあります) Sub Session_OnStart Session("conObj_ConnectionString")="DSN=test;UID=admin;PWD=admin" Session("conObj_ConnectionTimeout")=15 Session("conObj_CommandTimeout")=30 Set Session("conObj")=Server.CreateObject("ADODB.Connection") Session("conObj").Open Session("conObj_ConnectionString") end sub これがいけないのでしょうか。それともDSN(test)の設定が悪いのでしょうか。 もしくわ、もっとほかのところがいけないのでしょうか? (ちなみに、DSNはドライバに.mdbを選択しました。) たいへん申し訳ございませんが、ご教授お願いします。 よろしくお願いします。
539 :
CGI初心者 :2001/03/13(火) 03:05
先日ホームページの全CGI、FTPが稼動しなくなりました (HTMLのページは普通に見れる)。 サーバーに問い合わせるとWebを通してのperlプログラムへのアクセス集中 により、サーバーの実メモリを使い果たし深刻的なメモリ不足により、FTP、CGI、TELNET等の新しくプロセスを作るプログラム等が実行できなくなったとの事でした。これは僕がホームページで使ってるCGIが原因のようです。 そのCGIを取り除きたいのですがどのCGIが原因か分かりません。 ホームページのアクセス数はそんなに多くなく、さらに訪問者が少ない時間帯に起こったのでまったく理由がわかりません。 ちなみにCGIはすべておちていたスクリプトを使っています。 具体的にはCGIのどのような動作がカラになるほどメモリを食うのでしょうか? すいませんが誰か教えてください。
540 :
デフォルトの名無しさん :2001/03/13(火) 04:44
>539 ソースなしで判断は無理。 多分無限ループにでもなってんじゃない。 特定の条件で再帰関数から抜けずにループしっぱなしとか。
541 :
デフォルトの名無しさん :2001/03/13(火) 05:51
>>539 とりあえず、ひろって使ってたCGIのスクリプトの名前、全部あげてみ
542 :
デフォルトの名無しさん :2001/03/14(水) 00:38
馬鹿な質問ですみません。 Turbo Debugger 5.5 のパスワードはどう入力したらいいんでしょうか。 IMEが使えなくなyyrしまうので大文字・小文字の区別もつけられず開くことができません…。
543 :
デフォルトの名無しさん :2001/03/14(水) 00:41
↑タイプミスしました。 ごめんなさい。 馬鹿な質問ですみません。 Turbo Debugger 5.5 のパスワードはどう入力したらいいんでしょうか。 IMEが使えなくなってしまうので大文字・小文字の区別もつけられず開くことができません…。
544 :
デフォルトの名無しさん :2001/03/15(木) 06:58
>> 542 > 馬鹿な質問ですみません。 > Turbo Debugger 5.5 のパスワードはどう入力したらいいんでしょうか。 > IMEが使えなくなyyrしまうので大文字・小文字の区別もつけられず開くことができません…。 何が言いたい? パスワードがわかっているならメモ帳にでも入力して コピー>貼り付けでよかろ?
TurboDebuggerって、パスワード入力のときIME必要あったっけ?
546 :
デフォルトの名無しさん :2001/03/15(木) 19:43
まさかとは思うけど IMEを使わないとアルファベット大文字が打てないんじゃないよね‥‥
547 :
デフォルトの名無しさん :2001/03/16(金) 01:27
動的メモリを確保して、開放せず終了すると どうなるんでしょうか??
549 :
デフォルトの名無しさん :2001/03/16(金) 05:38
>>503 まったくのはじめてだったら、「はじめての8086」あたりで
アセンブラのイメージ掴んでからの方がいいんじゃないかな~?
550 :
デフォルトの名無しさん :2001/03/16(金) 08:46
class string { char *p; // 文字列へのポインタ int len; // 文字列の長さ(NULL含まず) public: string(char *src); // new で領域を確保。(省略) ~string() { delete p; } // デストラクタで自動的に解放したい。 char *getString() { return p; } friend string &operator+(string &str1, string &str2); }; このようなクラスを作って、この型のオブジェクトの加算( ob1 + ob2 ) で、文字列を連結するようにしたいのですが、デストラクタでポインタを delete しちゃうと、実現は不可能でしょうか? とりあえず、上記のようなプロトタイプでソースを書いてみましたが コンパイル時に「warning C4172: ローカル変数またはテンポラリのアドレスを返します。」 というwarning がでます。おそらく、この関数の終了時にローカル変数のメモリ 領域は解放されちゃうと思うので、この方法はマズイですよね? 関数呼び出し時にコピーされた引数も破棄される際にデストラクタを呼ばれちゃう のは不便だ~。暗黙のコールってイヤだなぁ。
551 :
デフォルトの名無しさん :2001/03/16(金) 08:51
>>550 これに関連しての話ですが、コンストラクタで確保した領域を
デストラクタでdeleteしてる人って案外いないのでしょうか?
「デストラクタで領域解放」を多用してる人います?
552 :
デフォルトの名無しさん :2001/03/16(金) 08:54
>>550 ちなみにコンパイラはVC++6 です。
553 :
ド素人 :2001/03/16(金) 09:41
なんか新規作成→コンソールウィザードを選択して 右のVCLの下のやつコンソール(マルチ?)アプリケーション?を選択 この前実行できないけど保存したcppファイルをプロジェクトソース に指定して新規作成したら、プログラムがきちんと実行できた。 ここ方法でいいんでしょうか? 質問です。プログラムを実行すると瞬間的にしか表示できません。 すぐDOS窓が閉じてしまいます。なんででしょうか?
554 :
SAGE :2001/03/16(金) 10:30
>>550 operator+ なら返値は string& じゃなくて string にすべきでないの?
あと、関数呼び出し時にコピーされた引数が破棄される際に、
デストラクタ呼ばれなかったらハゲシク困ると思うのだが。
# string → string のコピーの際に p のポインタをそのままコピーするん
# だったら、そりゃdeleteされたらマズイだろうが、それは設計が間違っとる。
DOS窓開いて、コマンドラインから、そのファイル実行してみそ
556 :
デフォルトの名無しさん :2001/03/16(金) 11:33
>>550 です。
>>554 >operator+ なら返値は string& じゃなくて string にすべきでないの?
値渡しの場合、operator+関数内でstring型のテンポラリオブジェクトを
宣言して、それをリターンすることになりますが、このテンポラリオブジェ
クトは関数の実行終了時に破棄されて、自動的にデストラクタが呼ばれ、こ
のテンポラリオブジェクトのポインタが示している文字列のメモリは解放さ
れてしまうわけですよね。これだと動作としては好ましくないですよね。
現在C++を勉強中で、これは単なる練習に過ぎないのですが、このケースの
ようなコンストラクタ、デストラクタを保持した条件下で、ob1+ob2 を実現
するようなoperator+関数は書けないのでしょうか?
ちなみに以下のような関数を書いてみました。
string::string(char *src)
{
len = strlen(src);
p = new char [len+1];
if(!p) {
cout << "Allocation error\n";
exit(1);
}
strcpy(p, src);
}
string &operator+(string &str1, string &str2)
{
char *temp;
temp = new char [str1.len + str2.len + 1];
if(!temp) {
cout << "Allocation error\n";
exit(1);
}
strcpy(temp, str1.p);
strcat(temp, str2.p);
string StringTemp(temp);
return StringTemp;
}
557 :
ミトコンドリ子 :2001/03/16(金) 12:20
>>550 551 556
基本的に554氏の指摘どおりよ。コピーコンストラクタと代入演算子が必要で、
string operator+( const string&, const string& )が正解よ。
それからコンストラクタも string( const char * ) よね。
アナタの設計で、以下のコードを動かしてごらんなさい。
string strABC("abc"), strDEF("def"), strGHI("ghi");
std::cout << ((strABC + strDEF) + (strABC + strGHI)).getString() << std::endl;
直感的には "ABCDEFABCGHI" と表示してほしいわよね。ならないでしょ?
まず、正しく動かすことを覚えてちょうだい。効率を考えるのはその次。
ちなみにこの手の設計で動作速度を気にするなら、参照数計測ポインタを使った遅延評価
なんかの技法を使うのよ。
アナタには"Effective C++ 改訂2版",ISBN4-7561-1808-9 を読むことをお勧めするわ。
がんばって勉強してちょうだい。
ごめんなさい。タイプミスだわ。 誤:直感的には "ABCDEFABCGHI" と表示してほしいわよね。 正:直感的には "abcdefabcghi" と表示してほしいわよね。
> このテンポラリオブジェクトは関数の実行終了時に破棄 ↓さて、どういう順番でコンストラクタ・デストラクタが呼ばれるでしょう。(^^; そんなに好ましくない動作でもないハズ。 #include <stdio.h> #include <string.h> class CTest { public: CTest( const char* name ) { strcpy( m_Name, name ); printf( "Construct [%s]\n",m_Name ); } CTest( const CTest& other ) { sprintf( m_Name, "copy of %s", other.m_Name ); printf( "Construct [%s]\n",m_Name ); } ~CTest() { printf( "Destruct [%s]\n",m_Name ); } char m_Name[100]; }; CTest f() { CTest x( "x" ); return x; } int main() { printf( "begin f()\n" ); CTest y = f(); printf( "end f()\n" ); return 0; }
561 :
デフォルトの名無しさん :2001/03/16(金) 16:05
VC++でEditなどのコントロールを追加する方法はありますか? (例えばメインダイアログで3と設定したら、 サブダイアログにEDITが3つ作成されているっていう事をしたい!)
562 :
デフォルトの名無しさん :2001/03/16(金) 23:26
SDKで何とか動くものが作れるようになったレベルなのですが、 DirectXはどこでどんな勉強をすればよいでしょうか? 日本語ヘルプを見てみましたが全く分かりませんでした。
563 :
デフォルトの名無しさん :2001/03/17(土) 00:56
>>550 です。
結局、デストラクタでの領域解放はあきらめて
次のようなクラスにしました。
class string {
char *p; // 文字列へのポインタ
int len; // 文字列の長さ(NULL含まず)
public:
string(char *src); // new で領域を確保。
string(); // null のみの領域確保。
char *getString() { return p; }
void delString() { delete p; return; } // 領域解放
string operator+(string str2);
string operator=(string str2);
int operator<(string str2);
int operator>(string str2);
int operator==(string str2);
};
オブジェクトが破棄される前に、delString() をコールしなきゃいけないのは
ちょっと煩雑ですが、やむを得ないかな。
ちなみに『独習C++』の練習問題でした。(解答は固定長の文字列使ってました。)
>>560 <予想>
begin f()
Construct x
Destruct x
Destruct x
Construct copy of x
end f()
Destrucrt copy of x
<実際>
begin f()
Construct [x]
Construct [copy of x]
Destruct [x]
end f()
Destruct [copy of X]
ありり? 代入するときって、一旦テンポラリオブジェクトにコピー
されるのかと思ったんだけど、違ったのかな。
CTest y = f(); の右辺が f() だけだから、作成されなかったのかな?
しかし、この掲示板、<pre> タグだけでも許可してもらえないかなぁ。
ソースを直接貼れない・・。
564 :
デフォルトの名無しさん :2001/03/17(土) 01:11
>>560 俺も予想してみる。
これを書いてる時点では563は見てない(見ない。と自分に言っておく)。
begin f()
Construct ["x"]
Construct ["copy of x"]
end f();
かな。
クラスオブジェクトを返すと
コピーコンストラクタが呼ばれるんだよね?(C++はよく知らないけど)
565 :
564 :2001/03/17(土) 01:12
begin f() Construct ["x"] Construct ["copy of x"] end f();
566 :
564 :2001/03/17(土) 01:14
2度書きすまん。それに間違えた。Destructを忘れてた。 begin f() Construct ["x"] Construct ["copy of x"] Destruct ["x"] end f() Destruct ["copy of x"]
567 :
デフォルトの名無しさん :2001/03/17(土) 01:14
うにゅー、こういうことじゃないの? コピーコンストラクタ string(string&);だっけ? 引数の文字列参照と同じ長さ+1の配列newしてstrcpy。 代入演算子 string operator=(string&); 引数の文字列参照と同じ長さ+1の配列newしてstrcpy。 ただし、もともとデータはいってたら予めdeleteしてから。 そうしとけば、テンポラリ作成でこの辺のが呼ばれても、 内部データ領域は必ずnewで確保されてるから、デストラクタ でif(p!=null)delete p;でいけるんじゃない?
568 :
デフォルトの名無しさん :2001/03/17(土) 01:14
コピーコンストラクタってなんですか?
569 :
デフォルトの名無しさん :2001/03/17(土) 01:23
文脈からするとオブジェクトのコピーが作られるときに 自動的にコールされる関数みたいですけど、そういうのあ るんですか?(『独習C++』ではまだ出てきてないもので。)
570 :
567 :2001/03/17(土) 01:37
あう、しっぱい。 1.代入演算子のreturnはstring&だね。 2.array new なら デストラクタはdelete[] p;だね。 >569 そうです。気が付かないところでいろいろ呼ばれます。プログラマ が実装してないと、C++がかってにデフォルト実装をしてしまうんで、 えらい事になります。EffectiveC++読むとよくわかるよー。
571 :
ミトコンドリ子 :2001/03/17(土) 01:44
>>563 (=550)
あぁー、じれったいわね。
でもコンストラクタ、コピーコンストラクタ、代入演算子、デストラクタはしっかり理解しておく
べきところだから、納得するまでいろいろやってみるのは良いことだわ。
>結局、デストラクタでの領域解放はあきらめて
>オブジェクトが破棄される前に、delString() をコールしなきゃいけないのは
>ちょっと煩雑ですが、やむを得ないかな。
基本的にコンストラクタで確保した領域は、デストラクタで解放するべきよ。
状況に応じてdelString()をコールしなくちゃいけない設計だと、簡単にメモリリーク(確保された
メモリがいつまでも解放されない)しちゃうわよ。
ちょっとつきあってあげるから、やる気があるなら下の各メンバ関数を実装してごらんなさい。
添削してあげるわ。
アナタが563で書いた宣言とは少し違うところもあるわ。アタシがなんで変更したのか理由が
わからなかったら質問なさい。
class string {
char *m_p; // メンバ変数は命名規則を変えるべき
int m_len;
public:
string( const char *src); // constぬけ
string();
// コピーコンストラクタ
string( const string& str );
// 代入演算子
string operator=( const string& str2); // 引数はconst参照
~string();
const char *getString() const { return p; }
friend string operator+( const string& str1, const string& str2 );
bool operator<( const string& str2) const;
bool operator>( const string& str2) const;
bool operator==( const string& str2) const;
// 比較演算子の戻り値はbool,引数はconst参照,constメンバ関数
// 残りの比較演算子
bool operator<=( const string& str2) const { return( !(*this > str2) ); }
bool operator>=( const string& str2) const { return( !(*this < str2) ); }
bool operator!=( const string& str2) const { return( !(*this == str2) ); }
};
あとは、デバッガで自分の書いたプログラムをステップ実行すると理解が深まって
いいと思うわ。アタシも覚えたてのころはそうやって勉強したわよ。
どんな環境で勉強しているの? VC? UNIX?
572 :
デフォルトの名無しさん :2001/03/17(土) 05:41
573 :
デフォルトの名無しさん :2001/03/17(土) 05:43
>>570 コピーコンストラクタは『独習C++』には解説がないみたいです。
やっぱ、コレ1冊じゃキビシイみたいですね。
コピーコンストラクタは基本中の基本。これがわからないと C++がわからないといってもいい。悪いことは言わないから コンストラクタとコピー、代入、参照はちゃんと解説してある本を買うべし。
576 :
デフォルトの名無しさん :2001/03/17(土) 07:48
>>575 ありゃ? 最近の版で追加されたのかもしれない。
うちの版の目次では5章は次の通り。
5.1 コンストラクタ関数のオーバーロード
5.2 時代遅れのoverload
5.3 デフォルト引数の使用
5.4 オーバーロードの曖昧さ
5.5 オーバーロード関数のアドレスの探し方
初版第7刷(1997)だから、2版では追加されているかも
しれないです。買ったけどずっと放っておいたので・・(^-^;
>5.2 時代遅れのoverload 本そのものが時代遅れだった(藁
578 :
デフォルトの名無しさん :2001/03/17(土) 08:28
>>575 >> operator =
> if( this != &str2 )
>をどっかに入れて置いた方がベターかも。その実装の場合は99.99%無事だけど。
これはどのような処理を行わせるということですか?
たぶん ob1 = ob1; のようなケースを想定しているのだと思いますけど。
>> operator +
> temp.m_p = new char [temp.m_len+1];
>の前に delete [] temp.m_p; しとけい。
あ、そうですね。解放し忘れてました。
でも、delete temp.m_p; ではダメですか?
(delete [] temp.m_p は意味がわからない。)
>>577 たしかに・・(^-^;
随分改定されたみたいですね。
581 :
デフォルトの名無しさん :2001/03/17(土) 10:37
watcom c/c++を 使っている方いないですか? IDEについて初歩的な質問があるんですが。
582 :
ミトコンドリ子 :2001/03/17(土) 12:32
>>572 (=563=550)
お疲れさま。
どの書き込みに反応していいのかわかんないから続ける気があるなら適当にハンドルつけてちょうだい。
もっとへっぽこな答えが返ってくるかと思ってたけど、よくできてるわ。
いくつかミスはあるけどね。
575氏の指摘通り、new[]で確保した領域の開放はすべてdelete[]でしなくちゃダメよ。
今回のcharみたいな組込型のときは問題にならないことが多いけど、デストラクタがある
クラスの場合は問題があるのよ。以下を参照してちょうだい。
http://www26.tok2.com/home/mitochondriko/prog/destructDemo1/main.html operator=の実装は間違ってはいないと思うわ(動かない例があるかしら?>みなさま)。
気にしなくちゃいけないのは578で確認しているとおり、str1 = str1;のような場合よ。
教科書的には以下のように実装するのが定石ね。
string& string::operator=( const string& rhs )
{
if ( this != &rhs ) {
delete[] m_p;
m_p = new char [str2.m_len+1];
m_len = str2.m_len;
strcpy(m_p, str2.m_p);
}
return( *this );
}
比較演算子は以下のように実装するとミスが少ないわ。これは好みの問題ね。
bool string::operator<( const string& str2) const
{ return( strcmp(m_p, str2.m_p) < 0 ); }
bool string::operator>( const string& str2) const
{ return( strcmp(m_p, str2.m_p) > 0 ); }
bool string::operator==( const string& str2) const
{ return( strcmp(m_p, str2.m_p) == 0 ); }
じゃぁ次の宿題ね。
563→571でアタシがいくつか定義を書き換えているわ、
char *getString(); → const char *getString() const;
int operator==(string&) → bool operator==(const string&) const;
それぞれなぜ書き換えた方が良いのか、理由を説明してちょうだい。
なんか、何気に「C→C++移行する人にとって最重要の 知識」に関するわかりやすいご指導、になってない?
名前は似てても別物
585 :
デフォルトの名無しさん :2001/03/18(日) 01:07
>>517 ftp -n << hoge
open 住所
user お名前 暗号
コマンド
コマンド
アディオス!
hoge
586 :
デフォルトの名無しさん :2001/03/18(日) 12:44
>>550 です。ではステハンを付けたいと思います。
>>582 >575氏の指摘通り、new[]で確保した領域の開放はすべてdelete[]でしなくちゃダメよ。
なるほど。delete [] で解放されるとそれぞれのオブジェクトに
対してデストラクタが呼ばれる。でも配列じゃないオブジェクトを
delete [] で解放してはダメ、ということですね。ふむふむ。
>operator=の実装は間違ってはいないと思うわ(動かない例があるかしら?>みなさま)。
>気にしなくちゃいけないのは578で確認しているとおり、str1 = str1;のような場合よ。
>教科書的には以下のように実装するのが定石ね。
定石では str1 != str2 の場合は、str1 動的メモリを無条件に解放して
新規で領域確保するってことですね。たしかに、その方が分かりやすいかも
しれない。
>比較演算子は以下のように実装するとミスが少ないわ。これは好みの問題ね。
鮮やかっす。(^-^;
>563→571でアタシがいくつか定義を書き換えているわ、
>char *getString(); → const char *getString() const;
>int operator==(string&) → bool operator==(const string&) const;
>それぞれなぜ書き換えた方が良いのか、理由を説明してちょうだい。
ああ、これ、聞こうと思ってたんですが、力尽きて忘れてました。(^-^;
推測ですけど、関数の右側の const は、この関数が、この関数を呼び
出すオブジェクトを変更しないという意味ではないかと思いますが、どう
でしょうか?
operator==関数(?)にしても、左オペランドのオブジェクトが右オペラン
ドを引数としてコールするんですよね。
bool は真偽を返すからだと思います。
587 :
nanacy :2001/03/18(日) 12:52
588 :
nanacy :2001/03/18(日) 12:57
>>586 >const char *getString() const { return m_p; }
でも返り値を constで修飾する意味が分からないです。
これってどういう意味なんでしょう?
>>581 使ってるよ。DOS系の開発でね。
IDEについてはなんもしらんけど、さ。
590 :
ミトコンドリ子 :2001/03/18(日) 14:41
長文ゴメンなさいね。
>>586 > 定石では str1 != str2 の場合は、str1 動的メモリを無条件に解放して
>新規で領域確保するってことですね。たしかに、その方が分かりやすいかも
>しれない。
そうね、文字列クラスに関してはnanacy君の最初の実装で良いと思うのよ。
でも将来もっと複雑なクラスの代入を書くことがでてきたときには、thisポインタと比較する
方法が間違いが起こりにくいってことよ。
> bool は真偽を返すからだと思います。
これは正解。intでも問題ないけど、trueかfalseしか返さないことが明確になるから、boolで
書く習慣をつけた方がいいと思うわ。
> 推測ですけど、関数の右側の const は、この関数が、この関数を呼び
>出すオブジェクトを変更しないという意味ではないかと思いますが、どう
>でしょうか?
いいカンしてるわね。
答えを書くのは簡単だけど、nanacy君のレベルにあわせてもう少し厳しくいくわ。
推測じゃなくて、自分で調べてご覧なさい。
VCを使ってるのよね? 知ってると思うけど「ヘルプ」メニューの「検索」を選ぶとMSDNが
開くわ。これで関連すると思うところを調べてご覧なさい。
どんな語句で検索をかければ良いかを体得するのも技術者として必要なスキルだから、
今回のヒントはここまで。
>>587 こういう質問の仕方をするのはダメよ。教えて君逝ってよし って言われるわよ。
どの部分で、どんなエラーが出るのか、自分ではなにを調べて、なにがわかって、なにが
わからないのかをきちんと書きなさい。
たとえば友達がnanacy君の家にはじめて遊びに来るときに、友達から電話がかかってきて
「どう行けばいいの?」としか聞いてこないときと、「いま○○駅の××にいて、もらった
メモだとマックの横の路地を入るって書いてあるけど、マックがふたつあるんだ。どっちの
マックの路地を入ればいいの?」と聞かれるのと、どっちが答えやすい? 質問が明確な方が
答えやすいでしょ。587のnanacy君の質問はあまりに漠然としているわ。
それからバグを探すときには、問題が起こる最小の状態を特定するのがいいのよ。
stringのインスタンスがふたつあるけど、ひとつにしたらバグは消えるのか?
coutへの出力をなくしたら、バグは消えるのか?
デバッガのステップ実行は知ってるかしら? 最初のうちはこの機能を使ってプログラムの
流れを少しずつ追いかけると理解が進むわよ。
知らなかったらMSDNでデバッガの操作方法を調べてごらんなさい。
もう少しいくつか試してもう少し考えてもわからなかったら、また質問なさい。
>>588 char * と const char * の違いがわからない、ってことね。これもMSDNで調べる項目ね。
ちょっと突き放した回答だけど、nanacy君の今までの発言をみているとこのくらいの
レベルでも充分ついてこれると思うわ。自分の力で調べるのはとても大切なことなのよ。
今くらいの初歩的なレベルならアタシみたいに周りに教えられるひとがいることが多いけど、
nanacy君のレベルが上がって行くにしたがって、質問に答えられる人は減ってゆくのよ。
そうすると結局自分で調べて自分で解決するしかなくなるの。それに教えてもらったことより
調べたことの方が身に付くのよ。
期待してるわよ。がんばってね。
ミトコンドリ子とお局って芸風がかぶってる気がするのは気の精でしょうか
592 :
デフォルトの名無しさん :2001/03/18(日) 15:24
ウルトラ初心者だよ。 オラのCの本(book?)にはassertって載ってないだよ。 いったいぜんたいassertってなんだっちゃ?おせーてけろ。
593 :
デフォルトの名無しさん :2001/03/18(日) 15:47
594 :
デフォルトの名無しさん :2001/03/18(日) 16:55
マジで困ってます。詳しい方教えて下さい。 どちらかいうと、OS寄りの質問ですが.. 標準入力からデータを受け取り、処理するプログラムを作ったのですが、 cat 対象ファイル | a.out モード切替引数 だと動くのに、 zcat(gzip -dc ) 対象ファイル.gz | a.out モード切替引数 だと、coreを出して止まります。 a.out 対象ファイル と実行すると、 a.outは内部でsystem(cat 対象ファイル | a.out モード切替引数)を実行します。 OSは TurboLinux release 4.0 (xxx) Kernel 2.2.9 on an i586 です。
595 :
581 :2001/03/18(日) 17:33
>>589 さん
589さんはdos上でwatcom使ってらっしゃるのですか?
わたしはwinでwatcom c/c++ ver11.0jを使っているんですが
IDEを起動しても何をどうすればいいのか分からなくて悩んでます。
K&R2等の参考書に載っているようなソースを打ち込んでコンパイルするには
どうしたらいいのかとか。
新規作成を選んでも、プロジェクトとかターゲットとかが
できちゃって肝心のソースファイルはどこに書けばいいのか分からないんです。
596 :
デフォルトの名無しさん :2001/03/18(日) 19:54
とあるクラスを継承して、基底クラスのメンバ関数をオーバーライドしたのですが オーバーライドした関数から、継承したプライベートなメンバ変数にアクセス するにはどうしたらいいんでしょうか?
597 :
デフォルトの名無しさん :2001/03/18(日) 19:55
おっと、596はC十十での話しです。
598 :
デフォルトの名無しさん :2001/03/18(日) 20:09
>596 1. そのメンバ変数用の accessor method を作る。 2. そのメンバ変数を protected にする。 やるんなら 1 がお勧め。
599 :
デフォルトの名無しさん :2001/03/18(日) 20:13
>>598 getxxx/setxxxみたいなメンバ関数を基底クラスのprotectedかpublicに作るんでしょうか?
600 :
596 :2001/03/18(日) 20:24
>598 accessor methodというのは何なのでしょうか? 2.はもちろん考えたんですが、「メンバ変数はprivateだ」と学んでしまったために どうにもやる気が起こりません。洗脳されてしまったようです。 ちなみにfriendでやるのは、へんちくりんなやり方ですか?
>>600 変。派生クラスに対して friend 使うんじゃあ
何のために protected ってキーワードがあるのかわからんではないか。
602 :
596 :2001/03/18(日) 20:44
>600 599がいっているやつ。 friendについては601に賛成。
603 :
592 :2001/03/18(日) 21:22
>>593 助かっただよ。
んども、こないなもんどないにつこえばよかとばい?
頻繁に用いんとダメだっぺか?
604 :
596 :2001/03/18(日) 21:33
>602 ありがとうございます。わかりました。 そもそも、派生クラスの為に基底クラスにコードを追加するというような状況に陥ること自体クレイジーなんでしょうか? しかし、何かの処理を追加する為にオーバーライドするのであれば、基底クラスのメンバ変数に絶対触れると思うのですが…。 具体的には、数行追加するだけだから、メンバ変数にアクセスするコードはそっくり残ってます。
605 :
デフォルトの名無しさん :2001/03/18(日) 21:38
606 :
デフォルトの名無しさん :2001/03/18(日) 21:50
個人的にはsetxx やgetxx を派生クラスに対しても用意するのがいいと思います。 メンバ変数名だと、どこで宣言されているものかわかりづらくって・・・
>604 そんなことは無いと思う。 むしろ、親クラスは子クラスのことを考えて作成する。 で、この場合は書いたとおり protected の accessor method さえ作っておけばそれで良いと思うけれど。
608 :
デフォルトの名無しさん :2001/03/19(月) 02:23
半透明ってどうやって作ればいいですか。 1ドットずつ調べては色を調整するわけにもいきませんし、 スマートに処理する方法はあるでしょうか?
>>590 どもっす。
厳しいながらも温かみのある回答、ありがとうございました。
const修飾子に関してはマニュアルに載ってました。
>>587 の件に関してはもう少し自分でがんばってみます。
一応、詳しい症状としてはデバック版ですと、Debug Assertion failed.
リリース版では以下のようなエラーとなります。
---------------------
CPP2 のページ違反です。
モジュール : CPP2.EXE、アドレス : 0167:00405580
Registers:
EAX=00650078 CS=0167 EIP=00405580 EFLGS=00010206
EBX=0000003f SS=016f ESP=0063fd94 EBP=0063fdb4
ECX=00000100 DS=016f ESI=00000000 FS=514f
EDX=00760ddc ES=016f EDI=40711c00 GS=0000
Bytes at CS:EIP:
89 79 04 8b 4c 13 04 8b 7c 13 08 03 5d f8 89 79
Stack dump:
00000000 00760de0 00530000 0063fe38 006501bc 0000003f 00004100 00000031 0063fe38 00403594 0075000c 0000003f 004089c8 00401f4e 00760de0 00401078
>>587 =609
s1.p と s2.p が2回 delete されちゃってる。
今までのキミの書き込み見てるとたぶんただのタイプミスだろうから、よく見直てみ。
あと、関数への入力専用の引数の時は、
出来る限り const は付けとく方針にしとけい。
>>609 お疲れさま。自分なりの結果がでたらまた報告してちょうだい。適当にこのスレは
チェックしておくから。
動作不良の直接の原因は610氏のいうとおりよ。
でも回答を見る前に自力でたどり着いてほしいもんだわ。がんばってね。
>>610 ああ、そうか。
friend ostream &operator<<(ostream &stream, const string &ob);
という風に参照で渡さないとダメですね。うっかりしてたです。
変更したらうまく動作しました。ありがとうございます。
問題では値渡しでプロトタイプが与えられてたもので、見過ごしてしまいました。
まだまだ知識が不安定ですね。『独習C++』の解答の方も間違ってました。
613 :
nanacy :2001/03/20(火) 01:16
VC++6.0のデバッカについてですが、実行をトレースする際に コマンドライン引数を与える方法はあるのでしょうか?
一応、ヘルプで検索してみたんですが、よくわからなかったです。
615 :
ミトコンドリ子 :2001/03/20(火) 02:07
>>613 「プロジェクト」メニューの「設定」の「デバッグ」タグの「プログラム引数」に入れればOKよ。
616 :
ジェット尾崎 :2001/03/20(火) 02:43
ジェットフォームについて物知り博士の情報を求む! いったい、なんなのか? ソフトっていったらどこにあるかなど。 つーか、ただの会社名なの?
618 :
デフォルトの名無しさん :2001/03/20(火) 07:37
ジェットストリームアタックについて物知り博士の情報を求む! いったい、な(以
619 :
デフォルトの名無しさん :2001/03/20(火) 11:07
javaで例外処理がありますが意味がわかりません。例外が起こらないようにプログラムを設計するのが筋ではないのですか?
620 :
ジェット尾崎 :2001/03/20(火) 11:30
>618 このオバカやろう!! ジェットストリームアタックはな、怒武がグラディウスのオプションのごとくまたは金魚の糞のごとく楽しく前進するワザじゃ!エ!コラ! 俺はジェットフォームについて聞きたいんだよ! 次、もしトランスフォームについて~って言ったヤツはちぎって稚魚の餌にするからな。 >619 こいつもまたオバカやろう!! ネットワークエラーやメモリのオーバーフローやユーザ操作による実行時の例外などはコンパイル時にはわからんだろうが! いいか、お前、今日(3/20)はドリフ見ろよ。
621 :
デフォルトの名無しさん :2001/03/21(水) 01:50
Visual Stadioでコンパイル時にエラーのあった行数とその内容が表示されますが、 作業する場所に何行目という表示がないのでソースのどこが何行目か分からず、 不便なのですがどうすればよいでしょうか?
622 :
nanacy :2001/03/21(水) 01:53
>>621 エラーを表示させるウインドウの下(右下)に
カーソルの行数でてると思いますよ。
623 :
>619 :2001/03/21(水) 02:00
別スレより。Javaじゃないけど。 Assertは内部バグのチェックコードで100%成功しなければならない。 また、リリース時にはコンパイルオプションによってチェックコードを無効にできる。 Assertにfailした場合、リカバリは困難。 (C/C++の場合はメッセージ吐いて強制終了する。例外を投げるDelphiは例外的:-) 例外をraiseすることはメソッドの仕様であり、 一般に外的要因(設定ファイルが無い、引数にnilが渡された、メモリが足りない) によって発生し、そのメソッドの呼び出し側がexceptしリカバリする(かまたは無視して終了する)。
624 :
デフォルトの名無しさん :2001/03/21(水) 02:00
>621 ありがとう。ATOKのツールバーで隠れて気づかなかった。
625 :
619 :2001/03/21(水) 02:36
>>620 ネットワークエラーは納得できるとして、後ろの二つは強制終了すればいいだけの話だとおもうのですけど。実際メモリのオーバーフローはそうならないようにデバグするのが筋だし、ユーザー操作においても同じだとおもうのですけど・・・
それはあんたが自分ひとりで完結するコードを書いてるから思うんじゃないの? 人が使うライブラリを書いてごらんよ
あんなのにきちんとレスしてくれてありがとう・・。 眠かったものでつい・・・ あ、ジェットフォームについてはしりませんごめんなさい
628 :
ガ :2001/03/21(水) 04:54
ブラウザの”×”(閉じる)ボタンを非表示にできません。 JSでもダメみたいっす。どうにか制御できないもんでしょうか?
目をつむれば非表示になるよ
630 :
デフォルトの名無しさん :2001/03/21(水) 17:46
最近元気ないね。もう季節を過ぎたからかな?
すいません、トランスフォームなんですけど・・・(^^;;; えーと、透視変換と投影変換の違いがわかりません。友人に違うものだと言われて、違いが知りたいんです。(彼の説明はよくわからなかった) googleで調べてみたんですけど、違いを説明してくれるのは見つからず(x_x)
632 :
デフォルトの名無しさん :2001/03/21(水) 20:51
現在macユーザーです。 Win・Mac共に動くゲーム(最大の目標はRPG。とりあえずADV)を作りたいんですが、 Macだとプログラムを組むのに何のソフトを使うのが良いのでしょうか? MacよりWIndowsの方がプログラムを組むのに適しているというのは知っていますが、 Win・Macの両方に対応するゲームを作っている方は、 何の機種でどんなソフトを使って、両者のOSに対応できるゲームをつくっているのでしょうか? 熟知してる方、お願いします。 言語はCOBOLとparl、AppleScriptがわかります。 ちなみに、コードウォーリアというソフトが、両者のOS用にコンパイル可能らしいのですが、 このソフトを使用しているんでしょうか?
633 :
デフォルトの名無しさん :2001/03/21(水) 21:00
>632 いまいち不評だけどディレクターもあるよん。
634 :
名無しさん :2001/03/21(水) 21:26
VCを使ってるのですがホンの一瞬処理を止めたい時はどうすればいいのでしょうか?
635 :
デフォルトの名無しさん :2001/03/21(水) 21:30
>VCを使ってるのですがホンの一瞬処理を止めたい時はどうすればいいのでしょうか? Sleep?
636 :
デフォルトの名無しさん :2001/03/21(水) 21:30
>>632 Javaで作るのがいいんじゃないでしょうか。
開発環境もタダです(Mac版のMRJ SDK使いづらいけど)。
コードウォーリアはクロスコンパイラはついていますが、
両方のOSで動くコードが書けるわけでは無いので注意して下さい。
637 :
デフォルトの名無しさん :2001/03/21(水) 22:15
C++のSTLってなに? STL覚えないとC++でプログラムつくれないの?
>>637 Cの標準関数みたいなもの(かなり端折っているけど)
STL覚えなくともC++でプログラムつくれるけど、
楽にC++でプログラムつくりたかったらSTLを覚えた方がいい
少なくともvectorぐらいは覚えておいて損はない
639 :
名無しさん :2001/03/21(水) 23:00
>635 ありがとうございました
640 :
デフォルトの名無しさん :2001/03/21(水) 23:03
>>632 サウンドノベルみたいなやつだったら、コミックメーカーという
フリーソフトで作った方が、とりあえず良い物はできそうっす。
プログラムとは違うけど、様子見るのも良いかも。
641 :
632 :2001/03/22(木) 22:29
みなさんありがとうございます。 コードウォーリアはOSごとにプログラムを書かなくてはならないんですね。 シェアウェアソフトとして配布している人や、 商業ベースでもこういったものを使っているのか聞きたかったのですが、 本職の方いますか? Javaで作ったゲームはたしかWeb上での公開しかできませんよね? 配布可能ですか?
642 :
デフォルトの名無しさん :2001/03/23(金) 00:13
643 :
デフォルトの名無しさん :2001/03/23(金) 00:43
WEBにアクセスしてきたユーザの電話番号をログに残す ことはできるのでしょうか?
644 :
デフォルトの名無しさん :2001/03/23(金) 00:52
>>643 電話番号を入力してもらえばできる。↑のE-mail覧みたく。
つーかそれが出来たら立派なセキュリティホールじゃゴラァ
645 :
デフォルトの名無しさん :2001/03/23(金) 11:17
プログラムを実行しても確認する暇が無いほど 秒速で閉じてしまいますなんででしょうか?
>>645 多分、プログラムをダブルクリックしているからです。
DOS窓から実行するか、
hogehoge ← プログラム名
pause
っていうバッチファイルを作ってバッチファイルを実行してみて下さい
647 :
nanacy :2001/03/23(金) 14:20
>>645 VC++から実行すると「Hit any key」って出るけどね。
648 :
アクセスについて :2001/03/23(金) 15:22
アクセスについて教えてください。 あるフィールドでグループ化すると、カタカナと平仮名を同一のものと してみなされてしまいます。 グループ化するときに平仮名とカタカナを別のものとみなすにはどのよ うにすればいいのでしょうか。 宜しくお願いします。
649 :
nanacy :2001/03/23(金) 15:41
押下ってなんてよむの? 広辞苑にも載ってない・・
650 :
デフォルトの名無しさん :2001/03/23(金) 15:43
652 :
ななし :2001/03/23(金) 22:07
このプログラムは不正な処理を行ったので強制終了します となってアプリが閉じてしまうんですけど・・・ この手の質問はどの板でしたらいいのかわからないんで、とりあえずここで 誰か原因教えてください 。詳細は以下のとうりです 。 GASUKE のページ違反です。 モジュール : KERNEL32.DLL、アドレス : 0167:bff88075 Registers: EAX=c00309e4 CS=0167 EIP=bff88075 EFLGS=00010202 EBX=0080f054 SS=016f ESP=00710000 EBP=00710078 ECX=81659ff4 DS=016f ESI=81672efc FS=667f EDX=388b5708 ES=016f EDI=00e97284 GS=0000 Bytes at CS:EIP: ff 75 08 8b 7d 0c 57 ff 75 10 6a 01 e8 ca 07 00 Stack dump: 00e97284 81672efc 0080f054 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>652 エラーメッセージの意味はわかんないけど、ほとんどの場合がコードの書き間違い。 とりあえず、プログラムの怪しい部分をコメントアウトしてみろ。 それでエラーが消えれば、コメントアウトした部分のどこかに間違いがあるってこと。 逆にエラーが消えなければ、コメントアウトした部分は間違ってない可能性が高い。 地道に探せ。
654 :
へっぽこプログラマ :2001/03/24(土) 00:20
それでも良いけど、ブレークポイント設置したほうが スマートじゃない?
>>652 ページ違反はアプリケーションに割り当てられたメモリ以外の場所にアクセスを行った場合に発生します.
通常はプログラムのコーディングミスから発生します.
良くあるケースとしては,
・ポインタの初期化し忘れ
・無効なポインタを渡されたにもかかわらず,そのポインタの値を使用した(エラーチェックを行わないと良く起こる)
・ポインタの値を格納している領域を上書きしてしまい,ポインタの値が正しく無くなってしまった
が挙げられます.
あと、ポインタの操作を行う場合にその時点でエラーとして出る場合と終了時出る場合があります。
↑の良くあるケースの例ですとその時点でエラーメッセージを出してくれる場合が多いですがnew,deleteのところで間違っていると終了時にエラーメッセージ出す場合が多いようです。
ちなみに私は、newした順番とdeleteした順番を間違えてこの手のエラーを出したことがあります。
656 :
652 :2001/03/24(土) 11:58
皆さんの丁寧なレスはありがたいのですが プログラミングに関しては超ド素人なので、なにがナンダかで・・・ 解決方法を簡単に教えてもらえないでしょうか
>>656 かなり板違いの感があるが……GASUKEって蔵衛門?
要するに「そのプログラムにはバグがある」ってこと。解決方法と言っても
・自作のプログラムなら、
>>656 を参考に間違ってる箇所を探せ。
・他人のプログラムなら作ったヤツに文句付けるなり直させるなりしろ。
くらいしかないネ。
押上
659 :
652・656 :2001/03/24(土) 13:49
660 :
654 :2001/03/24(土) 16:39
>>659 なんだそういう事かー。そのソフトどんなのか知らないけど、
ひょっとしたら他のソフトとの相性とかかも知れない。
昔CD焼きのソフト入れたら、勝手にシステムDLL入れ替えたみたいで
VCが強制終了するようになった事があった。
661 :
初心者 :2001/03/24(土) 21:47
>4*1,2*1,6*1,3*2,6*2,6*3,3*2 >上記のモノから読みとれるアルファベットは何ですか? >すべて小文字です。(簡単すぎる・・・) ><ヒント> >"9*4"は"z"を示します。 某板でこのようなアルゴリズムがクイズになったんですが、 さっぱりわかりません。これからできる文字列を教えてください。 よろしくお願いします。
わからん人には無理だろう。普段使ってないと。
>662 なんなの?気になる。もったいぶらないで。おらにもおせーて。
しかし答えは意味不明
665 :
デフォルトの名無しさん :2001/03/24(土) 22:08
>664さん その文字列をおせーてください。お願いします。 気になって気になって昨日から寝てないっす(本当)。
666 :
:2001/03/24(土) 22:18
667 :
デフォルトの名無しさん :2001/03/24(土) 22:19
多分アスキーコードじゃないのかな。 あ、でも、9 * 4 = 36 はアスキーコードだと z じゃないなぁ。 何かひねるのかな。
gamenoe
669 :
デフォルトの名無しさん :2001/03/24(土) 22:23
>668さん ありがとうございます。しかし、これはいったいどういう仕組みなのでせうか? ASCIIコードと体系が違うのでずっと悩んでしまいました。 できればアルゴリズムも教えてください。色々たのんでばっかですみません。
670 :
デフォルトの名無しさん :2001/03/24(土) 22:41
けーたいでんわ
671 :
名無しさん :2001/03/24(土) 23:44
void main() { char* tt= "konnnichiha"; int mozisuu=0; char mozi = 0x41; *(tt+mozisuu)=mozi; } これをビルドすると不正な処理~~と出てくるのですが なぜでしょう?どなたかどこが悪いのか教えてください
672 :
デフォルトの名無しさん :2001/03/25(日) 00:18
a:2*1 b:2*2 c:2*3 d:3*1 e:3*2 f:3*3 g:4*1 h:4*2 i:4*3 j:5*1 k:5*2 l:5*3 m:6*1 n:6*2 o:6*3 アルゴリズムは、こんな感じかと思ったが・・・ zのあたりまでいくとつじつまが合わないんだけど。 どういうこと??
>>671 文字列リテラル"konnnichiha"の型は、C++では const char[] だから。
文字列リテラルは、書きこみ禁止領域に置かれることが多いらしーよ
674 :
672 :2001/03/25(日) 00:28
ちなみにこのアルゴリズムでいくと z:10*2 になるんだなあ。
675 :
>671 :2001/03/25(日) 00:51
char tt[]= "konnnichiha"; こうしたら平気よ
676 :
デフォルトの名無しさん :2001/03/25(日) 03:59
>>672 だから、携帯のメッセージを入力するときのだろって。
677 :
nanacy :2001/03/25(日) 04:30
>>675 その辺の細かい知識を習得する適当なテキストってありますか?
Effective C++ とかには載ってるのかな~?
678 :
デフォルトの名無しさん :2001/03/25(日) 04:31
VC++6.0で、メニューバーが消えてしまいました。どうやっても戻せません。 ツールバーのカスタマイズを見ると、メニューバーにはチェックがついています。 チェックを外そうとしても外せません。 MSDN見てもよくわかりません。 かなり不便です。助けてください。
書き込んだ途端に、いきなり出てきました。 というわけで解決しました。
680 :
nanacy :2001/03/25(日) 04:51
long型ポインタってのはなんでしょうか? long型へのポインタ だと思ったら、void へのlong型ポインタもあるらしいし・・。 farポインタみたいなのですか? (まだそんなのあるんですかね?)
681 :
>680 :2001/03/25(日) 04:59
32ビットだからLONG型ってなはなし? LPSTR とかの LP~のことですか それならそういうことです。FAR だとか near だとかのころの名残り ただのポインタすね
682 :
デフォルトの名無しさん :2001/03/25(日) 05:23
そろそろ名無しに戻ります。(^-^;
>>681 どもです。名残りですか。変数のprefixに sz (NULL終了文字列へのポインタ)
と lpsz (NULL終了文字列へのlong型ポインタ) の2つがあるんで、
どうやって使い分けてるのかなぁと思いまして。いまは全部32bitの
ポインタだからlpsz使ってたらいいのかな。
683 :
デフォルトの名無しさん :2001/03/25(日) 07:07
シフトJISで半角カタカナが化ける条件を教えてください どうやっても化けさせられないです…
684 :
デフォルトの名無しさん :2001/03/25(日) 10:20
>>683 意味不明なんだけど。
暗号化のようなことでもしたいの?
685 :
名無しさん :2001/03/25(日) 12:33
>673,675 できました ホントにありがとうございました
686 :
デフォルトの名無しさん :2001/03/25(日) 15:09
VC++6.0 IntelliSenseについて質問です。 テンプレートを使ってクラスを書くと、データメンバは表示されるのに メンバ関数が表示されません。 クラスの中に関数の中身も一緒に書き込むと表示されます。 テンプレートを使わないクラスならばそういったことは起こりません。 STLだと表示されているのでのぞいてみたところ、クラスの時に中身も書いていました。 何か良い方法はありませんか?
687 :
バード大佐 :2001/03/25(日) 20:37
昨日VC++買った激初心者です。 みなさんはどうやってプログラムを勉強しましたか? やっぱりなにか目標ありましたか? 自分はメガデモを作りたいとおもって買いました。 でもいきなりそんなの無理なので、簡単なゲームでも作って 見ようと思ってますが。
>>687 本読みまくりの、ウェブ検索しまくり。
教えてくれる人に頼ってるうちはダメ。
とりあえず「猫でもわかる」に検索でいってみることを勧める メガデモでMFCってのもないだろうし
Cは独習Cっつー本を終えたばかりです。 そこで質問ですが、C++のように グラフィカルなアプリケーション作成ってのは Cでは出来ないのですか? 馬鹿ですんません
691 :
デフォルトの名無しさん :2001/03/26(月) 06:31
692 :
デフォルトの名無しさん :2001/03/26(月) 09:22
>690 「WindowsAPI」っていう関数を使えば窓は作れるぞ。 ただし、Cより覚えることは多い。
693 :
バード大佐 :2001/03/26(月) 10:32
みなさんresありがとう。 VC++についてきた入門マニュアルはMFC使ったやつしか 書いてなかったので、「猫でもわかるプログラミング」勉強になります。
694 :
デフォルトの名無しさん :2001/03/26(月) 10:46
わたしゃ、Scribbleから入ったので、最初は意味がわからなくて難儀しました。 結局、青いWindowsプログラムの本で、WM_PAINTのもぐらたたきを理解して、 やっと意味がわかるようになりました。 でも、スケルトンの持ち合わせが無いので、もっぱらMFCアプリ書いてます。 ショートカットをアプリアイコンにドロップした時、ターゲットの書類を 開くのとか、スケルトンコードが無いと面倒くさいですよね?
695 :
デフォルトの名無しさん :2001/03/26(月) 11:22
このスレッドに書かれてる質問がとってもウルトラの 付く初心者の質問には思えない・・・と思うのはドキュンの あたしだけ?
697 :
デフォルトの名無しさん :2001/03/26(月) 12:56
>>695 まずは、自分で調べろよ。ってのがあるからね。
698 :
デフォルトの名無しさん :2001/03/26(月) 13:06
Af
699 :
デフォルトの名無しさん :2001/03/26(月) 18:31
>>696 どの辺を境界にしたらいいのかわかんないんだよねぇ・・
700 :
デフォルトの名無しさん :2001/03/26(月) 20:30
MFC使っています。 OnOpenFileのハンドラを書くと、Serialize メソッドが呼ばれなくなるとのことなんですが 呼ばれてしまって困っています。 ひとつのスケルトンをだいぶいじりまわしたので、 どっか壊れてるんじゃないかと思うんですが…
>691 692 ありがとうございます。 これからすぐにでも勉強を始めようと思います。
>>692 WindowsAPIは関数じゃないぞ(^^;;;
703 :
デフォルトの名無しさん :2001/03/27(火) 05:39
MacOS X のソースコードを読んでみたいです。 ダウンロードできる所教えて下さい。
704 :
デフォルトの名無しさん :2001/03/27(火) 05:49
WindowsAPIは「システムコール」とか「C++標準ライブラリ」などと同じ、関数をひとくくりにしてまとめた物の呼び名。 だから、 WindowsAPI( ... ) という関数があるわけではない。
706 :
703&&模範解答 :2001/03/27(火) 07:51
おしえてー
707 :
名無しさん :2001/03/27(火) 12:42
なんで配列って変数を使えないんですか?
708 :
デフォルトの名無しさん :2001/03/27(火) 13:03
>>707 どういうこと?
int i; char str[10];
for(i=0;i<10;i++) str[i]='\0';
こういうのできますけど・・
>>707 とりあえず言語名は何だ?
>>708 のようにC/C++,Javaなど多くの言語は配列をサポートしている
>>707 ひょっとして
int size = 10;
int array[size];
みたいなののこと?
うおーい だれかー(涙)
713 :
デフォルトの名無しさん :2001/03/27(火) 14:55
VCのエラーなんですが、 「関数●●はすでに実体を持っています。」 これはどういう意味でしょうか??
わりとまんまな意味だ。 void func(){}; void func(){ return; }; なんて感じで多重定義してるのが典型 注意深くソースを追えばたいていわかる
715 :
711 :2001/03/27(火) 20:13
712さん さんきゅー♪
716 :
デフォルトの名無しさん :2001/03/28(水) 09:55
なぜDOS窓がすぐ閉じちゃうの?本にはすぐ閉じるなんて描いてないです 実行を2回ダブルクリックもしてませんF9で実行しました。がすぐ閉じてしまいます。 何かコードが足りない?教えてください #include<stdio,h> main() { printf("文字が表示されてるでしょう?\n"); }
>>716 まぁ落ち着け。とりあえず開発環境くらい書いとかんとアカンよ。
main() が終わった時点でアプリも終了するわけだから、ある意味
すぐ閉じて当たり前だから気にすんな。( VC++ だと止まってくれるようだが。 )
表示結果を残して起きたきゃ、
DOS窓からコマンド打って実行か、main(){ } の終わりに getchar(); をいれとくべし。
718 :
デフォルトの名無しさん :2001/03/28(水) 11:04
VC++ の「実行」は F5 になってるけど?
719 :
デフォルトの名無しさん :2001/03/28(水) 11:04
そういや、むかしのMSXもF5はRUNだった気がするにゃー
720 :
デフォルトの名無しさん :2001/03/28(水) 11:39
ECMAScriptのライブラリってありやすか? Javaの実装はFESIってのがあったけど。
721 :
デフォルトの名無しさん :2001/03/28(水) 12:03
開発環境って何???ソフトはC++Builderデス #include<stdio,h> main() { printf("文字が表示されてるでしょう?\n"); } getchar(); ってこと?動かない・・・・・???? リンカエラーって何ですか?本に描いてないです。
>>721 成程。Builder は F9 なのか。
#include<stdio.h>
main()
{
printf("文字が表示されてるでしょう?\n");
getchar();
}
723 :
デフォルトの名無しさん :2001/03/28(水) 13:44
714さん、ありがとう! そのまんま同じ関数を二つ書いてました。
724 :
デフォルトの名無しさん :2001/03/28(水) 14:24
わからないことがあるんですけど。 VC++6.0で、afxwin.hをインクルードしたら、リンカで 「__beginthreadexが見つからぬ」 というエラーメッセージが表示されました。前のアンダーラインが一個だけの奴なら、どこかのhファイルに定義されてるんですけど。なんででしょう? ちなみに、エラーメッセージ前にはオブジェクトファイルとライブラリファイルが書かれてました。誰か、解決策を教えてください。
>
>>724 ふふふふ
コンパイラーオプションで、マルチスレッドを選択しましょう。
プロジェクト->設定->C++ ->コード生成 の中の
使用するランタイムライブラリー。
って奴。
727 :
デフォルトの名無しさん :2001/03/28(水) 15:24
あう。 今度は、 「LIBCMT" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください」 というのが出ました。なんででしょう?私は呪われているのでしょうか。
728 :
デフォルトの名無しさん :2001/03/30(金) 01:05
クラスAとクラスBを多重継承してクラスCを作るのと、 クラスAを継承してBを作り、Bを継承してCを作るのとでは、同じですか?
ちがう。
確かに違うでしょうが、結果としてクラスCの動作は同じにはなりませんか?
731 :
デフォルトの名無しさん :2001/03/30(金) 02:13
>>730 視野が狭い。
・アクセスレベルの問題
・多重継承そのもののリスク
・クラス階層構造の整合性の問題
経験からいうと、実装継承なんかできるだけするな。
可能な限りコンポジションで済ませろ。
732 :
デフォルトの名無しさん :2001/03/30(金) 02:14
>>730 違う。
後者の場合
将来、クラスCの派生クラスをつくったり、
クラスCに基本クラスを追加した時。
A、Bのメンバ参照が曖昧になる可能性がある。
しかし前者に比べてオーバーヘッドが軽い。
単体でクラスCを使う分には問題無い。
・コンストラクタ、デストラクタの呼び順が怖い ・多重継承の場合、class Aとclass Bは互いに独立してる。 class Bがclass Aを継承してるときは、class Bがclass A の非privateメンバに触る事が出来る 当たり前のことだけど、結構重要(経験談)
734 :
デフォルトの名無しさん :2001/03/30(金) 09:55
クラスBが別物になるのでメリットは無い
735 :
デフォルトの名無しさん :2001/03/31(土) 10:02
VC++6.0付属のMSDNライブラリに関してなのですが、CreateWindow関数を検索して プラットフォームSDKというところにあるらしいのですが、目次からたどっていっ ても、その関数が発見できません。この目次ってすべてを網羅しているわけでは ないのでしょうか? 検索からの直飛びだと、他の関数との関連性がわからないので・・。
>>735 付属の奴はリンクが腐ってる。
リンクだけ日本語化されてて実体が無かったり(英語で引けるならまだいい)
737 :
デフォルトの名無しさん :2001/03/31(土) 13:27
>>735 インデックスや検索で探して、目次を同期すれば?
738 :
デフォルトの名無しさん :2001/03/31(土) 14:37
>>737 「同期」がクリックできなくなってます。目次にリンクがないって
ことなんですかねぇ?
739 :
デフォルトの名無しさん :2001/03/31(土) 17:24
>>738 うーんそうかも。ちなみに、CreateWindow()は、
\Platform SDK
\User Interface
\Windowing
\Windows
\Window Reference
にあるよ。
741 :
デフォルトの名無しさん :2001/04/01(日) 00:30
プログラムを書けると何ができるのですか?
742 :
デフォルトの名無しさん :2001/04/01(日) 00:33
>>741 カップラーメンだけで生きて行く術を身につけることが出来る。
743 :
デフォルトの名無しさん :2001/04/01(日) 00:34
VC6のスタンダードエディションって、最適化はできないの? あと,VC4に比べてサイズが多きくなるのは、どうにもならないのかな?
mingwはとてもちいさくなる
745 :
デフォルト名無しさん :2001/04/01(日) 13:30
プログラミングのこと全然わからないんですけど・・・。 まず何から勉強すればいいか教えてください。 あとプログラミングを学ぶことによってできるようになる選択肢みたいなの も教えてください。 あと社会に出て役立つプログラミングも教えてください。 ぶしつけなお願いですいません。
とりあえず、インタプリタ系の言語でコンピュータの動き方という物を勉強してください。 BASICとか、Perlですね。 なんとなくコンピュータの動きという物が見えてきたら、BCB、Delphi、あまりおすすめしないけどVBのどれかでオブジェクト指向を感覚的に学んで、そこから先はご自由に。 でもって、必ず勉強すべきなのが、資料の検索の仕方、質問の仕方ですね。 とりあえず、こういう質問は毎回されている質問で、2chの過去ログの中にも山のようにあるんでそれを見ればこんな質問をしなくてすみました。 なんでもかんでも聞いてると教えて君と言われてしまいますので、質問するときはまず何か調べてからにしてください。 初心者という単語に甘えないでね。
747 :
デフォルト名無しさん :2001/04/01(日) 13:54
>>746 ウルセーよ!!説教するなら全部の質問にちゃんと答えてからにしろ!
ボケが!!!
きつくいってごめんね。
748 :
:2001/04/01(日) 14:00
>>745 無の状態から(VC++とかVBとか持ってない場合)出来る
プログラムってHTML→JavaScript?
開発環境もメモ帳+エクスプローラーでいいわけだし。
・・・HTMLってネタだろ?
750 :
Z80(3MHz) :2001/04/01(日) 16:50
>749 でも、スクリプトなら一応勉強できるよー。 でも僕は、JDK(JAVA)+メモ帳がお勧め。
初心者はPerlが良いんじゃない? 覚えるのは楽だしOOPが出来るし。
752 :
デフォルトの名無しさん :2001/04/01(日) 22:36
Perl で OOPですか? おいしいスパゲティができそうね。 Pythonなんていかがでしょう?
VisualC++って必需かな? gccじゃだめ? いや、まだC++は始めてないんだけど。 gccは持っているんで。
754 :
デフォルトの名無しさん :2001/04/02(月) 08:28
gcc ってwinプログラミングできるの?
755 :
PC USER :2001/04/02(月) 09:05
>>754 !
C言語の開発環境さえあれば、
winや他のOSにだって対応できるんじゃなかったんですか?
>>753 とりあえずgccを使い込んでみて、もし不満に感じたら他を当たってみるんでよし。
>>754 出来る。
>>755 そーでもない。それを期待するならCodeWarriar辺りを使え。
Builderとか言ってる厨房氏ね。 略すならBCBと略せ。
758 :
ダメプログラマ :2001/04/02(月) 11:37
ASPでVBのLenBと同じ機能の関数ってありますか? やりたいことは、 「全角、半角の文字列に対しての半角n文字チェック」 です。 あいう→6桁 abc→3桁 というのをチェックしたいのです。
759 :
デフォルトの名無しさん :2001/04/02(月) 11:57
760 :
デフォルトの名無しさん :2001/04/02(月) 20:40
jbbs㌧㌦!!
761 :
デフォルトの名無しさん :2001/04/03(火) 16:29
Python ってなんて読むんでしょうか
フィトンと読む。
>>762 こんなことして、何か楽しいのかな?
本当はパイソンです。
>>763 チガウヨ、「ピーソン」ダヨ・・・
フィトントーピドー ダボー
766 :
デフォルトの名無しさん :2001/04/03(火) 20:39
http://www2a.biglobe.ne.jp/~gonta/progtop.htm#WINDOWS ここのメモ帳ってのを指示通りに作ってるんですが
その2まで終わったところで実行して「開く」を
しようとしたらエラーになります。
(CPUが云々・・・)
Delphi5を使ってますがどうしてなんでしょうか?
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;
あう、ごめんなさい。 やっぱり出来るみたいです。(***.exeからなら) よく調べずに質問してすみません。
768 :
デフォルトの名無しさん :2001/04/03(火) 22:01
int型 4バイトの処理系で 2^32 の 4294967296 を unsigned int a = 4294967296; printf("%d",a); とすると0が表示されます。 4294967295 だと -1 になります。 32bitだし、表示されると思ったのですが、 なぜ0や-1になるのかがわかりません。 理由を教えてもらえませんでしょうか。
%u
770 :
デフォルトの名無しさん :2001/04/03(火) 22:34
>768
>とすると0が表示されます。
たとえば、符号なし整数で8ビットだと2の8乗で256通りのものが表現できる。
ということは、表現できるのは0~255まで。
最後の256は入らない。それと同じこと。
>>4294967295 だと -1 になります。
%d -> 符号あり
%u -> 符号なし
%x %X -> 16進数
同じ数字をこの3種類を使って出力して、観察して見ろ。
771 :
768 :2001/04/03(火) 23:21
なるほど、ようやくわかりました。 printf が分かってなかったんですね。 769さん770さんありがとうございます。逝ってきます。
>>771 解決したとこなんだが、-1 になるのはともかく 0 になるのは printf とは別問題だぞよ。
773 :
デフォルトの名無しさん :2001/04/04(水) 01:34
プログラムとは直接関係なく申し訳無いのですが、画像の使用についての質問です。 テーブルゲームに利用する画像、例えば麻雀の牌、将棋の駒、トランプの絵柄など これらを直接スキャナで読み取り利用することは著作権等に引っかかるのでしょうか? 特に将棋の駒は書体に特徴がありますので、直接読み取った画像使用していいのか分かりません。 独自にマウス等で作成しなければならないのでしょうか。 ご教授の程、宜しくお願い致します。
774 :
768 :2001/04/04(水) 01:48
772さん あ、すみません。0になるのは4294967296だと 桁あふれで0になると思ったのです。 4294967295 は FFFFFFFF で、4294967296 だと 100000000で、 最上位桁はあふれてしまうという風に理解しました。 あってるでしょうか。
>>773 微妙な問題だけど、不特定多数に配布するなら、権利者に
確認をとるのが一番でしょう。キャラクターには著作権はな
いという説もありますが、ディズニーのようにうるさいとこ
ろもありますからね。
>>774 うぃ。a = 4294967296; ってやると、その時点で a には 0 が入るってことやね。
777 :
773 :2001/04/04(水) 10:38
製作メーカーに問い合わせてみます。 775さん、ご回答ありがとうございました。
778 :
デフォルトの名無しさん :2001/04/05(木) 00:04
2つのCファイルそれぞれで同じユーザ定義ヘッダファイルをインクルードして 多重定義エラーださない方法はどうすればいいのでしょうか?
779 :
デフォルトの名無しさん :2001/04/05(木) 00:08
インクルードガード
780 :
デフォルトの名無しさん :2001/04/05(木) 00:11
781 :
780 :2001/04/05(木) 00:12
↑ごめん >778 ヘッダファイルをこんな感じにする。 標準で付いてるヘッダも同じようなことをやってるよ。見てみ。 #ifndef ABC #define ABC /*ここにヘッダの内容*/ #endif
782 :
778 :2001/04/05(木) 00:21
>781 その方法は質問する以前にやったんですが、 #defineってスコープがソース単位だから ソースが変わると#defineの有効が切れて 多重定義かまします。当方デジユニ
783 :
778 :2001/04/05(木) 00:31
つーか同じ方法でなぜstdioとかは多重定義にならないんだ?
784 :
781 :2001/04/05(木) 00:37
>782 じゃ、わかんないや。 俺のコンパイラ (BCC5.5)で aaa.c -> aaa.obj bbb.c -> bbb.obj aaa.obj + bbb.obj -> aaa.exe (aaa.cとbbb.cは同じヘッダをインクルード) しても多重定義にはならなかったけど。 コンパイルの環境に原因があるのかも。
785 :
778 :2001/04/05(木) 00:57
781> 私も全く同じ構成でmakeしてます、 となるとおっしゃられる通りコンパイル環境っぽいですわ。 その前に781さんにお聞きしたいのですが、そちらでは 別々のファイルで同じ#defineを定義すると多重定義エラーでます? こっちはファイルが違うと出ません、 メークファイル(簡略)↓ main:main.o sub.o cc main.o sub.o -o main main.o:main.c cc -c main.c sub.o:sub.c cc -c sub.c
786 :
778 :2001/04/05(木) 01:00
>別々のファイルで同じ#defineを定義すると多重定義エラーでます? とは"a.c"と"b.c"のファイルそれぞれでインクルードしてる"c.h"内で #define e と定義した時の事です。
787 :
781 :2001/04/05(木) 01:10
>別々のファイルで同じ#defineを定義すると多重定義エラーでます? >こっちはファイルが違うと出ません、 ちょっと質問の意味がわからないんだけど、 全く同じ内容のヘッダddd.hとeee.hがあって aaa.cでddd.hをインクルード bbb.cでeee.hをインクルード してもエラーにはならないよ。
788 :
781 :2001/04/05(木) 01:16
>>別々のファイルで同じ#defineを定義すると多重定義エラーでます? >とは"a.c"と"b.c"のファイルそれぞれでインクルードしてる"c.h"内で >#define e と定義した時の事です。 これだとエラーがでないよ。 というか、最初の778の質問はこの場合を指してると思ってたけど。
789 :
まるちめでぃあ :2001/04/05(木) 01:21
ウィンドウズSDKでプログラムを書いてるんですけど リストボックスコントロールのリストの中のどれかを選択した時 何てメッセージが来てるンですかすんまそんけど誰か教えて
790 :
778 :2001/04/05(木) 01:24
>というか、最初の778の質問はこの場合を指してると思ってたけど。 説明不足でした。 多重定義せずに出来ないかな?と思っているのはヘッダ内のユーザ定義関数です。
791 :
デフォルトの名無しさん :2001/04/05(木) 01:35
>789
リストボックスで何かが起きると、WM_COMMANDが飛んできて、
LOWORD(wParam) 子ウィンドウID
HIWORD(wParam) 通知コード
lParam 子ウィンドウハンドル
になってる。
通知コードは、LBN_XXXXXX
"winuser.h"
#define LBN_ERRSPACE (-2)
#define LBN_SELCHANGE 1
#define LBN_DBLCLK 2
#define LBN_SELCANCEL 3
#define LBN_SETFOCUS 4
#define LBN_KILLFOCUS 5
メッセージのリファレンスは、英語だけどここに落ちてるよ。
Windows API documentation (size: 12.8M)
http://www.cs.virginia.edu/~lcc-win32/
792 :
まるちめでぃあ :2001/04/05(木) 01:45
>>791 とてもとても多謝ですこんな親切に答えてくれる人がいるなんて
世の中捨てたもんじゃないですと真剣に考えた夜中の1時でした
793 :
781 :2001/04/05(木) 01:48
>778 そういうことか。 関数を多重定義すればエラーになるね。 その関数だけ別ソースでコンパイルして、オブジェクトかライブラリにするとか。 どうしてもヘッダの形にしたいなら、 どちらか片方のソースで、ヘッダを呼ぶ前に #define ABC としておいて、 ヘッダに関数を書くときに void function(void);/*プロトタイプ宣言*/ #ifdef ABC void function(void){ /*関数を実行*/ } #endif としておけば、どちらのソースからも呼べるんじゃない。
794 :
778 :2001/04/05(木) 02:08
>781 やはり呼び側でやらんとだめっすか・・・ 当初これなんとかならんかな?と思ったのは 「出来るだけ呼び側に手順を踏ませたくない、かつ容易に」 って思惑からっだったんですけど。そう甘くはないっすね 深夜に質問に答えて頂いてありがとうございます。 PS:多分ライブラリ化で進めていくことになります。
WindowsSDKとWindowsAPIはどう違うんでふか
797 :
( ´∀`)さん :2001/04/06(金) 05:20
プログラム板を見て自分もやってみたいと思ったんですけど、 何から手をつけていいのか・・・。 ど素人、糞初心者は何から始めたらいいですか? 返信お願いします。
何をやりたいかでしょ、まずは そういえば昔ならこんな時N88-BASICで良かったのにね ( ´∀`)さんか…
799 :
初心者だけど、 :2001/04/06(金) 05:52
800 :
デフォルトの名無しさん :2001/04/06(金) 06:16
マンコにチンコを挿入するにはどうしたらいいですか? よろしければ、詳しい情報をお願いします。 すみません初心者で。
801 :
( ´∀`)さん :2001/04/06(金) 08:08
>>798 ・799
返信どうもありがとうございました。
Pythonっていうのから始めてみようと思います。
とにかく頑張ってやります!
DirectSex Tutorial. try{ HRESULT hr; KanojoType Kanjo; AnaType *Manko; hr = CreateKanojo(&Kanojo); if (FAILED(hr)) throw hr; hr = Kanojo.EnumAna(SearchManko, &Manko); if (FAILED(hr)) throw hr; if (Manko == NULL) throw hr; // かま? hr = g_Ore.Timpo.Wakeup(Kanojo); if (FAILED(hr)) throw hr; // 萎えるなよ・・・。 while(!Manko->isWet()) { 略 } hr = g_Ore.Timpo.Insert(Manko); if (FAILED(hr)) throw hr; ... } catch(...) { ... }
ぐは、ごめん。 技術版だったね。
>>794 というか、ヘッダーファイルに関数定義を入れちゃ駄目っす。
(定義とは、宣言と違い、実際の関数の実装のコードのこと)
どうしても入れざるを得ない場合は、
#ifndef HOGE_DEVELOP
int hoge(void);
#else
int hoge(void)
{
...
}
#endif
とかすると良いです。
もちろん、HOGE_DEVELOPを#defineして#includeする.cはひとつ
にしなければなりません。
すんませんコンパイラの使用方法をここで聞くのは場違いかもしれませんが。 gccで超初歩的なこのコードがビルドできません。 #include <iostream.h> int main() { cout << "Hello, C++ Program !!" << endl; return 0; } coutを使わなければ(printfを使ったCのコードなら)OKなんです。 ヘッダファイルに問題があるのでしょうか?
807 :
デフォルトの名無しさん :2001/04/07(土) 02:54
すんませんコンパイラの使用方法をここで聞くのは場違いかもしれませんが。 gccで超初歩的なこのコードがビルドできません。 #include <iostream.h> int main() { cout << "Hello, C++ Program !!" << endl; return 0; } coutを使わなければ(printfを使ったCのコードなら)OKなんです。 ヘッダファイルに問題があるのでしょうか?
808 :
デフォルトの名無しさん :2001/04/07(土) 03:38
>>807 そのソースは間違いではないと思います。
実際に私の環境ではコンパイルが出来ました。
コンパイルエラーを明記してくれないと、どういった対処をすれば良いか
具体的に教えられません。
恐らく#include<iostrem.h>の iostrem.h へのリンクが間違えているのでは
ないでしょうか?
809 :
デフォルトの名無しさん :2001/04/07(土) 03:39
訂正 iostrem.h iostream.h
810 :
807 :2001/04/07(土) 04:02
>808 馬鹿丁寧に書くと A:\gds2k\include\g++-3 にiostream.hはあります。 んが。そもそも根本的に間違ってるかもしれないんですが、 コンパイルするファイルは、gccと同じフォルダになくては いけないのでしょうか? エラーメッセージは何だかよくわからないんです。 Creating Makefile.mkc... Starting gcc... A:\GDS2K\BIN\gcc.exe -O0 -gstabs+3 -DDEBUG -D_DEBUG -D_DEBUG_ -include "A:/GDS2K/include/mladebug.h" -c "A:/WINDOWS/Profiles/yukiya/デスクトップ/debug/a.cpp" -o "A:/WINDOWS/Profiles/yukiya/デスクトップ/debug/Debug/a.opp" Build Termination... Build End. もしかしたらmladebug.hと言うのが間違いかも知れません。 なんかインストール時に移動させた気がします。 勿論ガイドに沿って、ですが。 よろしければmladebug.hの配置を教えていただけないでしょうか。
811 :
デフォルトの名無しさん :2001/04/07(土) 04:20
>>810 すまん、コンパイラとヘッダファイルの位置関係という以前に、
どういう環境、あるいは何と言うものを使って開発しているのかが
分からない。
俺はBorland C++ Compiler 5.5で出来た。
812 :
811 :2001/04/07(土) 04:22
ちなみに、コンパイルするときには bcc32 fine.cpp でやった。gccはUNIXで使ったことがあるが・・・。
813 :
811 :2001/04/07(土) 04:24
細かい訂正だが・・・ bcc32 fine.cpp bcc32 file.cpp
814 :
デフォルトの名無しさん :2001/04/07(土) 04:43
JAVAやろうと思ってるのですが、 Win98と2000どちらがやりやすいとか ありますでしょうか?
815 :
デフォルトの名無しさん :2001/04/07(土) 04:46
>811 gcc Developer Station 2000 ってフリーウェアです。 あるいはもっと使いやすい物は何かあるんでしょうか? 金出してVisual C++を買ったほうがいいですかねえ? と言いつつもう寝るのでsage。 レスどうもでした。
なら98にします。 NT系はややこしそうなので。
818 :
811 :2001/04/07(土) 04:49
>>816 とりあえずVC++は、C++だけをやりたいなら必要ないと思う。
もっと機能を拡張した、高度なものを作りたいときは、
VC++を買うと良いでしょう。
基本を学びたいなら、フリーのデ十分だと思います。
819 :
デフォルトの名無しさん :2001/04/07(土) 04:50
820 :
デフォルトの名無しさん :2001/04/07(土) 05:17
821 :
デフォルトの名無しさん :2001/04/07(土) 05:38
823 :
デフォルトの名無しさん :2001/04/07(土) 13:37
いまjavaを勉強しているのですが、javaやめてc#に変更するのはどうでしょうか?C#はjavaをカバーできますか?ってかc#についてあんまりわかってないんですけどね・・・・
825 :
デフォルト :2001/04/08(日) 11:52
perl moduleのWin32-ADO-0.03のサンプルスクリプトを教えてください。
826 :
デフォルトの名無しさん :2001/04/08(日) 13:11
クラスってなんですか?
827 :
デフォルトの名無しさん :2001/04/08(日) 13:15
828 :
デフォルトの名無しさん :2001/04/08(日) 15:30
秀丸で作ったソースをftpでUnixに送ると改行文字が入ってしまう のですが、どうしたらこれを避けられるでしょうか?教えていただ けませんか。
829 :
デフォルトの名無しさん :2001/04/08(日) 16:02
>>828 ffftpのアスキーモードで転送しよう
830 :
デフォルトの名無しさん :2001/04/08(日) 16:13
vivi ユーザーなんですが改行ってどうやって取るの? \nとか\rとか\r\nとかを痴漢してみたけど捕まりません。 設定もいろいろ試してみたんですが... 秀丸だと簡単だよね…ボソ
831 :
C++ 1年生 :2001/04/08(日) 16:37
C++で、 キーボードから入力された数字によって処理を分けるとき、 cin >> a; swichi(a){ case 1: 処理1; break; case 2: 処理2; break; case 3: 処理3; break; defalult: 処理4; break; } とやったのですが、数字以外のものが入力されると暴走します。 数字以外の入力を制限する、または数字かどうかを判断する方法は あるのでしょうか。
あ、a は int型にしてます。
833 :
デフォルトの名無しさん :2001/04/08(日) 16:50
一番安全なのは、一行読んで、strtolで変換して、 失敗したら最初からswitchさせないことじゃない?
834 :
828 :2001/04/08(日) 16:51
>829 ありがとう。助かります。
835 :
デフォルトの名無しさん :2001/04/08(日) 17:11
なんで暴走するんだろ? 文字(1文字)が入力されるということは、a には 0~255のいずれかの値が入るってことですよね。 そうするとdefault:が実行されるんじゃないの?
836 :
C++ 1年生 :2001/04/08(日) 18:07
>>883 ありがとうございます。
持っている本にはstrtolに関してかいていないみたいなのですが、
型を変換する関数なんでしょうか。googleで検索したところ、
strtol(a, XX); のような感じで使われているっぽいですが、
XXには何を入れればいいのでしょうか。
837 :
デフォルトの名無しさん :2001/04/08(日) 20:32
838 :
C++ 1年生 :2001/04/08(日) 20:36
>>837 Borland C++ Compilerです。
フリーのエディタといっしょに使ってます。
VC++なんかだと関数名入れるとヒントが出るんですよね。 やっぱり最初はそういうの使ったほうがいいんでしょうか。 でもお金ない・・・
840 :
デフォルトの名無しさん :2001/04/08(日) 20:48
>>839 自分の経験だけだけど、そのヒントは大して役に立ってない。
strcpy(char *, char *) みたいな感じで、引数の意味まで
は表示されないから。
841 :
デフォルトの名無しさん :2001/04/08(日) 21:03
>>840 ヘッダに書いてあるものなら、仮引数名と前後のコメントくらいは表示されん?
わかってて読まないとわけわからんのは確かだけど。
>>839 逆に最初はそういうのにに頼らないで、自力で調べる方がいいと思いマス。
843 :
デフォルトの名無しさん :2001/04/08(日) 21:24
>>840 そうですか?私は結構役に立つと思いますけど。
標準ライブラリ中の関数なんかはほとんど覚えてる
からいいですが、APIは覚えてられないですしね。
こういうときはアアダコウダ想像する前に、デバッガで ステップ実行して変数の値とアドレス見てみるべし。 それが一番速い。つうか常識。
皆さんありがとうございます。
>>840 確かに。意味がわかっていないとしょうがないですね。
>>841 strtolについてはまだ???なんで、今からじっくり読むことにします。
恥ずかしながらmsdnライブラリの存在を知らなかったのですごく助かりました。
>>842 はい、自力でがんばります。
VC++買ったつもりでリファレンス本を買おうかと考えてます。
846 :
名無しさん :2001/04/08(日) 22:16
VBでネットワークゲームを作りたいと思っているんですが ほとんどわからないので、説明をしているサイト又は本はないでしょうか?
848 :
デフォルトの名無しさん :2001/04/08(日) 22:32
unix環境初心者です。 emacsを使いたいのですが、今まで使っていたエディタの影響で Tab記号や改行コード、行番号が表示されず落ち着きません。 こういったカスタマイズをしたい場合、参考になる情報(へのポインタ) はありませんか?入門本を読んでもそれらしい記述がみあたらない ので困ってます…。もっともそういう使い方をするエディタじゃない っていわれればそれまでですが。
849 :
デフォルトの名無しさん :2001/04/09(月) 01:04
プログラミングをこれからするなら、 どんな言語あいいですか? Webで使えて、 オブジェクト指向でおねがいします。
あいい>がいい
851 :
デフォルトの名無しさん :2001/04/09(月) 01:12
java
852 :
デフォルトの名無しさん :2001/04/09(月) 01:16
php
853 :
VB厨房@MCSD :2001/04/09(月) 01:21
>>849 マジレスでVisualBasic6.0
クラスプログラミングをマスターした頃にはVB6の寿命が尽きてるだろうから。
そのときなら自分の判断で自分の目標にかなった言語を選択できるはず
854 :
ちゅう房 :2001/04/09(月) 01:43
VC++でShellExcute関数を使っているんですけど 引数がある程度の長さを超えると実行できなくなってしまいます。 おそらくMAX_PATHまでなんでしょうけど、この制限をクリアして無限に長い引数を持たせて ShellExcute関数を実行するいい方法はありませんでしょうか? 実行ファイルが実行できるならShellExcuteじゃなくてもいいです。
855 :
デフォルトの名無しさん :2001/04/09(月) 01:47
>>849 Visual Basic Script
>>849 Visual Basic for Applications
C++ CGIでもかまわないんでそ?>Web
858 :
830 :2001/04/09(月) 04:06
>>831 cinは、
int a
cin>>a
とやると、int型の文字だけとりこんで
int型以外の文字はストリームに残す。
で、残されたものがint型じゃないので
いつまでもとりこまれず
無限に読み込みつづけるというわけ…じゃないかな。
getchar()か何かつければ暴走は止まると思うけど。
間違ってたらゴメンね。
>>830 わかる人誰か教えて。
859 :
デフォルトの名無しさん :2001/04/09(月) 05:14
860 :
849 :2001/04/09(月) 09:29
いろいろありますね。 VB6.0かCGIてのもありですね、応用が利きそうなのは C++だけど、いきなりは厳しそう。
861 :
デフォルトの名無しさん :2001/04/09(月) 09:32
JAVAにしとけ
862 :
C++2日目 :2001/04/09(月) 10:08
C++でオブジェクトのポインタから、メソッドやプロパティを使用するとき、 foo->bar() と (*foo).bar という二つの書き方がありますよね? みなさんはどちらを使いますか? 私の読んだ本では前者を使っていましたのですが、実際世の中はどうなんだろう、 と気になりましたので、質問させていただきました。 よろしくお願いします。
863 :
C++2日目 :2001/04/09(月) 10:34
864 :
>854 :2001/04/09(月) 10:39
そりゃ設計ミスだよ。 別ファイルかパイプで渡したほうがいいよ。
865 :
デフォルトの名無しさん :2001/04/09(月) 12:18
>>849 PHPを出すならPerlと言う手もある。
867 :
初級者 :2001/04/09(月) 14:01
VCでC言語の練習をしているのですが、 stdlib.hにあるrand関数の値はどうなっているのですか? ある本にrandは0から32767までの値を返すとあるので それを元にソースをかいたらどうも違うようなので。 知っている方がいましたらよろしくお願いします。
868 :
C++2日目 :2001/04/09(月) 14:27
>>866 さん
なるほど。普通はアロー演算子を使用するのですね。
それでは、私もアロー演算子を使用します。
どうもありがとうございました。
869 :
デフォルトの名無しさん :2001/04/09(月) 15:28
>>867 どう違うと感じたのですか?
rand関数の前に、srand関数で初期化しないといけない
みたいですが、やりました?
870 :
デフォルトの名無しさん :2001/04/09(月) 15:40
>>867 MSDNでも検索してみてね。
rand で検索するとでてくるよ。
871 :
166 :2001/04/09(月) 15:54
srand(time(0));
872 :
867 :2001/04/09(月) 15:54
>>870 僕のVCはMSDNを入れてないので
ヘルプが引けないのです。(MSDNだけCDがわれてしまって。)
>>869 そうでした。srand関数で初期化を忘れてました。
ありがとうございました。
僕のVCはMSDNを入れてないので ヘルプが引けないのです。(VCだけワレていたので。)
うわっ、ワレだって。やばいじゃん。 フリーのコンパイラと開発環境を使えば良いのに。 墓穴掘ってらぁ。後でチクっとこ。
875 :
867 :2001/04/09(月) 16:10
やっぱり駄目でした。なんで? #include <stdio.h> #include <stdlib.h> //rand関数の為 #include <time.h> //timeの為 int main(void) { int i; long a; srand((unsigned)time(NULL)); printf("今日の運勢を占いますか?\n"); printf("はい だったら1を いいえ なら2を入力してください。:"); scanf("%d",&i); if(i == 1){ a = rand(); if(a >= 0 && a <= 6553) printf("今日の運勢は大吉です。おめでとうございます。\n"); else if(a >= 6554 && a <= 13108) printf("今日の運勢は中吉です。がんばりましょう!。\n"); else if(a >= 13109 && a <= 19659) printf("今日の運勢は吉です。ぼちぼちです。\n"); else if(a >= 19660 && a <= 26216) printf("今日の運勢は小吉です。努力しましょう!。\n"); else printf("今日の運勢は凶です。気をつけてください。\n"); } else printf("終わり。\n"); return(0); } 実行すると常に大吉になってしまいます。 どこかおかしいでしょうか? ちなみにVCは割れではないです。
俺のところじゃ他のも出たよ。 しかし、乱数をそのまま使うか? もし5つの分岐があるなら、 乱数を5で割ったあまり(0~4)の数値を使わないか? 言語の1つ1つの要素を覚えていくのは良いが、 アルゴリズムに関しても勉強しないと、 構成するのに苦労するぜ。
877 :
867 :2001/04/09(月) 16:36
>>876 えっまともに動きました?
なんで僕のは大吉しかでないんだろう?
乱数を5で割って使うのがいいんですか、勉強になります。
アルゴリズムも勉強します。
878 :
867 :2001/04/09(月) 16:41
いやっ今度は何度実行しても中吉ばかりでます。 時間が関係あるのかな?
よくわからんが、時間を元にシードを作っているのでは?秒にしたら?
880 :
867 :2001/04/09(月) 17:41
881 :
879 :2001/04/09(月) 17:58
乱数を発生させる'種'だよ。
コソタクトレンズ
883 :
デフォルトの名無しさん :2001/04/09(月) 18:16
a =rand(); の後に、 cout << a << '\n'; を入れてみたら、たしかに値は毎回異なってるよ。でも 差が +-100程度しか変化してない。 シードの設定で変わってくるかもしれない。他の方法と しては a%5 で余りを算出して switch文を使ったらどうかな。
884 :
デフォルトの名無しさん :2001/04/09(月) 18:17
885 :
デフォルトの名無しさん :2001/04/09(月) 18:20
886 :
867 :2001/04/09(月) 21:56
回答ありがとうございます。 あとシードの設定はどうやって変えるのですか? 何度もすみません。
887 :
デフォルトの名無しさん :2001/04/09(月) 22:15
888 :
デフォルトの名無しさん :2001/04/09(月) 22:30
889 :
C++初心者 :2001/04/10(火) 01:09
char *型を要求する関数にstring型を渡したいのですが どうすればよいのでしょうか? c_str()はconst char*だと怒られてしまいます。
レスがないのでgoogleで検索し直してたのですが 驚くべきことにまっとうな方法は何一つないと書かれている ページを見つけました。STLの設計思想上しょうがないとか。 WindowsのAPIに渡したかったのですが、どうしよう・・・。
891 :
デフォルトの名無しさん :2001/04/10(火) 02:35
>>890 厨房の意見だけど
string s="モナー";
(char *)s.c_str()ってchar *でキャストしちゃ不味いのかな?
>>891 どうしてchar* を要求しているか考えてみるといい。
普通は、char* の指し示す内容を変更する用事があるからそうなっている。
(そうでない場合は最初からconst char* を要求するように設計するべき)
その関数がchar* を要求するのが妥当ならば、何も考えず
char* p = malloc(s.size());
strcpy(p, s.c_str());
foo(p);
とかやるしかないかな?
893 :
889 :2001/04/10(火) 03:10
>>891 そう、私もそれを真っ先に思いついたのですが
どうなんでしょうかね?上記のページでは全く触れられてなかったので
まずいような気がします。
なんか結論としてはstd::auto_ptr<>の配列版(auto_array<>)というのを自作するのが
簡単でよいらしいのですが、やはりC++なのだからSTLが使いたいです。
>>892 なるほど、やはりキャストはまずいんですか。
しかしSTLにはかなり期待してたんですが
いきなりなんかがっかりです。
>>894 それはSTLが悪いんじゃなくて const char* にしておかない
WinAPI が一方的に悪いんだってば。
どう考えてもconst char*で十分だろ、と勝手に判断したAPI相手なら
時々つい const_cast<char*>(s.c_str()) とかやってしまうけどね。
つか、それ以前にstringてSTLだったけか。どうでもいいことだけど。
897 :
デフォルトの名無しさん :2001/04/10(火) 09:42
ソースファイルを5個位に分けて、全てのファイルの全ての関数から見える広域変数を定義するにはどうしたらよいのでしょう。
STL ⊂ C++標準ライブラリ std::string ∈ (C++標準ライブラリ - STL)
899 :
アクセス-エクセル作業者 :2001/04/10(火) 11:06
初心者の質問スレということで、質問させていただいてよろしいでしょうか。 私は以下の<作業>の内容を実行しました。 しかし、<問題点>の内容に問題に悩んでいます。 誠にあつかましいお願いで恐縮ですが、<問題点>の解決について 何か情報がありましたら教えていただきたくお願い申し上げます。 <作業> (1)Access97からSQL-SERVER6.0にアクセスし、あるRecordsetを取得 (2)その内容をローカルテーブルに書き、エクセルシートにエクスポート (3)ところが、そのままでは書式が付けられないので・・・ (4)GetObject()でシートを開き、Excel.Applicationオブジェクトを 操作することによって書式を設定。 .SAVEメソッドにより、ワークシートをセーブ しています。 <問題点> セーブしたワークシートをユーザーさんに開いてもらいますと、 ワークシートが「非表示」になっているのです。 手動で再表示とすれば良いのですが、それでは失格でした。 マクロを探しても、この非表示を解決する手法が見つかりません。 どうかよろしくお願いいたします。
900 :
デフォルトの名無しさん :2001/04/10(火) 11:26
901 :
デフォルトの名無しさん :2001/04/10(火) 11:37
>>899 worksheets(シートのインデックス).Visible = True
Excelだったら「マクロの記録」で吐き出されるコードを
"参考"にすると吉
903 :
デフォルトの名無しさん :
2001/04/12(木) 22:38 アセンブラを勉強中なんですが、ソースプログラムをダウンロード出来る所知ってますか? 沢山のプログラムを見て勉強したいと思っています。 使用予定のマイコンはNEC78シリーズです。 知ってる人いたら教えてくれませんか?お願い致します。