[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/05 22:03 / Filesize : 248 KB / Number-of Response : 984
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part32



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5辺り。

33 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:45:25 ]
えらそうに

34 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:48:14 ]
いや実際教えようがないだろ。32とは別人だが。

35 名前:31 mailto:sage [2008/11/03(月) 22:59:47 ]
loadgraphなどを使って画像は表示されるのですが、表示されるだけで動かなかったり。
どうしてもキャラクタの描写を自分の書いた画像に置き換えることができない状態です・・・。


36 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 09:47:10 ]
お客様にエスパーさんはいらっしゃいますか

37 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 09:59:15 ]
その動かないコードをなんで書かないんだよ。
間違ってるところも指摘できないじゃないか。

38 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 10:17:24 ]
知ってることを教えるのとソリューションを提供するのとは別なんだとつくづく

39 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 11:06:58 ]
DrawBoxやloadgraphなんて聞いたこともない

40 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 13:38:47 ]
URLにDxLibってあるから想像はつくが>>31
loadgraphが全部小文字なのはおかしいな


41 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 13:41:54 ]
つーか、普通に貼ったURLのとこちょっと見ただけで普通に画像に差し替えられるが
どこが引っ掛かってるのだろうか。一応絵は出るらしいからパス設定じゃなさそうだし。



42 名前:デフォルトの名無しさん [2008/11/04(火) 20:33:37 ]
質問です。
PC初期化したのでVC++を再インスコしたんですが
プログラム書いてもビルドできません。
2〜3秒フリーズして「応答なし」
となってしまいます。
これはスペックの問題なんですかね?

OS vista 
CPU celeron M
メモリ 2G
のノートPCです。

43 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:39:57 ]
XPでカーソルを変更するにはどうすればいいんですか?

HCURSOR hCursor;
hCursor = AfxGetApp()->LoadCursor(IDC_WAIT);
SetCursor( hCursor );

hCursorがNULLになるんです


44 名前:デフォルトの名無しさん mailto:ttp://msdn.microsoft.com/ja-jp/library/x6k5bzz2.aspx [2008/11/04(火) 23:01:29 ]
MSDNライブラリくらい調べてから質問しろよ

45 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 01:05:52 ]
複数イベントから同一のデータを更新したい場合
たとえばグローバル変数を使って

// グローバル変数
int g_count;

// ボタン1押下時処理
void OnButton1()
{
  g_count++;
}

// ボタン2押下時処理
void OnButton2()
{
  g_count++;
}

のようにやることができますが、
同様のことをグローバル変数を使わずにやる方法はないでしょうか?

46 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 01:09:44 ]
あります

47 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 02:47:47 ]
ダイアログウィンドウで配置しないでクリエイトで作ったCButtonのキャプションのフォントサイズを変更するにはどうすればいいんですか?

48 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 09:38:48 ]
>>47
言語とか環境は何?
まあWM_SETFONTで。

49 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 09:39:23 ]
おっと、言語はC++か。

50 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:20:33 ]
CButtonならおそらくMFC

51 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 10:39:42 ]
ああ、そっか



52 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 15:46:31 ]
で、CFontがスコープ外れて消滅し
フォントが変わりませんと、また質問が来る・・・と

53 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 21:45:03 ]
フォントの変更できました。ありがとうございました。

54 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 21:52:45 ]
ボタンが灰色になっていて押せません。
m_Btn1.EnableWindow(TRUE);
でも
m_Btn1.SetCheck(BST_UNCHECKED);
でも出来ません。起動後一瞬黒くなるんですが、すぐ灰色になります。どういうことですか?

55 名前:デフォルトの名無しさん [2008/11/05(水) 22:38:10 ]
iostreamはどこからダウンロードすればいいのでしょうか?
あるいはどこのフォルダに格納されているのでしょうか?

iostreamを用いたプログラミングがしたいのですが…

56 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:43:53 ]
C++で#include <iostream>してエラーが出るなら、再インストールでもしておけ。

57 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:44:03 ]
マウスメッセージはポイントにあるコントロールにメッセージが送られるんですか?
コントロールのクラスを作って、その中でメッセージ対応の処理を書く以外で、クラスを作らずに親ウィンドウでメッセージ処理をするにはどうすればいいんですか?

58 名前:デフォルトの名無しさん [2008/11/05(水) 22:45:59 ]
>>56
それででますね…
再インストールしたほうがよさそうですね

