■過去ログ置き場に戻る■
1-
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
VisualC++相談室
1
名前:
いさましいチビの女
:2000/10/04(水) 06:11
C++Builder相談室があるので、バランス的にこういうのがあっても良いですよね?
2
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 11:42
CWinAppとCDocumentとCWiewとCMainFrameの関係とか
ドキュメント・ビューアーキテクチャーとか
ドキュメント・テンプレートとか、俺にも分かるぐらいやさしく
おしえれ。
3
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 11:50
Document-Viewを素直に使ってる奴っているのか?
4
名前:
>2
:2000/10/04(水) 11:58
それ完全に答えるのは、スレでやるのに荷が重過ぎるでしょうに・・
判らない所はどこ?
5
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 16:33
ダイアログのキャンセルボタンを消しちゃったんだけど
あとから、OnCansel() を オーバライドしたいんだけど
クラスウィザードのハンドラの追加とか、仮想関数の追加
ができないんだけど、、、どーすりゃいいんでしょうか?
6
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 18:40
>>5
ボタンを適当に一つ作って、リソースIDをIDCANCELに
書き換えれば出来ないか?
7
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 21:21
いまC++を勉強中でVCかVisualStudioを買おうか迷ってるんだけど
本体以外にドキュメントとかCDROMとかどーゆーのが付いてんの?
windowsAPIのリファレンスとか付いてる? あとMSDNってなにもの?
学生です。買うとしたらVCとwin2000か、VSだけかになる。
8
名前:
>3
:2000/10/04(水) 21:37
たしかに。
見たことないな。
かわいそうなCDocument..
9
名前:
コピペ
:2000/10/04(水) 21:53
VisualSourceSafe"以外"のバージョン管理ツールを
利用できるようにIDEを設定することはできないのでしょうか?
いろいろ試してみたりしているのですが、どうにもわかりません。
10
名前:
proxy.tokyo.mbn.or.jp
:2000/10/04(水) 22:47
hello
11
名前:
cse10-41.chiba.mbn.or.jp
:2000/10/04(水) 22:48
hello world
12
名前:
proxy.tokyo.mbn.or.jp
:2000/10/04(水) 22:49
by
13
名前:
名無しさん@お腹いっぱい。
:2000/10/04(水) 23:13
UNSUBSCRIBE
14
名前:
名無しさん@お腹いっぱい。
:2000/10/05(木) 03:57
完璧にVC使えると、自信を持っていえるのは、
どのくらいのことが出来る事をいうのですか?
面接で恥かかないように、教えてください。
15
名前:
名無しさん@お腹いっぱい。
:2000/10/05(木) 04:45
「VCで幾つかツール作ったことがある」といえばいいんじゃない。
「無理して完璧に使う」こたあない。
16
名前:
14
:2000/10/05(木) 04:57
>15
なるほど。
そのように言うことにします。
ありがとうございました。
17
名前:
名無しさん@お腹いっぱい。
:2000/10/05(木) 16:51
「完璧にVC使えます」とか言う奴は絶対に取りたくないな
18
名前:
名無しさん@お腹いっぱい。
:2000/10/05(木) 20:31
MSの固有仕様を全部把握しろってこと?
そんなん嫌だ
19
名前:
名無しさん@お腹いっぱい。
:2000/10/06(金) 00:26
ダイアログからボタン等のパーツをリソースエディタで
削除したとき"resource.h"から該当パーツの#defineを
自動的に削除できないもんでしょうか?
コンパイルが通ってしまうので困る。
落ちる原因が分からず3時間ほど悩みました。
20
名前:
名無しさん@お腹いっぱい。
:2000/10/06(金) 00:55
「シンボルブラウザ」で未使用のシンボルを選んで削除できたはず。
ただ、使ってないシンボルを#defineしたままでも無害だと思うよ。
GetDlgItemか何かで落ちるのかな?
21
名前:
19
:2000/10/06(金) 09:35
>20
さんきう、すっきりしました。
>GetDlgItemか何かで落ちるのかな?
GetDlgItem(ID)->EnableWindow(TRUE)
で落ちます。当然ですが。
22
名前:
名無しさん@お腹いっぱい。
:2000/10/06(金) 10:47
フローしたツールバーの移動を監視したんだけど
どうすれば、いいのでしょうか?
23
名前:
>22
:2000/10/06(金) 12:20
タイマー監視。
24
名前:
名無しさん@お腹いっぱい。
:2000/10/06(金) 12:29
>>22
なんかメッセージ飛んでこなかったっけ?
25
名前:
名無しさん@お腹いっぱい。
:2000/10/06(金) 15:16
ツールバーの親の親を監視
26
名前:
>22
:2000/10/06(金) 17:23
CToolBarCtrl で OnMove()
27
名前:
なにー?
:2000/10/07(土) 23:36
CDocumentって普通使わないんですか?
今Doc-View構造のプログラミングを勉強してる
トコなんですが
28
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 03:13
1.リストビューの項目をD&Dしたりして、
項目の順序を変えるソフトを見たりするのですが、
どうやってるんでしょうか?
2.最近MFCの勉強を始めたんですけど、(独学)
ツールの使い方自体もよくわかりません。
こんな便利な使い方があるよ、とか デバックは
ああすれば、簡単だってのをお教えください。
29
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 04:07
VC++6でプロファイルとインクリメンタルリンカのチェックボックスが
重なってるのってVCのバグですよね。?
30
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 04:15
>>27
使う人は使う。使わない人は使わない。
31
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 05:38
IPアドレスコントロールの使い方が良くわかりません。
GetAddressで得た値を、
ソケットのConnect等で使うには、どうすればいいのですか?
レベルの低い質問ですみません。お願いします。
32
名前:
ここでいいのかなぁ?
:2000/10/08(日) 14:48
C++でWinアプリ作ってますが、
SysTreeView(エクスプローラの左側の奴ね)ライクで、
独自のコントロールが欲しいんですけど、
こうゆう使い勝手の良いコントロールを
一からコーディングするのって、
スゴイ大変な作業になると思われます。
カスタムツリーコントロールの雛型になるソースなど、
できればフリーで転がってないでしょうか?
33
名前:
27>30
:2000/10/08(日) 14:55
じゃあやっぱりムリして使おうとすることなかったんですね鬱々
34
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 16:30
>>33
しかし「難しくて使えない」ってのは情けない。
「使えるけど、めんどうだから使わない」と言えるようにしておこう。
35
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 21:11
えー、Visual C++5.0にSP3のパッチ当ててます。
http://www.ceres.dti.ne.jp/~goto-ta/windows/tiny.html
このEXEファイル省サイズ化の技を試してみたんですけど、
Test* test = new Test();
delete new;
というコードを入れてみると、
>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
って怒られてしまいます。new演算子定義し直したり、
関係ありそなヘッダを追いかけまくったりしてみたけど分かんないッス。
WinMainCRTStartupを定義せずにデバッガでステップ実行すると、
WinMainを抜けたときに「CRT0.Cのパスを入力してください」と出るのが
何か怪しい気がするんですが……(上の2行を消すと出なくなる)。
この辺、一体何が起こっているのか、どなたか教えて下さいませ。
36
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 21:14
えー、Visual C++5.0にSP3のパッチ当ててます。
http://www.ceres.dti.ne.jp/~goto-ta/windows/tiny.html
このEXEファイル省サイズ化の技を試してみたんですけど、
Test* test = new Test();
delete test;
というコードを入れてみると、
>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
って怒られてしまいます。new演算子定義し直したり、
関係ありそなヘッダを追いかけまくったりしてみたけど分かんないッス。
WinMainCRTStartupを定義せずにデバッガでステップ実行すると、
WinMainを抜けたときに「CRT0.Cのパスを入力してください」と出るのが
何か怪しい気がするんですが……(上の2行を消すと出なくなる)。
この辺、一体何が起こっているのか、どなたか教えて下さいませ。
37
名前:
35
:2000/10/08(日) 21:41
あう、2度書きになってる〜。ごめんちゃい。
エラーメッセージなんて信用するもんじゃないですな。
38
名前:
名無しさん@お腹いっぱい。
:2000/10/08(日) 22:54
>>35
その技、使わなくても良いんじゃない?
39
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 00:50
あのEXEファイル省サイズ化の技では、newとかは使えないよ。
tiny.objの制限に書いてなかった?
40
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 02:44
VC++で指定したフォルダ以下のファイルを処理をしようと思っているのですが、
void Searc(LPCTSTR Name, LPCTSTR Path)
{
CFileFind Seeker;
SetCurrentDirectory( Path );
Seeker.FindFile();
while( Seeker.FindNextFile() )
{
if( Seeker.IsDirectory() )
Search( Name, (LPCTSTR)Seeker.GetFilePath() );
}
Seeker.Close();
Seeker.FindFile( Name );
while( Seeker.FindNextFile() )
{
//処理
}
Seeker.Close();
}
とすると実行時にエラーが出ます。
”ハンドルされていない例外はtest.exe(MSVCRTD.DLL)にあります”
だそうで、CHKSTK.ASM内部で止まりました。解決法求む。
41
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 03:09
SHFileOperationじゃだめ?
42
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 05:04
>40
2回目以降のPathの中身を見てみ。
43
名前:
35
:2000/10/09(月) 09:25
>>39
なぜnewが使えなくなるのか分かります?
省サイズ化の技使わないにしても知りたいッス。
44
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 10:14
VCやりたいんですけど
最低限何の知識があれば
プログラム作れますか?
45
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 10:15
VCやりたいんですけど
最低限何の知識があれば
プログラム作れますか??
46
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 10:25
何を作るかによって全然違います。
ほんとになんでもよいというのなら
サンプル通りに打ち込んで、あとはコンパイルの
しかただけ知っていれば大丈夫です。
これならプログラムの知識はいりません。
47
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 12:44
>>44
初心者だからしょうがないかもしれないけど、
こういうとこで質問する時は、もうすこし話しをつめて
具体的な形にしてくらはい。
48
名前:
39>35
:2000/10/09(月) 14:22
あの技は、win32apiだけで、msvcrt.dllに依存しないでやる方法だとおもってたけど。
だから、ヒープの初期化処理を呼んでないでしょ。自前で呼べば出来るかも?
または、別な初期化処理が足りないのかも?
c++で、やりたいなら、こっちかな?やりたい事が出来るかは分からないけど。
http://www2s.biglobe.ne.jp/~dkm/Yebisuya/WinTips/tips6.html
49
名前:
39
:2000/10/09(月) 17:37
new,deleteはつかえる。スマン
_mainでリンクエラーということは、
main()
がないということでは?コンソールアプリ作ってんの?
50
名前:
39>35
:2000/10/09(月) 18:07
よく見たら
>LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
crt0だから、本来のスタートアップがリンクされている。
リンクの順番とか、オプションとかが間違ってるだけじゃないのかな?
サイズを小さくしたいだけなら、すなおにCRTをダイナミックリンクしたほうがいいのでは?
51
名前:
名無しさん@お腹いっぱい。
:2000/10/09(月) 22:21
ENTRY:_main とかつけたら
できるんじゃないの?
52
名前:
39>35
:2000/10/10(火) 01:38
前に作った奴見てたら、思い出した。
スタートアップで定義されてるグローバル変数がどっかの関数で参照されてると
リンク時にエラーがでる。_errnoとか
53
名前:
名無しさん@お腹いっぱい。
:2000/10/10(火) 03:45
#pragma comment(linker, "/entry:main")
void __cdecl main(void)
{
}
これをコンパイルすると実行ファイルのサイズはどうなるでしょう?
54
名前:
名無しさん@お腹いっぱい。
:2000/10/10(火) 04:06
VC++で自作のヘッダファイルをインクルードしたり、自作の
ライブラリを使う場合はどうしたらいいのでしょうか?
普段はUNIXなのでコマンドライン(あるいはMakefileで)
オプションで指定するか環境変数で指定するのしかしらないです。
VC++の場合どのような環境変数を宣言すればよいのでしょうか?
同じディレクトリに置くと、というの以外で方法を教えてください。
55
名前:
名無しさん@お腹いっぱい。
:2000/10/10(火) 04:15
そんなのVCのhelp見れば。
makefileが書ける人が聞く内容じゃないない気がするけど。
それとも、マウスプチプチのやり方がわからないとか?
56
名前:
名無しさん@お腹いっぱい。
:2000/10/10(火) 04:45
俺的幻想をお壊さないでくれ
>>54
57
名前:
54
:2000/10/10(火) 06:26
helpみて勉強します。まず自助努力ですね。
統合開発環境みたいなの使うの初めてなのでなにか特別な
ものでもあるのかと思ってしまいまして…。 すみません。
58
名前:
名無しさん@お腹いっぱい。
:2000/10/10(火) 18:30
印刷プレビュー時、
pDC->SelectObject(GetStockObject(NULL_BRUSH));
ここで暴走してしまいます。
なんで?
59
名前:
58
:2000/10/10(火) 20:10
アクティブな構成の設定を
デバッグ→リリースに58の現象は、でなくなりました。
なんで?
60
名前:
名無しさん@お腹いっぱい。
:2000/10/11(水) 06:40
暴走するのは、間違ってるから。
リリースで出なくなるのは、VCだから。
SelectObject
GetStockObject
をhelpで調べてみては?
61
名前:
名無しさん@お腹いっぱい。
:2000/10/11(水) 09:16
pDC->SelectObject(GetStockObject(NURANAI_BRUSH));
62
名前:
58
:2000/10/11(水) 10:34
レスありがとう、ヘルプを読みました。
CDC::SelectObject(CBrush* pBrush)は、
CBrush型のポインタを求めている。
GetStockObject(int fnObject)は、
HGDIOBJ型を返している。
つまり型が違うという事ですね、たぶん。
でもコンパイルも通るし、
画面に描画するときもOKで、
デバッグ構成の印刷プレヴュー時だけ
その現象がでるんですね、どうして?(VCだから?)
で、下の方法で解決しました。
SelectObject(pDC->m_hDC,GetStockObject(NULL_BRUSH));
>>61
塗らないブラシは、コンパイルを通りませんでした。
どうして?
63
名前:
名無しさん@お腹いっぱい。
:2000/10/11(水) 11:47
>>62
CDC::SelectStockObject()ってのもあるよ
64
名前:
名無しさん@お腹いっぱい。
:2000/10/11(水) 12:46
SelectObjectをhelpでもう一度調べてみたら。
コンパイルが通るからと安心している、お前がうらやましい。
65
名前:
58
:2000/10/11(水) 17:29
ヘルプ読んだけど、よく解らんかったよ。
> 選択するオブジェクトのハンドルを指定します。オブジェクトは、
> 次に示す関数を使って作成したものでなければなりません。
> オブジェクト 関数
> CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt,
> CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
て事で、GetStockObject で作成したブラシはダメだって事???
ちがう?
>>63
それで、使わさせて頂きます。
66
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 00:37
VC6のSP4なんですが、Debugでビルドした物
を実行すると、
---------------------------------------------
タイトルバー
Microsoft Visual C++ Debug Library
---------------------------------------------
クライアント領域
Program:ファイル名(フルパス)
DAMAGE:after Normal block (#18) at 0x009A0EC0.
(Prees Retry to debug the application)
---------------------------------------------
というエラーのダイアログが出るんですけど、
これってDebug関係のエラーなんでしょうか
それとも、バグがあることを教えてくれてる
んでしょうか。
とりあえず、Releaseでビルドしてもこのダ
イアログは出ませんでした。
エラーが出ている箇所は
delete this;
というところでした
本当に他力本願な書き込みで申し訳ないです。
67
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 03:07
バグです。58が回答するまでお待ち下さい。
68
名前:
>64
:2000/10/12(木) 10:48
SelectObjectのhelp読んだけど 何が問題か解らないゾ!
...ウツダシノウ...
69
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 11:25
じゃ、afxwin.hでもながめてろ。
70
名前:
ぱくぱく名無しさん
:2000/10/12(木) 11:26
質問ですけど、バッファについて。ランしてから、初めの5もじをタイプすると、
行が変わって、その後、5つの文字のひとつでも打つと、一行変わるように
したいんですけど、バッファってどうやって使えばいいのかわかりません
教えてくれませんか?
71
名前:
>69
:2000/10/12(木) 12:09
WINGDI.Hじゃなくて?(w
72
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 17:02
58はMFCベースでプログラム組んでるんじゃないのか?
63の方法で解決してるのにまだ、気にしてるようじゃ駄目だ。
そのうちわかるようになるから、やらないといけないことやれ。
ないなら、66の質問にこたえてみろ。
73
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 17:23
VC++のマルチタスキングに付いて勉強する必要に迫られたのですが、
手持ちの本には申し訳程度のことしか書いてありません。
どなたか、いい勉強サイトをご存知なら教えてもらえませんか?
74
名前:
ヨコ
:2000/10/12(木) 17:26
引数が2こだからAPIの方だろ
75
名前:
>73
:2000/10/12(木) 17:49
>VC++のマルチタスキングに付いて勉強する必要に迫られたのですが、
VCとマルチタスクに何の関係があるんですか?
マルチタスク=マルチスレッドは成り立たないし、
タスクの管理をVCで犯ると言うことですか?
もし出題者がそのままのお題を出しているのなら無知を藁って終わりです
76
名前:
>75
:2000/10/12(木) 17:51
たぶんOSを起そうとしている人だな(ww
77
名前:
名無しさん@お腹いっぱい。
:2000/10/12(木) 18:05
>58
ばかはおれだった。
78
名前:
>70
:2000/10/12(木) 18:41
>質問ですけど、バッファについて。ランしてから、初めの5もじをタイプすると、
>行が変わって、その後、5つの文字のひとつでも打つと、一行変わるように
>したいんですけど、バッファってどうやって使えばいいのかわかりません
>教えてくれませんか?
云っている事がちと不明瞭だが・・・
WM_CHARで捕まえて、後は好みに合わせて料理してください
・仮文字列に1文字追加する
・仮文字列から、表示用文字列に変換する
(5文字毎に改行を挿入する)
文字列をCStringなんかで取れば ::GetLength とか ::Mid とか
::Format とか利用して簡単にできると思うよ
79
名前:
名無しさん@LV3
:2000/10/12(木) 21:37
>70
OSが書いてない。
結論から言うと、そのようなプログラムは移植性の高い形で
実現することは不可能。
なぜなら、C言語およびその標準入出力ライブラリは、
1文字単位の入力をサポートしていないから。
getc, getcharのような関数は1文字を「返す」が、使ってみれば
分かる通り、端末が通常の状態であれば、これらの関数は
ユーザーが改行を入力するまではブロックする。
ユーザが任意の1文字を入力した時にそれを読み出したければ、
端末のモードを変更したり、OS依存の謎の関数を呼ぶことになるが、
どこでも使える移植性に富んだ方法はない。
80
名前:
>79
:2000/10/13(金) 10:06
fread() は?
ってここって、VC++だろ・・・
81
名前:
70
:2000/10/13(金) 14:26
コンパイルして、最初の5文字(何でも選べる)を、タイプし、5文字まとめて表示します。
それは、バッファをつかって、カウンターをつくって。で、そのご、自分の選んだ5文字のうち
どれかをタイプした場合、改行するようにつくるのです。だれか教えてください。
82
名前:
優しい人 > 70
:2000/10/13(金) 14:45
それはコンソールアプリか?
それと何処までのものを自分で作ったか見せてみ、
そのレベルによって教えやるよ(今日、リーダーいないし・・・)
83
名前:
70
:2000/10/13(金) 15:25
言っときますけど、ほんとに初心者ですよ。
#include<conio.h>
#include<stdlib.h>
#defineN5
void main(void)
{
int j,k;
char buff[N],it,bucket;
for(k=0;K<N;K++)
{
it=getch();
buff[N]=it
}
while(j<K)
{
putch(buff[j]);
j=j+1;
}
while(bucket!=27)
{
bucket=getch;
if(bucket==it){
putch(bucket);
putch(10);}
else
putch(bucket);
}
int
84
名前:
優しい人
:2000/10/13(金) 16:26
#include <stdio.h>
#define N 5
int main(void)
{
int j, k ;
char buff[N+1], it, bucket ;
printf("なんか5文字いれろ=>");
for(k = 0;k < N;k ++){
it = getch();
buff[k] = it ;
} // 同じ文字も可能となっている
buff[N] = 0x00 ;
printf("入力した5文字:%s\n",buff) ; // 入力した5文字の表示
while(bucket != 27){ // ESC で 抜ける
bucket = getch() ;
j = 0 ; // j を フラグとして利用
for(k = 0;k < N;k ++)
if(buff[k] == bucket) // 初めの五文字を検索
j = 1 ; // hit!!
if(j == 1)
printf("%c\n",bucket) ; // hitした時は、改行も出す
else
printf("%c",bucket) ;
}
return 0 ;
}
85
名前:
優しい人(つづき)
:2000/10/13(金) 16:27
ちと乱暴だが、意味がまぁまぁ解ったので添削しといた。
改良のポイント:
・初期入力で同じ文字は無効にする
・大文字/小文字の判別を無くしたり
・制御文字をエコーバックさせないようにする
86
名前:
優しい人(注意!)
:2000/10/13(金) 16:29
そのままコピペすると、倍角空白のセイでコンパイルは通らないヨ
87
名前:
VCと関係ないからsageで書くけど
:2000/10/13(金) 17:09
UNIXのエコーバックの制御は、下ネ。
http://www.race.u-tokyo.ac.jp/users/moro/unix-programmer/faq-j_4.html
88
名前:
79
:2000/10/13(金) 18:57
>80
fread()がどうかしたのか。
もっとも「VC++相談室」なのにあんな寝ぼけたレスを書いた
俺は万死に値しますか。
>83
という訳で以下はお詫びのかわり。
1) getcheでその場エコーバック
2) 改行したいときはCR + LFを端末に送る
3) こういう単純な検索はmemchr使えば一発
ってとこずら。
#include <string.h>
#include <conio.h>
#define N 5
#define ESC 27
int main()
{
char buff[N];
int i, c;
for (i = 0; i < N; ++i)
buff[i] = getche();
cputs("\r\n");
while ((c = getche()) != ESC)
if (memchr(buff, c, N))
cputs("\r\n");
return 0;
}
89
名前:
70
:2000/10/14(土) 07:26
どうもありがとう!!>やさしい人
5文字いれたときに、大文字と小文字は、別扱いにしないといけないんです。もし、abcde
といれたら、Aをおしても、改行しません。
90
名前:
名無しさん@お腹いっぱい。
:2000/10/14(土) 13:41
iteratorの何が便利なのか、全然分かりません。
だれか教えてください。
for (it = vect.begin(); it != vect.end(); it++) {
int i =distance(vect.begin(), it);
itを色々と処理
}
for (int i = 0; i < vect.size(); i++) {
vect[i]を色々と処理
}
この二つの書き方はどっちが幸せになれるでしょうか?
vectorへの添え字が欲しい時とかにiteratorを使うと
distance()の分だけ二度手間な気がします。
91
名前:
名無しさん@お腹いっぱい。
:2000/10/14(土) 16:14
>90
> int i =distance(vect.begin(), it);
なぜわざわざこのようなものを使うのか。
*it や it->
を使えば良かろう。
92
名前:
名無しさん@お腹いっぱい。
:2000/10/15(日) 03:05
>>90
vactorやdequeなら後者でもよかろうが、mapなんかはiterator使うしかないだろ。
それから、インデックスに意味があるなら後者の方法を使うべきだろ。
わざわざdistanceを使ってるのはまるっきり意味不明。
93
名前:
90
:2000/10/15(日) 06:04
みんな、ありがとう!
今回は後者でいくことにしまする。
94
名前:
70
:2000/10/16(月) 04:41
>やさしいイ人
コンパイルしたらchar buff[N]がエラーでした。どうしてでしょう?
95
名前:
名無しさん@お腹いっぱい。
:2000/10/16(月) 06:41
配列のサイズには定数しか指定できないよ。
って、Nが変数ってことだよね?それとも;がないって落ちか?
96
名前:
名無しさん@お腹いっぱい。
:2000/10/16(月) 08:35
>94
全角スペースが入ってるからだろ。
キミのコンパイラはエラーメッセージを出さないのか?
97
名前:
優しい人 > 70
:2000/10/16(月) 10:28
char buff[N+1] を char buff[N] と書いたらっていいたいのかな?
・・・buff[N]でもコンパイルは通るし、
実行しても、ちと問題があるぐらいだと思うが・・・
エラーメッセージはどーゆーの?
98
名前:
名無しさん@お腹いっぱい。
:2000/10/16(月) 15:17
CStringを継承したPathStringという自作のクラスを愛用していた
ところ、このPathStringをincludeしただけで、以下のようなメッセー
ジでコンパイルを拒否されて困ってます。結局、必要な機能を新たに
PathStringなしで実装して済ませてますが、不便でなりません。
しかし、いろいろ試した結果、PathStringのcpp部とh部の定義部や
宣言部の中身を空にしても同じエラーが出るので、これはVCそのものに
問題があると確信しました。コンパイルの設定などもいろいろいじって
はみてるのですが、いまだに、問題の原因がわかりません。
だれか、なにか思い当たることがあれば教えてください。
\vc98\include\new(35) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(35) : error C2091:
function returns function
\vc98\include\new(35) : error C2809:
'operator new' has no formal parameters
\vc98\include\new(36) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(37) : error C2091:
function returns function
\vc98\include\new(37) : error C2556:
'void *(__cdecl *__cdecl operator new(void))(unsigned int,const struct std::nothrow_t &)' : overloaded function differs only by return type from 'void *(__cdecl *__cdecl op
erator new(void))(unsigned int)'
\vc98\include\new(35) : see declaration of 'new'
\vc98\include\new(41) : error C2061:
syntax error : identifier 'THIS_FILE'
\vc98\include\new(42) : error C2091:
function returns function
\vc98\include\new(42) : error C2556:
'void *(__cdecl *__cdecl operator new(void))(unsigned int,void *)' : overloaded function differs only by return type from 'void *(__cdecl *__cdecl operator new(void))(unsig
ned int)'
\vc98\include\new(35) : see declaration of 'new'
\vc98\include\new(42) : error C2809:
'operator new' has no formal parameters
\vc98\include\new(42) :
error C2065: '_P' : undeclared identifier
Error executing cl.exe.
99
名前:
>98
:2000/10/16(月) 18:04
>>CStringを継承したPathStringという自作のクラスを愛用していたところ、
愛用していたとゆー事は、以前まではキチンと動いていたという事ですか?
>>これはVCそのものに問題があると確信しました。
これはたぶん違うと思います。
ぼくも試しに class pathString : public CString{};
なんてやってみたけど、すんなりコンパイルは通りましたが。。。
100
名前:
>98
:2000/10/16(月) 18:13
PathString.hで、<afx.h>をインクルードしているか確認してみてください。
101
名前:
名無しさん@お腹いっぱい。
:2000/10/16(月) 22:35
98です。さっそくのお答えをありがとうございます。
afxもincludeしてますし、それはもともとキチンとうごいてました。
それにしても、なんでnew.h内にエラーが起きるんでしょうね。
でも、ファイルが壊れているわけではないはずです。
102
名前:
名無しさん@お腹いっぱい。
:2000/10/16(月) 23:49
PathString公開キボソ
103
名前:
アンポンタン
:2000/10/17(火) 02:06
ビジュアルC自体ひつようですか?
エディタで書くよりいいですか?
104
名前:
名無しさん@お腹いっぱい。
:2000/10/17(火) 04:47
プリコンパイルヘッダ(.pch)が壊れてるとか(たまにある)。
リビルドしても駄目?
105
名前:
70>やさしい人
:2000/10/17(火) 06:27
error C2018: unknown character '0x81'
cこんな感じのが102個もあります。すべて、char buff と、whileのあとの
{ エラーがでています。
106
名前:
優しい人
:2000/10/17(火) 11:36
>>96
さんの“全角スペースが入ってるから”です
エディタで全角スペースを半角スペースに置き換えてみてください
VCのエディタなら ctrl+H で 置換
全角スペースは、MSIMEならshift+スペースででます
って俺って優しくない??
107
名前:
優しい人(訂正)
:2000/10/17(火) 11:47
> エディタで全角スペースを半角スペースに置き換えてみてください
これ、訂正
全角スペース2個→タブ(\t)にね
正規表現にチェックをいれる
108
名前:
クエ
:2000/10/17(火) 12:47
OnKeyDownでシフトを押しながらの方向キーと押さない方向キーを
分けて処理をしたいのですけどやり方がわかりません
109
名前:
>108
:2000/10/17(火) 13:48
GetKeyState(VK_SHIFT);
110
名前:
PathStringうんたら
:2000/10/17(火) 14:46
ヘッダのインクルード順を変えたら動いたりしませんか?
以前、STL+DDrawでこけるとか何とかというのを聞いたことが・・・。
111
名前:
クエ
:2000/10/17(火) 15:14
>>109
感謝します
112
名前:
名無しさん@お腹いっぱい。
:2000/10/17(火) 18:51
>>98
クラスPathStringに、operator系のメンバ関数の宣言を
追加したらどうよ?
おれは以前、VC5で
#include <algorithm>
を使ったとき、使用しないoperatorでも宣言しとかないと
コンパイルエラーになったぞ。
113
名前:
VCLer
:2000/10/17(火) 19:02
CStringは継承できてよいなぁ ヽ(´ー`)ノ
114
名前:
名無しさん@LV3
:2000/10/17(火) 19:37
C++あまり使わないので、常用する方に質問。
CStringクラスのインタフェイスを見る限りでは
仮想関数が一つもなく、特にデストラクタが仮想でないため、
そもそも継承を全く考慮していない(恐らくは効率重視の)
デザインに見えるのですが、どうでしょうか。
それとも、このようなクラスであっても、地雷を踏む覚悟で継承して使うのが
通常のやり方なのでしょうか。
115
名前:
名無しさん@お腹いっぱい。
:2000/10/17(火) 22:37
つーかなんでStringクラス継承するの?
そこまで設計者にさからわんでも、、、
コンポジションして委譲してくんろ。
116
名前:
すとろー先生
:2000/10/17(火) 23:32
CString は自己書き換えメソッドばっかりで使いにくいよ。
std::string の方が100倍良い。
117
名前:
名無しさん@お腹いっぱい。
:2000/10/18(水) 03:54
>やさしい人
ほんとにありがとうございます。プログラム動きました!!!感謝します。
118
名前:
114
:2000/10/18(水) 11:05
>115
それを聞いてやや安心。
private 継承ならば良いように思いますが
コンポジションにすべきですか。
>116
std::basic_string<TCHAR> や std::basic_string<wchar_t>
ではなくて string なのでしょうか。
TCHARを使いたがるような人は CString を使うのかな。
std::basic_string<unsigned char>
はあまりに不便で誰も使わなさそうですね。
119
名前:
116
:2000/10/18(水) 14:25
char でも wchar_t でも unsigned char でも目的によって使い分けるだけで
別に不便とは思わないな。CString の唯一の利点はデバッガサポートがある事だけ。
120
名前:
114
:2000/10/18(水) 15:58
std::basic_string<unsigned char>
ucs(static_cast<unsigned char *>("bar"));
とか書かされるのは嫌じゃ。
という意味で(unsigned char版は)
「使いにくい」
と書いたのです。本当に不便とは思いませんか?
デバッガサポートは本当にそうすね。
それとVC++に限定して言えば、string系クラスの代入・アペンド演算の
効率が鬼のように悪いようなので、CStringユーザーはGetBufferを
多用しているのではと想像。
121
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 12:27
チャイルドフレーム(?)自体にボタンをくっ付ける方法ってありますか?
122
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 15:37
>>114
basic_stringや、STL辺りも全然仮想関数使ってないよ。
STLのコンテナは、継承したいと思うことがわりとあるんだけど名‥‥‥
>>116
確かに、自己書き換えばかりってのは使いづらいね。
しかも、戻り値がvoidなのが多いから、
dist = src.MakeUpper();
みたいなことができない。結構不便だよな‥‥‥
でも、std::stringもformatが欲しいなあ。
あるいは、ストリーム入力をサポートしてくれれば楽なんだけど。
123
名前:
116
:2000/10/19(木) 18:12
>120
違う型で初期化するんだから回りくどい書き方になって当然です。
string<unsigned char>で普通の文字列処理を行なうのが間違ってます。
>122
>でも、std::stringもformatが欲しいなあ。
string format(const char *format, ...) みたいな関数作ればいいだけだと思う。
124
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 19:04
>>122
>STLのコンテナは、継承したいと思うことがわりとあるんだけど名‥‥‥
1. ラッパークラスを書く
2. 似たようなのを作る
しかないよね多分
125
名前:
122
:2000/10/19(木) 19:56
>>123
>string format(const char *format, ...) みたいな関数作ればいいだけだと思う。
やっぱそうかね?ふむ、ちょっとやってみるか。
>>124
オーバーライドやデータメンバの追加がなければ継承で問題なかったりもするんだけどね。
ところで、ostreamクラスのラッパーを作ってみたんだけど、引数付きマニピュレータの
ラッピングのしかたがよくわからなくて困ってます。どうしたものかな?
126
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 19:58
>>124
>2
. 似たようなのを作る
車輪の再発明はちょっとな。
それをやると、STLを使ってる意味がないし。
127
名前:
120
:2000/10/19(木) 20:41
>>116
全然「当然」とは思わない。以下、
> 違う型での初期化
の例。
unsigned char s[] = "hello, world";
-----------------------------------------------
ところでVC++6のCLコンパイラは、上を文句も言わずに通すくせに
unsigned char *s = "world";
は頑強につっぱねますね。普段はC使ってるから気付かんかった。
だれかこの理由を説明をしてくれませんか。
128
名前:
120
:2000/10/19(木) 20:45
今のは
>>123
でした。申し訳ない。
しかも
頑強じゃなくて頑迷。
129
名前:
120
:2000/10/19(木) 20:45
失礼。上のは
>>123
です。
130
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 20:48
しかし、formatのニーズがこれだけあるということは、やはり
型安全だろうが何だろうがstrstreamは人気が無いのでしょうか。
マニュピレータがウザい、とか。
131
名前:
名無しさん@お腹いっぱい。
:2000/10/19(木) 20:48
>string format(const char *format, ...) みたいな関数作ればいいだけだと思う。
stringstream じゃダメですか?(使いにくい?)
132
名前:
116
:2000/10/19(木) 21:15
>127
char から unsigned char への代入はOK
char* から unsigned char* への代入はNG
ってことだな。
133
名前:
116
:2000/10/19(木) 21:20
つまり unsigned char s[] = "hello, world"; は以下の簡略形式ということです。
unsigned char s[] = {'h','e','l','l','o',',',' ','w','o','r','l','d','\0'};
134
名前:
120
:2000/10/19(木) 21:41
>>132
>代入 ×
初期化 ○
ていうかなぜそうなるかが知りたかった訳ですが、
C++の規格書は持っていないので情けないことにヘルプで
理解しました。
要はcharとunsigned charが異なるtypeである以上、それらに対する
pointerがC++的には可換ではないということですが、
自分としてはこれぐらい黙って変換してくれよの気持ちで一杯。
思い返せばC++ではvoid*が何のためにあるのかわかりゃしないという
ぐらい魅力半減なシロモノでしたね。
同じCLコンパイラでも、Cの場合はpointer to another typeへの
型変換をエラーとはしないが、問題ありげなものだけコンパイラが
気を遣って警告してくれるので自分的には嬉しい。
135
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 01:10
安全性には疑問が残りますが共用体つかえば
いくらでも変換はできます。(ポインタ)
もちろん自己責任で。
136
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 02:59
なんかちがうような。
文字列がconst char []だからじゃないのかな
>>127
だからchar *への型変換はさせねえって話。
問題はunsignedの有無じゃなくてconstの有無。
137
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 07:00
C++は
func(char* p) {
signed char用の処理
}
func(unsigned char* p) {
unsigned char用の処理
}
って書けるから。
signed char*とunsigned char*の自動型変換を導入すれば
いいけれど、ただでさえ「あいまい」さがまとわりつく処理が
よりいっそう…
138
名前:
120
:2000/10/20(金) 10:24
日本でプログラミングしている以上、UNICODEを使わないならば
皆さんmbstring系の関数を文字列処理で常用なさっているものと
思いますが、いちいち
mbschr(static_cast<const unsigned char*>(str.c_str(), '\\'));
などと書かされる訳でしょうか。
鬱だ。
>>136
しかし
char *s = "hello";
はOKですよ。厳密にはNGにしなければならないように思えますが
上のようなコードはウンザリするほど多いので通すようににしている
のではと推測。
139
名前:
120
:2000/10/20(金) 10:28
上のカッコの位置間違ってますね。失礼。
mbschr(static_cast<const unsigned char*>(str.c_str()), '\\');
140
名前:
120
:2000/10/20(金) 10:55
というか、
substr や
find 系のメンバ関数が役に立たない以上、デフォルトの
std::stringは使え(わ)ないのが普通なのでしょうかね。
::mbschrは本来findで処理すべき処理な訳ですが。
>>135
C++のポインタ間の型変換規則がCより厳しいのは
フールプルーフのためと考えますが、それのもたらすある種の
不便さへの対策として、unionのような危険なものを一々
持ち出さなければならないとしたら、本末転倒もいいところだと
思いませんか。
私はそのような言語設計を好きにはなれません。
無論、やむを得ず職務上C++を使用せざるを得ない人間にとっての、
その場しのぎの解決策としては役に立つと思いますが。
141
名前:
122
:2000/10/20(金) 11:44
>>120
>mbschr(static_cast<const unsigned char*>(str.c_str()), '\\');
っていうか、static_castは使えませんよ。
mbschr(reinterpret_cast<const unsigned char*>(str.c_str()), '\\');
です。
signedポインタとunsignedポインタの違いはかくも根深いもののようでありますな。
どうでもいいが、意味もなくunsignedポインタや非定数ポインタを要求するライブラリ、逝ってくれ。
いちいちキャストするのが面倒なんだよ!
142
名前:
120
:2000/10/20(金) 14:48
> mbschr(reinterpret_cast<const unsigned char*>(str.c_str()), '\\');
勉強になります。ていうかreinterpret_cast、こんなところで
使うのですね。
ますますイヤさに拍車がかかる...
unsignedポインタですが、それが「C向け」のライブラリ
であれば、"bad API"とは呼べないと思います。
const関係はANSI C的にもその通りですね。
143
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 14:57
>>138
>皆さんmbstring系の関数を文字列処理で常用なさっているものと
>思いますが、いちいち
>mbschr(static_cast<const unsigned char*>(str.c_str(), '\\'));
>などと書かされる訳でしょうか。
もしMFCを使ってるなら、CStringを使えばいいよ。
マルチバイト文字列に対応してるから。
144
名前:
122
:2000/10/20(金) 14:58
>>144
> ますますイヤさに拍車がかかる...
確かに。
何というか、ソースから「ここはおかしなことをしています」という
雰囲気がにじみ出てるようでどうにも気分が良くない。
const_castも同様。
‥‥‥嫌いだ、「C向け」のライブラリ(むしろM$のライブラリ)なんて!
145
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 17:17
おかしな事をしてる部分が目立つようにするため、
あるいは、おかしさのレベル付けをするためにわざわざ異様な
形式のキャストを作ったんじゃないかな。
イヤなら旧式のキャスト使えばいいと思うんですけど。
146
名前:
120
:2000/10/20(金) 17:34
>>143
そのようですね。
もっとも私はC++以上にMFCが大嫌いなのですが....
basic_stringは、ナナメ読みした感じから言って
MBCS用のtraitsを作るぐらいではMBCSに対応できなさそうに見えます。
そのようなことをやってみた方、おられますか?
>>144
私としては単純に、いよいよもってC++が嫌いになるだけの話です。
147
名前:
122
:2000/10/20(金) 17:54
>>145
いや、static_castはむしろ、旧式のキャストに比べて、「何も問題ありません」
という雰囲気がにじみ出る感じがするから、特に抵抗はないです。
少々、記述が面倒だという欠点はありますが。
むしろ、旧式のキャストは「何かおかしなことをしているかもしれません」って
雰囲気で、そっちの方が抵抗があります。
>>146
いや、C++は好きです。基本的に。
やっぱり、Cとの互換のためにおかしなことになってるところがあるって
ことなのかな?
148
名前:
名無しさん@お腹いっぱい。
:2000/10/20(金) 22:00
>MBCS用のtraitsを作るぐらいではMBCSに対応できなさそうに
>見えます。
wstringでWCSを使って下さい。
私に言わせれば今やプログラムの内部でMBCSを使うメリットなど
皆無です。1バイト目と2バイト目の泣き別れや、
パターンマッチングの性能の劣化など百害あって一理なし。
通信やディスクへの書き出しの際にMBCSへ変換しましょう。
149
名前:
145>147
:2000/10/21(土) 09:53
「おかしな」っていうのは安全かどうかという意味もあるけど、
たとえ安全でもキャストは本来排除すべきものであるという
教育的指導の意味合いが強いと思う。あの書式はね。
だから私はstatic_castで「何も問題ありません」とは思わない。
dynamic_castも含めて、なんとか排除してやろうと考えます。
150
名前:
み鶴
:2000/10/22(日) 03:03
プロパティシートにやっと3ページできました
プロパティページの2ページ目から表示させたいの、ですが
どうすればいいですか。
151
名前:
名無しさん@お腹いっぱい。
:2000/10/22(日) 18:13
>>148
で、UNICODE にすればすべての問題が解決すると誤解する人が
増えるんだな。UNICODE つかうなら上から下まで全部使わないと
「ー」「−」とかの区別が付かなくなるんで心しておくと良い。
152
名前:
122
:2000/10/23(月) 12:50
ま、キャストなんかないにこしたことはないというのは激しく同意。
ただ、使用するライブラリの関係上多用せざるを得ない場合があるというのがネックなんだよな。
153
名前:
俺も考えてみた>150
:2000/10/24(火) 04:44
ま猿。た樫。か罪。
154
名前:
122
:2000/10/24(火) 13:04
>>123
と言うわけで、適当に作ってみた。
もっと、スマートな方法ってある?
const string& Format(const char* format, ...)
{
static string ret;
va_list argptr;
va_start(argptr, format);
char *buffer;
int size = 256;
buffer = new char[size];
while(_vsnprintf(buffer, size - 1, format, argptr) == -1){
delete [] buffer;
size *= 2;
buffer = new char[size];
}
ret = buffer;
delete [] buffer;
va_end(argptr);
return ret;
}
155
名前:
名無しさん@お腹いっぱい。
:2000/10/24(火) 13:34
スレッドアンセーフにしてまで参照を返す利点はないと思う。
156
名前:
名無しさん@お腹いっぱい。
:2000/10/24(火) 13:39
varargはね、キャストが増えるという弱点があるから、
避けるのが理想だと思うね。
printf("value = % 3d", 100);
を、
cout << "value = "
<< setw(3) << setfill(' ') << 100 << endl;
157
名前:
122
:2000/10/24(火) 14:47
>>155
ごもっとも。早速修正してみた。
大した修正じゃないから、ソースは出さないけど。
158
名前:
初心者ですみません
:2000/10/24(火) 15:29
CDC *pDC;
pDC=GetDC();
pDC->なんたらかんたら;
ReleaseDC(pDC);
を、単に
GetDC()->なんたらかんたら;
にするのはアリですか?
それと
CBitmap *tempbitmap= new CBitmap;
の破棄は、deleteとDeleteObjrct()とどちらを使えばいいのでしょうか?
159
名前:
名無しさん@お腹いっぱい。
:2000/10/24(火) 15:32
>>158
>GetDC()->なんたらかんたら;
>にするのはアリですか?
リリースできなくなるからナシです。
>deleteとDeleteObjrct()とどちらを使えばいいのでしょうか?
delete
160
名前:
初心者ですみません
:2000/10/24(火) 15:44
早速ありがとうございます。
>>GetDC()->なんたらかんたら;
>>にするのはアリですか?
>リリースできなくなるからナシです。
たとえば「現在のDCにビットマップを送るだけ」とかに
GetDC()->BitBlt(0,0,100,100,tempDC,0,0,SRCCOPY);
とかやりたいんですけどダメですかね?
イメージ的には取得してないので破棄する必要もないのかな、と。
161
名前:
read MSDN.
:2000/10/24(火) 18:28
>>150
SetActivePage()
162
名前:
名無しさん@お腹いっぱい。
:2000/10/25(水) 18:47
MFCであたらしいクラスを作ろうと思うのですが、
どういったものに どんな基本クラスをつかえばよいのかわからないです〜。
163
名前:
名無しさん@お腹いっぱい。
:2000/10/25(水) 19:02
>>162
どんなクラスを作りたいのかわからなきゃ、こちらとしても答えようがありません。
そもそも、わざわざMFCを使おうと思った理由は何?
164
名前:
名無しさん@お腹いっぱい。
:2000/10/25(水) 19:05
仕事でそうなったんです〜
165
名前:
163
:2000/10/25(水) 20:34
>>164
いや、そんなことより何を作りたいの?
166
名前:
名無しさん@お腹いっぱい。
:2000/10/25(水) 21:54
>>158
>とかやりたいんですけどダメですかね?
>イメージ的には取得してないので破棄する必要もないのかな、と。
仮に解放する必要のないとしても関数がエラー値を返した時に対応できないのでやっぱりナシです。
167
名前:
初心者でした
:2000/10/26(木) 11:25
>>166
GetDC()->ButBlt();
で何度も繰り返し描画したらリソースがどんどん減っていきました。
やっぱり解放しないといけないみたいです。
ちなみにヘボプログラマなのでエラーの対処はたいして考えていませんでした。
ごめんなさい。
168
名前:
超初心者
:2000/10/26(木) 11:52
はじめまして、こんにちは。
少し分からないところがあるんで、どうかお願いします。
「データの読みこみ方」についてなんですけど
データ(例:suti.dat)
11 90
80 100
30 80
・
・
・
って書かれてあるものをオープンして読みこみたいんですけど
どうすればいいのかヘルプを読んでもよく分からなかったんです。
読みこんだあと配列の値(a[1][0]=11 a[1][1]=90)としたいのですが、
何かアドバイスお願いします。
169
名前:
名無しさん@お腹いっぱい。
:2000/10/26(木) 15:20
>>168
っていうか、具体的にどこがわからないの?
それがわからないと答えようがないんだけど。
170
名前:
名無しさん@お腹いっぱい。
:2000/10/26(木) 23:06
たまにはマジレス
返り値 関数(ファイル名やら、配列のアドレスやら)
{
ファイルをオープンする
if (失敗) {
エラー処理orエラーコードを返す
}
while (一行読みこんでファイルの終りじゃなかった) {
読んだ文字列を数値に直し、配列に格納する
}
ファイルを閉じる
エラーが無かったら成功コードを返す
}
171
名前:
名無しさん@お願いっぱい。
:2000/10/27(金) 12:54
ドキュメントデータを圧縮して保存したいのですが、
JAVAのjava.util.zip.Deflater クラスみたいな
便利な道具は、ありますか?
172
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 12:58
>>171
lzh とか zip とかのDLLは使えんの?
173
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 13:00
>>169
たぶん、なにもかもさっぱり分からないのだと思う。
174
名前:
171
:2000/10/27(金) 13:07
どちらかといえば、内蔵したいのです。
>>172
関連して、DLLを使用する場合のライセンスとかは、
どうなっているんでしょうか?
175
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 13:40
>>174
ライセンスは、使いたい DLL のドキュメントを参照してください。
アーカイブ系のDLL は↓のサイトが便利です。
http://csdinc.co.jp/archiver/lib/main.html
176
名前:
171
:2000/10/27(金) 13:59
ありがとうございます
>>175
177
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 16:24
VC6です。あるウィンドウを、ウィンドウができてからどの他のウィン
ドウをアクティブにしても、常にトップレベルウィンドウになるように
固定するには、どうしたらよいのでしょうか…。
よろしくおねがいします。
178
名前:
>177
:2000/10/27(金) 17:28
WS_EX_TOPMOSTな
179
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 19:06
細かい事だけど、トップレベルウィンドウは
違う意味だよ。
180
名前:
177
:2000/10/27(金) 19:51
え゛・・・。トップレベルウィンドウとは画面上で一番上になっている
窓のことだと思ってました。どう違うんですか?
181
名前:
179
:2000/10/27(金) 20:49
ヘルプにかいてある。
画面で一番上になっているのはフォアグラウンドウィンドウ。
トップレベルウィンドウはいわゆる一般的なウィンドウ全部をさす。
そうじゃないのは子ウィンドウ(ボタンとかね)
182
名前:
179
:2000/10/27(金) 20:56
フォアグラウンドウィンドウの説明間違い。ヘルプ読んで。
183
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 21:15
>181
それも違う
フォアグラウンドはアクティブなフォーカスのあるウィンドウのこと。
フォアグラウンドも通常は最前面にあるが例外もある。
177のいう他のウインドウをアクティブにして非アクティブに
他のウィンドウよりも前面に位置するウィンドウはトップモストだ。
ステイオントップなんていわれることもある。
>177
CreateWindowExを見よ。
184
名前:
( ´∀`)さん
:2000/10/27(金) 23:06
厨房でスミマセソ
CDCのTextOutとかで文字列を書き込む時に使う
フォントを指定するのはどうやってやればいいでスか?
185
名前:
名無しさん@お腹いっぱい。
:2000/10/27(金) 23:27
CFontをつくって、SelectObject()なъ( ゚ー^)
186
名前:
( ´∀`)さん>>185
:2000/10/27(金) 23:40
・・・了解
鬱だけど逝きよう…
187
名前:
名無しさん@お腹いっぱい。
:2000/10/28(土) 19:08
初心者です。
ある文字列を別の文字列に置換する関数を作りたいのですが難し過ぎて
手が出ません。
CString::ReplaceのようなものをSDKだけを使って作りたいのです。
どなたか教えて下さい。
188
名前:
名無しさん@お腹いっぱい。
:2000/10/28(土) 23:15
なぜ既にあるものを作ろうとするのか?
>187
勉強のためというならわかるが‥
189
名前:
名無しさん@お腹いっぱい。
:2000/10/28(土) 23:25
strstr()を駆使してがんばれъ( ゚ー^)
190
名前:
名無しさん@お腹いっぱい。
:2000/10/28(土) 23:25
http://piza.2ch.net/test/read.cgi?bbs=tech&key=972707778
勉強するつもりなら、ここ逝け>初心者
191
名前:
つーか
:2000/10/28(土) 23:35
>SDKだけを使って
ってなんぞや?
192
名前:
名無しさん@お腹いっぱい。
:2000/10/28(土) 23:52
188>>MFC依存から脱皮したいからです。まあ勉強の為です。
190>>Cの標準関数にはありませんのでそのスレにはふさわしくないです。
191>>MFCを使わずにということです。
193
名前:
名無しさん@お腹いっぱい。
:2000/10/29(日) 00:04
バーカ、そのスレを読んで勉強しろって言われてんだよ
194
名前:
名無しさん@お腹いっぱい。
:2000/10/29(日) 00:09
193>> 了解。逝ってきます。
195
名前:
名無しさん@お腹いっぱい。
:2000/10/29(日) 00:32
>187
VCにまつわる問題というのではなさそうなので
他の初心者スレに行く事をお勧めします。
196
名前:
名無しさん@お腹いっぱい。
:2000/10/29(日) 00:35
あ、遅かった。スマソ
197
名前:
名無しさん@お腹いっぱい。
:2000/10/29(日) 01:47
VCの参考書でこれだけは買っとけみたいな
物はありますかね?
198
名前:
無名選手@投げたらアカん!
:2000/10/30(月) 14:47
卒業研究でテキストエディタを作っているんですけど、下のソースが上手く動かない
んです。教えて頂けませんか?
/////////////////////////////////////////////////////////////////////////////
// ファイルを開く
void CMainFrame::OnMenuOpen()
{
CString cstTemp, cstTarget ;
CFileDialog cfdgLoad(TRUE, "txt", NULL, NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;
CString filename;
if(cfdgLoad.DoModal() == IDOK){
TRY{
CStdioFile cstdLoad(cfdgLoad.GetPathName(),CFile::modeRead);
while(cstdLoad.ReadString(cstTemp)!=NULL){
}
}
CATCH(CFileException, e)
{
AfxMessageBox(cfdgLoad.GetPathName() + "の読み込みエラーです。") ;
}
END_CATCH
}
}
/////////////////////////////////////////////////////////////////////////////
// ファイルに名前を付けて保存
void CMainFrame::OnMenuSaveAs()
{
CFileDialog cfdgSave(FALSE, "txt", NULL, OFN_OVERWRITEPROMPT,"テキスト文章|*.txt|HTML(*.html,*htm)|*.html,*htm|全てのファイル(*.*)|*.*|") ; CString filename;
if(cfdgSave.DoModal() == IDOK){
TRY{
CStdioFile cstdSave(cfdgSave.GetPathName(),CFile::modeCreate|CFile::modeWrite);
}
CATCH(CFileException, e)
{
switch(e->m_cause) {
case CFileException::diskFull:
AfxMessageBox("ディスクの容量不足です。") ;
break ;
case CFileException::hardIO:
AfxMessageBox("ハードウエアエラーです。") ;
break ;
default:
AfxMessageBox(cfdgSave.GetPathName() + "の書き込みエラーです。") ;
}
}
END_CATCH
}
}
199
名前:
無名選手@投げたらアカん!
:2000/10/30(月) 14:51
198です。
保存は問題がありつつ出来るんです。しかし、読み込みが出来ません。
教授に怒られちゃってブルーです
200
名前:
名無しさん@お腹いっぱい。
:2000/10/30(月) 17:04
VC6です。以前に、ウィンドウの開閉を繰り返しているとどんどん
リソースか何だかが減っていって、最後にはクラッシュするという
話を聞いたことがあるんですが、これは、しっかりとDestroyWindow
などをしても、ウィンドウの開閉を繰り返すのはよくないということ
でしょうか…。
201
名前:
名無しさん@お腹いっぱい。
:2000/11/01(水) 05:30
誰か答えてやれよ。VC屋は
202
名前:
名無しさん@お腹いっぱい。
:2000/11/01(水) 05:50
>>200
普通に作っていれば、ウインドウの開閉だけでリソースは減ったりしない。
203
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 04:52
>>198
=199
なにを教えて欲しいのかちゃんと書いてくれ。
ソース出されただけじゃ意味不明だよ。
そもそもインデントもされてないソースなんて読む気もしないが。
204
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 05:02
>>200
どこかでメモリか、リソースのリークしてるの。
ありがちなのはGDIオブジェクトとかだな。
規模がデカくなると、こういうバグは取り難くなるから、ほっとかずに早めに対処した方が良いよ。
モジュール毎に分けて、単体テストやるなりすれば、何処がおかしいかいずれわかるよ。
205
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 05:08
>>200
>最後にはクラッシュするという話を聞いたことがある
そんな事話したバカ逝ってよし!
だな(藁
206
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 06:39
>>198
>CFileDialog cfdgLoad(TRUE, "txt", NULL, NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;
CFileDialog cfdgLoad(TRUE,"txt",NULL,NULL,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html;*.htm|全てのファイル(*.*)|*.*||");
フィルタの記述が間違ってるんじゃないの?
っーか、「読み込みが出来ません」だけじゃなぁ・・・
207
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 12:13
198です。
>203
さん
インデントって何ですか?。全く分からなくて申し訳ありません。
>206
さん
大幅にソースを書き換えましたこれでも、読み込めなかったです。
仕方がないのでstring_tableを「\n\nテキスト\nテキスト(*.txt)\n.txt\n」
にして応急処置をしました。
// ファイルを開く
void CMainFrame::OnMenuOpen()
{
CFileDialog dlg(TRUE, NULL, NULL,OFN_EXPLORER,"テキスト文章|*.txt|HTML(*.html,*.htm)|*.html,*.htm|全てのファイル(*.*)|*.*|") ;
if(dlg.DoModal() == IDOK)
{
//読み込むファイルのパスを取得する
CString strFilename=dlg.GetPathName();
CFile textFile;
//ファイルを開く
textFile.Open(strFilename,CFile::modeRead);
//Carchiveオブジェクトarchibeを生成する
CArchive archive(&textFile,CArchive::load);
//Serialize関数を呼び出す
Serialize(archive);
//Carchiveオブジェクトarchibeを閉じる
archive.Close();
//CFileオブジェクトtextFileをクローズする
textFile.Close();
//クライアント領域を更新する
Invalidate(TRUE);
}
}
// ファイルに名前を付けて保存
void CMainFrame::OnMenuSaveAs()
{
CFileDialog dlg(FALSE, NULL, NULL, OFN_OVERWRITEPROMPT,"テキスト文章|*.txt|HTML(*.html,*htm)|*.html,*htm|") ;
if(dlg.DoModal() == IDOK)
{
//ファイル選択ダイアログで選択されたファイルをstrFilenameに設定する
CString strFilename=dlg.GetPathName();
CFile textFile;
//CFileオブジェクトtextFileをオープンする
textFile.Open(strFilename,CFile::modeCreate | CFile::modeWrite);
//Carchiveオブジェクトarchibeを生成する
CArchive archive(&textFile,CArchive::store);
//Serialize関数を呼び出す
Serialize(archive);
//Carchiveオブジェクトarchibeを閉じる
archive.Close();
//CFileオブジェクトtextFileをクローズする
textFile.Close();
}
}
208
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 12:18
再び198です
>203
さん
とにかく上のソースを正常に動作させたいんです。
今の段階では満足いってません(涙)
209
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 12:29
___/ 冫 ∧_∧
∧_∧ _ __ (_ / (´∀` )
( ´∀`)/ ) ) | | // \
( ⊃/ // ∧_∧ (__(_/` |
\__// ( ´∀`) _///
 ̄ ∪ ̄∪ (__(__)
「レ」 「イ」 「ク」
210
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 13:06
>>198
もう少し、いやもっと大幅に自分で調べる習慣をつけろ。
>インデントって何ですか?。全く分からなくて申し訳ありません。
Yahoo! で「インデント」で検索するだけでもいくつかヒントは得られるだろ?
アスキー デジタル用語辞典
http://www.ascii.co.jp/ghelp/
とかで
調べてもいいんじゃないの?
それでもわかんないときになって、はじめて人に聞きなさい。
>保存は問題がありつつ出来るんです。しかし、読み込みが出来ません。
「出来ません」ってどうなるのよ? 途中でエラーがおきて異常終了する、
ファイル選択ダイアログが出てほしいのに出てくれない、ファイル名は
指定できて関数も正常終了するけど読み込まれたデータがファイルの内容
と一致しない、etc. 最低限そんくらい説明しろ。
友達を家に読んだときショートメールで「そっちの家までいけません。
どうすればイイですか?」としか聞かれなかったら「あなたはいま
どこにいるの? 家の場所がわからないの? それとも最寄り駅が
わからないの?」とかいろいろ聞き返さなきゃいけなくて、メンドウだろう?
最初から「いま最寄り駅にいるけど南口と北口のどっちで降りるのか?」
みたいに質問されれば答える方もラクだろう?
なにやるにしても、他人の善意の上にあぐらをかくな。
211
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 14:06
↓こんなのはアリなのでしょうか?
thisはParent構造体を指してると思いこんで良いのでしょうか…。
一応動作しているのですが…。
typedef struct {
char a[100];
} Parent;
class Child : public Parent
{
public:
Child() {
//↓問題部分↓ 構造体Parentを0クリアしているつもり...
memset( this, 0, sizeof(Parent) );
};
};
212
名前:
211
:2000/11/02(木) 14:16
すみません。質問がアホでした。一眠りします。終了。
typedef struct {
char a[10];
} Ojiji;
typedef struct {
char a[10];
} Obaba;
class Aho : public Ojiji, Obaba
{
public:
Aho() {
memset( (Ojiji*)this, 1, sizeof(Ojiji) );
memset( (Obaba*)this, 2, sizeof(Obaba) );
};
};
213
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 14:51
198です
>210
さん
不愉快にさせてしまい申し訳ありませんでした。氏にます。。。
ダイアログは出せます。エラーは全く出ないんですけど、保存したファイルを
表示させる事が出来ないんです。
214
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 14:55
たびたび198です
保存したファイルを選択して開こうとしても、何も反応してくれないんです
215
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 15:39
>>198
読み込みの途中でハングアップするってことか?
デバッガでどこで止まってるのか調べてみたか?
#デバッガの使い方は、ヘルプで調べること。
216
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 15:55
198です。
>215
さん
ハングアップしないです。
読み込む動作まではできますが、肝心な保存した文章が出てこないんです
217
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 17:47
>>198
「読み込む動作まではできる」とは?
意図したファイルの内容が、意図したとおりのバッファに書き込まれている
ことを確認したということ?
「文章が出てこない」とは?
バッファに文字列が書き込まれているのに、画面にその文字列が出ないということ?
もしそうなら、ファイル読み込みの問題ではないのでは?
218
名前:
無名選手@投げたらアカん!
:2000/11/02(木) 18:14
198です。
>217
さん
画面に文字列は出てきません。その原因は分かりません。スイマセン
基本的に保存は出来るのですが、ウインドウの左上に保存したファイル名
が反映されないです。
219
名前:
名無しさん@お腹いっぱい。
:2000/11/02(木) 19:04
>>198
.........
そこまで手取り足取り教える気になりません。自力でやってください。
2chを頻繁に見る時間はあるようですから、初歩的な教科書を探して買って
勉強する時間や、ヘルプとサンプルを読む時間は作れるでしょう?
220
名前:
203
:2000/11/03(金) 00:45
>>198
だめだこいつ…。
219はよく付き合ってあげたな。
もういいと思うよ。198には無駄な努力だったみたい。
221
名前:
名無しさん@Cプログラマ、C++は専門外
:2000/11/03(金) 02:08
ならば私が引き継ごう。
>>198
while(cstdLoad.ReadString(cstTemp)!=NULL){
}
ってなんだ?
cstTemp にファイルの最後まで読むのは分かるが cstTemp に読みつづけたら読んだ内容がクリアされるだろ?
ReadString って1行ずつ読みこむんだろ?
ループ中で cstTarget かなんかに追加コピーするんじゃないか?
保存する方は全く保存の処理がかかれていないような気がするが俺の見間違いか?
眠いから目がかすんでるんだよ!
それとファイルアクセスの最後で Close しなくても良いのか?
俺が言えるのはこれくらいだ!!
222
名前:
名無しさん@お腹いっぱい。
:2000/11/03(金) 03:00
>>221
いいよもう。
198も、どうせ教授に怒られるだけだろ。
いっそのこと、その教授ぶん殴って学校やめちまえば?
223
名前:
ぱくぱく名無しさん
:2000/11/04(土) 16:43
ポインターの意味が全くわかりません。だれか教えてください。
どういう風に使うか、例とかもだしてください。
224
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 17:02
>>223
入門書よめ。
225
名前:
名無しさん@優しい人
:2000/11/04(土) 17:39
>>223
pointer: n.指示する人〔物〕;(時計・計器の)指針;教鞭(べん);〈話〉ヒント,示唆(しさ);ポインター〈猟犬〉;(pl.) (the P‐)《天》指極星〈大熊(くま)座中の二星〉.
これでいいですか?(冗談です
ちなみにポインタを学習する場合、アセンブラも同時に覚えると上達が早いです。
逆にアセンブラが書ける人はポインタの事を理解してると言えます。
226
名前:
ぱくぱく名無しさん
:2000/11/04(土) 18:58
入門書読んでもわからないから、聞いてます。ただ、私がバカなだけ。
227
名前:
名無しさん@優しい人
:2000/11/04(土) 19:13
>>226
読んでもわからないバカに何言っても、無駄。
228
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 20:03
読んだだでわかんないなら、いろいろ試してみれ。
229
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 21:10
//じゃあ、ポインタの使い方。
int main()
{
char *buf;
buf = malloc(11);
printf("10文字入力してください:");
gets(buf);
printf("あなたの入力した文字は [%s] です(ワラ", buf);
}
230
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 21:14
ポインタ 参照 アドレス 別名 と4つの言葉を日本語と英語で100ペン
唱えながから筆ペンでCRTの4隅に書くと、なんか啓示を受けるそうです。
231
名前:
>229
:2000/11/04(土) 22:26
必要不要論はここでは無用として
とりあえず サンプルなんだからfreeは入れとこう。
232
名前:
231
:2000/11/04(土) 22:28
あとは暴走させていろいろ考えさせてみようという事なんだろうから
まあやってみたらと言う事で
233
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 23:20
>>229
freeはともかくreturnは入れとけ
234
名前:
名無しさん@優しい人
:2000/11/04(土) 23:25
>229
,230,231,232
あんな質問にいちいち付き合おうとするおまえらに乾杯!
235
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 23:36
>>229
(char*)malloc キャストも氏とけ!
236
名前:
名無しさん@優しい人
:2000/11/04(土) 23:49
>>235
揚げ足になってしまうが、ANSIだったらキャストは必要ないよ。
キャストが必要だったのは(void *)の無かったANSI以前の時代だ。(K&Rとか)
237
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 23:52
malloc(sizeof(char)*11)で逝け
238
名前:
名無しさん@お腹いっぱい。
:2000/11/04(土) 23:56
>>236
VC++6.0の場合、Cで malloc をキャスト無しで使うとワーニングがでて
C++の場合はコンパイルエラーになる。
239
名前:
名無しさん@優しい人
:2000/11/05(日) 00:01
>>237
揚げ足になってしまうが、sizeof(char)はどうやっても1なので冗長です。
>>238
わたしも普段VC6.0ですが?
240
名前:
名無しさん@冷たい人
:2000/11/05(日) 00:18
229を修正してやるぜ!
int main()
{
char *buf;
long buflen = 11;
buf = (char*)malloc(buflen);
printf("10文字入力してちょ♪:");
fgets( buf , buflen , stdin );
if( buf[ strlen(buf) -1 ] == '\n' )
buf[ strlen(buf) -1 ] = '\0';
printf("彼方が入力した文字は [%s]ですよぉ〜(10文字以上は切り捨てよん)\n", buf);
return 0;
}
241
名前:
名無しさん@お腹いっぱい。
:2000/11/05(日) 00:28
>>240
だから free しろよ!
242
名前:
名無しさん@お腹いっぱい。
:2000/11/05(日) 00:34
#include しろよ!
243
名前:
名無しさん@優しい人
:2000/11/05(日) 00:40
>>241
=242か?
んなことより本質的な事忘れてるよ…
>>240
テストしたか?
#それにしても気持ち悪い書き方だな。
244
名前:
名無しさん@お腹いっぱい。
:2000/11/05(日) 01:30
>>240
>10
文字以上
以上じゃないぞ!
245
名前:
名無しさん@お腹いっぱい。
:2000/11/06(月) 17:37
VC6使ってますけど、いまいち、CRuntimeClassからCreateObjectしてできた
インスタンスの開放の仕方が良くわかりません。これは、deleteでもなくfree
するものでもなさそうなんですが、どうやるんですか?
すいません。おねがいします。
246
名前:
名無しさん@お腹いっぱい。
:2000/11/06(月) 18:41
DestroyObject()
247
名前:
名無しさん@お腹いっぱい。
:2000/11/06(月) 18:54
>>243
何だよ、本質的なことって?それを言えよ。
全く、何で上からわかった気になって悦に入ってるだけなんだ、こいつらは。
248
名前:
名無しさん@お腹いっぱい。
:2000/11/06(月) 19:04
サンプルなんだけど、とりあえずNULLチェックはしておけ。
249
名前:
>245
:2000/11/06(月) 19:17
deleteでいいんじゃない?
CView派生とかCFrameWnd派生の場合はDestroyWindow()で
250
名前:
243じゃないけど
:2000/11/07(火) 00:42
>247
もしかして、9行目はたまにアロケートされた外を書き換える
可能性があるのでは?アロケートしたメモリの、11文字目が
たまたま\0なら問題ないだろうけど…
■過去ログ置き場に戻る■
1-
次250
最新50
DAT2HTML
0.33f Converted.