59 名前:デフォルトの名無しさん [2008/11/05(水) 22:54:51 ]
>>56
あ、違います。
#include <iostream>
じゃなくて
#include <unistd.h>がエラー出てました
unistd.hというヘッダファイルはどうやって登録すればいいんでしょうか?
unistd.hというファイルをどこからかダウンロードして#include ""の絶対パスで指定するんですか?

60 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 23:06:59 ]
<unistd.h>はUnix/Linux固有のものがいっぱい詰まったヘッダ。
Windowsでいうとこの<windows.h>みたいなもの。
当然VC++用の<unistd.h>なんてない。

ようするに、VC++でそれをコンパイルさせないといけないのなら、
<unistd.h>なしでコンパイルできるようにすることこそがWindowsへの移植という君の仕事。
趣味ならCygwinでGCCでも使っておけ。

61 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 06:14:00 ]
>>59
とりあえず、エラーが出た

#include <unistd.h>

をコメント行(//)に変えた状態でコンパイルしてみれば、<unistd.h>内で
宣言・定義された関数や定数のうち、実際にプログラム中で使われている
ものだけが未定義エラー等で出力されると思うので、それらの機能や値の
意味を調べて、Windows APIや、Windowsの定数に置き換えてやればよい。

ソース内で使われている場所は、コンパイルエラーや警告が出た行。

エラーとして出ない関数や定数は、今回のプログラム中では使われて
いないので、放置してよい。

バカ正直にUnix互換のライブラリを用意する必要はない。



62 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 10:01:10 ]
>>54
状況がわからんけど、ハンドラは書いた?

63 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 16:01:05 ]
>>62
ハンドラはこれだけではダメなんでしょうか?
ボタンが灰色なだけでなく、メッセージも受け取れません。
ヘルプを見れば全てわかるように書いてあるそうですが、仕組みがわからず読み取ることもできません
おしえてください。お願いします。

//FileView.h
CMFCButton m_Btn;
afx_msg void LButtonDown();

//FileView.ccp
BEGIN_MESSAGE_MAP(CFileView, CDockablePane)
ON_BN_CLICKED(7, LButton)
END_MESSAGE_MAP()


CFileView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
m_Btn.Create(_T("OK"), WS_VISIBLE | WS_CHILD, rectDummy, this, 7)
m_Btn.EnableWindow(TRUE);
}

void CFileView::LButton()
{
TRACE0("OK\n");
}

64 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 17:20:53 ]
2008SP1のMFCはまだ触ってないからよくわからんが、
せめてIDは、、リソースをアクティブにした状態で編集メニューから
リソースシンボル→新規作成で作ってそれ使ったほうがいいぞ・・

今までのViewにそのやり方でボタン貼り付けたら機能するから
CDockablePaneの仕様によるのかもね。

65 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 17:43:29 ]
2008では、CDockablePaneなんて追加されたのか。

CSplitterWndクラスで作成する分割ウィンドウみたいなやつなら、ペイン
自体はCFrameWndみたいな枠だけじゃないのかな?

何がやりたいのか判らんが、CReBarとCDialogBarとかを使う方が簡単じゃ
ないのかな?

慣れていれば、シンボルはresource.hを直接編集してもいいと思うけど、
とりあえずマジックナンバーはやめようよ。

VC6ではできたのに、2003以降、IDE内で開いているプロジェクトのリソ
ースペインに、他のリソースを開いてドラッグ&ドロップでコピーしたり、
カット(CTRL-X)⇒ペースト(CTRL-V)できないけど、2008って直ってるの
かな? リソース編集しててると、突然IDEが落ちるなんてこともある。

66 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 18:35:38 ]
ありがとうございます。普通はこのやり方で合ってるというのがわかってよかったです。
ボタンではなくてドックパネルを徹底的に調べてみます。
他のコントロールは継承クラスを作ってそこでメッセージ処理をしていたのですが、
さすがにボタン1つのメッセージ処理のためにクラス作成は酷いんじゃないかと思い、、、が、うまくいかずはまりこんでしまいました。

マジックナンバーはアプリウィザードで作られたひな形がCreateのなかで連番を使っていたので
そのまま続きの数字を使って追加してしまいました。いつかはIDSの登録物と重なるし、オブジェクトが判別しづらいのでは?とは思ったのですが
全て修正しないと気持ちよくないし、ひな形の流れに負けて連番にしてしまいました。


67 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 00:00:29 ]
子ウィンドウから親ウィンドウで作ったオブジェクトのメンバ関数にアクセスするにはどうすればいいんですか?


68 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 02:44:59 ]
解決しました

69 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 13:01:28 ]
プリコンパイル済みファイルの名前のStdAfxってどういう意味をもっているんでしょう?
変更することもできるけれど、気にせずにそのまま使うのが普通なんでしょうか。

70 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 20:45:09 ]
俺が前にここで聞いた時にはStandard Application Frameworksの略だって聞いた。

71 名前:デフォルトの名無しさん [2008/11/08(土) 02:29:25 ]
すみませぬ、質問させて下さい。
VC++2008で簡単なコンソールアプリを作ってみたのですが、
これをビルドして他人に渡してもエラーが出て実行できません。
他人のWindows環境で動作させるにはどのようにビルドすればよいのでしょうか?



72 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 03:38:22 ]
自己解決しやした。

73 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:42:30 ]
さっぱりわからんので教えてください。
VC++2008ExpressEditionで、Formでプログラムを作り始めて、
スクロールバーを縦横で表示・非表示を切り替えたい時、
ツールからフォームに貼り付けるとこうなります。

     ↑
←  →↓

のように右下に小さい四角が出来ません。

     ↑

     ↓
←  →□
こんな風にしたい

上手いことスクロールバーを表示するにはどこをいじればよいでしょう?

74 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 18:01:28 ]
貼り付けるんじゃなくて、Formが
内蔵しているメンバを弄るの。
this->HorizontalScroll->Visible = true;
this->VerticalScroll->Visible = true;
とか何とか

75 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:48:18 ]
お手数ですが質問させてください。
SystemTimeToVariantTime
関数をを使いたいのですが、使用すると以下のエラーが発生します

error LNK2001: 外部シンボル ""extern "C" int __stdcall SystemTimeToVariantTime(struct _SYSTEMTIME *,double *)" (?SystemTimeToVariantTime@@$$J18YGHPAU_SYSTEMTIME@@PAN@Z)" は未解決
です。

調べたところ、SystemTimeToVariantTimeを使うにはole32aut.lib
が必要そうなのですが、どうやって ole32aut.lib を手に入れればよいか
わかりません。(そもそもole32aut.libがないのかエラーの原因
なのかも微妙なのですが)

環境は Visual C++ 2005 Express です。


76 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:51:39 ]
>>75
Windows SDKをインストールしろ。
インストールしたら、スタートメニューのMicrosoft Windows SDKの中のどっかにVisual Studioとの統合みたいな項目があるからそれを叩け。

77 名前:75 mailto:sage [2008/11/09(日) 00:16:12 ]
ありがとうございます。試してみます。

78 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 06:00:14 ]
ウィンドウに、ダイアログリソースを張り付ける手順は

・ダイアログリソースを作成
・スタイルを子に設定
・ウィンドウのOnCreate関数に
 CDialog m_Dialog1;
 m_Dialog1.Create(IDD_DIALOG1, this);
 と
 CRect rectClient;
 GetClientRect(rectClient);
 m_Dialog1.SetWindowPos(NULL, rectClient.left + 1, rectClient.top + 1, rectClient.Width() - 2, rectClient.Height() - 2, SWP_NOACTIVATE | SWP_NOZORDER);
 を追加

これ以外になにをすればいいんですか?
これでコンパイルできるのですが、向こう側が透けて見えてダイアログが表示されないんです。教えてください。お願いします

79 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 09:10:18 ]
msdn.microsoft.com/ja-jp/library/yhth57kd(VS.80).aspx
MFC ライブラリ リファレンス
CDialog::Create
リソースからダイアログ ボックス テンプレートを使ってモードレス ダイアログ ボックスを作成します。

親ウィンドウを作成したときにダイアログ ボックスを表示する場合は、
ダイアログ ボックス テンプレートで WS_VISIBLE スタイルを使用します。
それ以外の場合は、ShowWindow 関数を呼び出す必要があります。

80 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 09:49:37 ]
>>79
できました。ありがとうございました!

81 名前:73 mailto:sage [2008/11/09(日) 14:44:41 ]
>>74
明日早速やってみます!



82 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:09:18 ]
いままでVC毛嫌いしててBCC使ってたけど、VCなかなか便利じゃないか
引数の型とかを教えてくれるのが感動した

83 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 07:41:54 ]
すいません、自分のIPアドレスを変更するにはどうしたらいいのでしょうか。
確保するのはすぐに判ったのですが、変更方法がさっぱりです。

84 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 08:00:29 ]
ダイアログ画面の中のコントロールをすべて再描画するにはどうすればいいんですか?

85 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:39:36 ]
VC++をこれから始めようとしているものです解説書見ながらサイコロゲームを作っているところです
VC++2008WindowsXP
実は他の方のサンプルを試してみたいのですが
サンプルの使い方もわかりません
手持ちの解説書にはそういうことは書いてありませんのでどなたかお力貸してください
下記は先人の方が質問されて、大先輩の方がサンプル付きで解答されています
上のアドレスが最初の質問で下のアドレスが2回目の質問のようです
最終的にはサンプルの全角空白(書いた方がわざとそうしています)を半角空白にして
SendInput()関数を入れると問題なく動いているようです
質問「キーの自動入力」
ttp://okwave.jp/qa4023937.html?ans_count_asc=2
ttp://soudan1.biglobe.ne.jp/qa4027968.html

質問者の方と私は環境が似ているので
このサンプルを動かしてみたいのですが
VC++の開き方すらよくわからない状態ですので
どなたかわかるように説明していただけないでしょうか?
私がやったこと
サンプルの全角空白を半角空白に8箇所直した
VC++2008を起動する→ファイル→新規作成→プロジェクト→Win32→
Win32プロジェクト→プロジェクト名入力→OK
(Win32アプリケーションウィザード)次へ→何も変更しないで完了
出てきた”(グローバルスコープ)”というソースコードのページの
どこに上記のサンプルを貼り付ければいいでしょうか?
”// TODO: ここにコードを挿入してください。”の部分へ貼り付けたり
・このときエラーはいっぱい出ました
わからないので全てを削除して貼り付けてみたりしましたがビルドできません
・この時のエラーは下記の1つでした
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
VC++2008の開き方、サンプルの張り方教えてくださいm( _ _ )m

86 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:50:54 ]
どの部分が抜粋でどの部分が関数丸ごとかわかるようになるまで
もっと初歩的なことやったほうがいいと思うよ。

87 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 11:53:48 ]
>>86さん
そこをなんとか教えていただけないでしょうか?
よろしくお願いします
取りあえずサンプルの全角空白を半角空白に直した後どうすればよいのか教えてください
お願いします

88 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:00:55 ]
VOID setKeybrd( LPINPUT lpKey, WORD wVKey, BOOL bKeyDown )
{
  ・
  ・
}
これが関数だよ。
適当に最後にでも置いて、
VOID setKeybrd( LPINPUT lpKey, WORD wVKey, BOOL bKeyDown );
の1行を先頭のほうの
// このコード モジュールに含まれる関数の宣言を転送します:
のあたりにでも置いておく。

INPUT Key[ 2 ];
 ・
 ・
 ・
if ( SendInput((UINT)(lpKey - Key),Key,sizeof(INPUT)) == (UINT)(lpKey - Key) ){
//”S”を押すと実行する既存のプログラム
}
これが本体だ。
自分が使いたいとこに置けばいい。
この使いたいところ、ができないうちは何もできんからあきらめろ。
{} でくくって case IDM_ABOUT: の次あたりに放り込んでもいいけどな。

89 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 12:10:40 ]
>>88さん
マジでありがとう(;´д⊂ヽ
どうしていいのかわかんなくて困ってたんです
使いたいところってのはまだ(ソースコード作って)ないんです
取りあえずこのサンプルだけで自分の環境でも動かせないのか知りたかったんです
詳しく本当にありがとうございました
助かりました心から感謝してます
ありがとうございましたm( _ _ )m

90 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 16:54:06 ]
お世話になります
VC++とC++の違い教えてください
C++のサンプルコードはVC++でコンパイルできますか?
先ほど1時間かけてこの地方で一番大きな本屋さんへ行って解説本を2冊購入したのですが
なんと!
帰りの電車の中で気づいたのですが1冊はVC++ではなくC++用だったんですorz
まだレシート持ってるから電話して交換してもらった方がいい?
自分としては応用できそうならこのままこの本で勉強したいです
その本は「○○の絵本」シリーズでちょっと有名な本です
挫折はしましたがJAVAやPHPの時も購入して良本というイメージがあったんです
それで「VisualC++500の極意」と「C++の絵本」を持ってレジに行って買ったんです
内容的にはCを知っている方にC++とはこういうものですって感じです
私はCを習得したわけじゃないですけど
なんとなくわかります
Cで使ったPrintfのソースをそのまま使えるけどエラーが出ます、それは戻り値がないからで
そのままでも問題はありませんが気になるのならmainの前に型intを付けて最後にリザルト0をつければいい
こんな感じでわかりやすいんです
私が実際に使っていこうとしてるのはVC++EEなのでC++との違いが気になります
前置き長くなり申し訳ないです
C++のサンプルはVC++で使えますか?
よろしくお願いいたします

91 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 16:59:22 ]
なんかこの手の質問多いな。
C++は言語の名前、VC++はC++で開発するための製品、の名前。



92 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 17:03:05 ]
>>91さん
即レスどもありがとです!
ということは問題無しですね
ドキドキしちゃったよ
教えてくれてありがとうですm( _ _ )m

93 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 14:44:55 ]
話にならん低脳っぷりだな……小学生か。

94 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 00:54:01 ]
超初心者ならしょうがないでしょ
VC++とC++で迷うのは想定外だったけど
確かに知らなかったら迷うよなーとは思った

95 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 01:57:51 ]
初心者とか関係ないだろ。
人に聞く前に検索すれば済む話。

96 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 06:39:48 ]
理解できてる人だけが検索する単語を絞ることができる

97 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 10:36:02 ]
こんちわ
お世話になります
先輩たちのお陰でなんとかブラウザ作れましたありがとうございます
(実は解説本、そのまんま^^)
これでファイルの読み書きとあわせて2つのことができるようになりましたw
ありがとうです
この先、目標はブラウザで読み込んだテキスト内で文字検索して保存するです
例えばヤフーのトップ画面を見て「年金」や「少年」という文字を検索して
あればその記事を保存するってことをやってみたいです
やりかたとしてテキストファイルに保存しないで
トップ画面をダウンロードしながら検索もする方法を希望です
多分これが一番早い方法だと思うからです
ダウンロード中のヤフートップ画面から文字列検索する方法教えてください
ブラウザを作れたと言っても解説本のまま入力して作っただけなので
私はまだ難しいことは一切わかりません
ヤフートップ画面のテキストを保存する方法もわかりません
どなたか優しく教えてください
お願いします

98 名前:デフォルトの名無しさん [2008/11/14(金) 11:06:23 ]
Visual C++ 2005 EEを使っています。

C++の参考書などでは、 new で配列を確保した場合に開放は delete [] で行うとなっていますが
タスクマネージャで使用メモリを調べてみると、delete [] ではなく delete のみの表記でも
同じように開放されているようです。
(MB単位の配列の new と delete を何千何万回繰り返しても、使用メモリが増加していかない)

これは、VC++ではdeleteの配列開放処理についてはコンパイラが
面倒をみてくれるという事でしょうか?
それとも、現在のC++では delete でも delete [] でもどちらでも問題ないのですか?

99 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:21:59 ]
>>98
new[]したなら必ずdelete[]。deleteするのは[]の無いnewしたもの。混同しちゃダメ。
コンストラクタ/デストラクタが無いものだと問題が起きない場合もあるのかもしれないけど。

100 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:44:54 ]
>>99
レスありがとうございます。
なるほど、単純なデータ配列ではなくて、コンストラクタやデストラクタのある
オブジェクト配列だと問題が発生するということですか。

メモリの開放自体がされないわけではなく、そういったオブジェクト内部処理に
問題が発生するという解釈でいいですかね。

単純なデータ配列(int配列のような)の場合に何か問題が起きる事例はありますか?
もちろん本来の記述ルールとして[]を付けるというのはわかってはいますが、
具体的にどういう問題が出るのかというのがいまいち良く分かりません。

101 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:55:23 ]
未定義なんだったらメモリ開放しようが、デストラクタ呼ぼうがVC++の勝手だろ・・・




102 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 14:58:13 ]
何が未定義

103 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:10:06 ]
いいページがあった
ttp://m--takahashi.com/bbs/pastlog/06700/06661.html

>多くの処理系では、先頭の一つだけデストラクタが動き、
>そして全部解放されます。

という事らしい
なのでVC++の場合には単純データ配列は全開放されるということね
つけないよりは付けた方が安全ではあるけど

104 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:22:19 ]
なんでこういう方向に行っちゃうのかな・・・。
new[]してdeleteは単純に間違い。

105 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:22:55 ]
でも結構、「配列の最初の1要素しか開放されない」って言い切った説明をしてる奴が多いよな。
未定義のものは未定義でいいけど、間違った説明はいかんよね。


106 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:26:26 ]
>>104
頭固いな
ここはC++のスレじゃなくてVC++のスレだから、
VC++としての挙動についての話をしてるだけだよ
もちろんC++のルールとしては間違いだ

107 名前:デフォルトの名無しさん [2008/11/14(金) 15:31:37 ]
MSがドキュメントとして明言してない限り、未定義の動作であることにかわりないんではないだろうか
誰か該当する文書知らない?

108 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:41:47 ]
VC++でのコードでもまず確実に間違い。
VC++がそういう動作をすることを狙ってわざとそんなコードを書いたって、全く利点無し。

109 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 15:49:53 ]
>>108
あれか、委員長タイプか。ルール絶対主義というか
誰一人正しいか間違いかなんて質問はしてないだろうに

間違った記述をした時にこういう風に動くって事を知っておくだけでも
デバッグする上では役にたつもんだぜ?

110 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 16:11:33 ]
イインチョタイプワロタw

111 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 16:26:57 ]
>>105
多いなそういう本やサイト
思い込みだけで書いてるのは本当に困る



112 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 16:41:25 ]
>>97
まず自分で調べてある程度のコードを書いてから出直してこいよ

113 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:25:13 ]
こんちわ
お世話になります>>97です
何をどう調べればいいのかもわかんないんですよ
作成したブラウザでヤフートップを表示しているので
ヤフートップページのテキストは取り込めているとは思うのですが
どうやって文字を検索するのかわかんないです
すいませんが何を調べればいいのか教えていただけないでしょうか
お願いします


114 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:28:57 ]
そんな手とり足とり教えるには、掲示板という仕組みは非効率すぎる。

115 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:29:24 ]
>>103
ありがとうございます。参考になりました。
やっぱりそういう動きになっているんですね。

116 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:33:40 ]
>>113
さようなら\(^o^)/
あなたのような人はプログラムなんてやめてパソコンを廃棄するのがベストかと

117 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:50:38 ]
なんで?
みんなできないくせに解答してるとか???

118 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:51:40 ]
ヤフートップページを読み込んで任意の文字列を検索して保存する方法教えてください><

119 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 20:54:19 ]
<a>タグ内の文字列調べて、キーワードが入ってたらそのurlのページをダウンロードして保存すればいい。
HTMLについては勉強した?

120 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:10:33 ]
socketから直に受信データ取ってパーサ作らないと無理だろ・・・IWebBrowserしか知らん俺なんかは

121 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:15:35 ]
>>120
IWebBrowserがあるなら、そこからIHTMLDocument2辺りを取得すれば、
HTML内のJavaScript同様、DOMでぐりぐり探れる。



122 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:36:13 ]
>>119
誰がURLの話なんかしてるんだ?
HTMLから取得ってそのHTMLから取得する方法を聞いてるんだけど
どうやって取ればいいのかわかんない
一応、正規表現とかちょっとくらいはわかるよ

123 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 21:41:03 ]
トップページのリンクから該当記事をDLするんじゃないのか?
トップページには記事おいてないぞ リンクが貼ってあったとしても

124 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:03:49 ]
だから、そのリンク先は作成したブラウザで見れるんだけど
見るだけで、どうやればここから文字列を取得するのかがわかんないんだ
どこに対してどういう命令出すのかがわかんないんです

125 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:05:23 ]
>>124
>>121

126 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 22:14:08 ]
この質問者が日本人に思えないのは俺だけですか?

127 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:25:17 ]
>IHTMLDocument2辺りを取得すれば
これわかんないんです
WEBブラウザの命令でそういうのがあるんですか?
WEBブラウザを調べたけどわかりません><

128 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:29:19 ]
検索しろよボケ
一週間はレスすんなゴミクズが

129 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:32:10 ]
ボケとかゴミクズとか何それ
お前どこのがきや

130 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:32:41 ]
>>128
はよ答えろやカス

131 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:34:00 ]
>>128
できないくせに解答者やってる奴ってお前のことかwww
はらいてー
なんでそんなに怒ってるの?
たかが2chでwww




132 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:34:23 ]
>>130
IWebBrowser2のDocumentプロパティ

133 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 23:35:07 ]
おい>>128
お前は頭わるくは無いと自分では思ってるようだが
要領は最高に悪そうだな
意味もわからんやろなw






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef