[表示 : 全て 最新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辺り。

175 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:19:32 ]
TODOコメント使うのはAppWizardであって、ユーザー(あなた)ではない
AppWizardがあなたが追加、またはカスタマイズすべきソース部分を教えてくれているだけ
AppWizardが生成するReadMeはあなたに対する説明文であって、あなたのアプリケーションを使う人に対するものではない

176 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:43:17 ]
>>169
レスありがとうございます。たしかに、ないよりはましですね。
もやもやがなくなったので勉強してきます。

177 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 16:45:48 ]
>>174-175
レスありがとうございます。
えーと、つまりReadMe.txtもTODO:コメントも、後から
自分で追記したりするようなものではないということでいいんでしょうか?
ReadMe.Txtはプロジェクト作成時にVCが自動作成したファイルだけを示し、
その内どこをいじるのかがTODO:コメントで指示されるという解釈であってますか?

178 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 19:29:23 ]
いやあれウィザードが吐くだけの固定コメだから
メッセージマップとかをクラスのプロパティからいっぱい作って見れ 全部同じコメだ

179 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 12:12:07 ]
int型のポインタを宣言するときは
int* pA; とするのがいいのか
int *pA; とするのがいいのか教えていただけませんか。
テキストにはどちらでも良いと書いてありましたが、できれば多数派に合わせておきたいので・・・

180 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 12:36:44 ]
>>179
ポインタをtypedefする
typedef int *LPINT
LPINT pA;


181 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:31:05 ]
>>179
後者が一般的

182 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 16:32:25 ]
int * p;
ではダメですか?

183 名前:デフォルトの名無しさん [2008/11/22(土) 16:31:46 ]


名前:
E-mail:
内容:
超初歩の質問ですいません。環境はXP,VC++2008(SP1)でインストール直後のまっさらな状態です。

 String *name = textName->Text;



error C3699: '*' : この間接指定を型 'System::String' で使用できません

と、VisualStudio2008からダメ出しされまして、エラーメッセージどおりに、

 String ^name・・・・

としたらうまく通りました。

エラーの原因はStringクラスが定数文字列前提だからかな?とも
思ってますが、それよりも^演算子(なんでしょうか?)の
意味がさっぱり調べられません。
ググってもこれといったものが出ませんでした^^;

^の意味をどなたか教えていただけませんでしょうか・・・。




184 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 16:51:51 ]
>>183
msdn.microsoft.com/ja-jp/library/ms235215(VS.80).aspx

185 名前:デフォルトの名無しさん [2008/11/22(土) 17:08:32 ]
183です。

助かりましたー。新仕様だったんですね。



186 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 19:29:02 ]
ちょw


187 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 20:37:46 ]
名前:
E-mail:
内容:
なんぞこれ


188 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 21:32:16 ]
デスマの合図に決まってるだろ

189 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 00:33:46 ]
質問です。VisualC++2008をつかっています。
ソースを書き換える前に保存をしたいのですが、
全部丸ごと別名で保存する方法を教えてもらえませんか?
.cppや.hを個別に保存はできましたが、プロジェクトの中身を丸ごと別名で保存はできないのでしょうか?



190 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 01:26:10 ]
逆に考えるんだ
元のプロジェクトの中身をコピーして別名にしたあと上書き保存すれば結果は同じだと

191 名前:189 mailto:sage [2008/11/23(日) 02:01:38 ]
>>190
なるほど、ありがとうございました

192 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 03:58:12 ]
Visual Source Safeを使えばいいと思うよ

193 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 11:48:07 ]
次のVC++で改良される自動生成コメント ...

// TODO: ここに 派遣さんが コマンド ハンドラ コードを追加します




194 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 17:04:29 ]
SDKのダイアログリソースを見ると全部英語表記で記述してありますが
VCでビルドするともちろん日本語で表示されますが
日本語用のストリングテーブルがどっかにあるんですか?

195 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:14:00 ]
調べた事ないが、リソースDLLがどっかにあるんじゃまいか?

196 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:25:55 ]
予約語にinterface ってのがあるんだがこれ何?
Javaのinterfaceと同じ感じなのか?
言語仕様にはこんなのなかったとおもうんだが

197 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:28:58 ]
C++/CLIのinterfaceではないだろうか

198 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 22:39:06 ]
>>197
調べてみたらそのようですね
ありがと

199 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 16:16:26 ]
すみません、ゲームをリリース版でコンパイルして実行ファイルを作ってみたんですが
MSVCR80.DLLというランタイムに依存してしまうようなんですが
このDLLは再配布可能でしょうか?

200 名前:デフォルトの名無しさん mailto:sage [2008/11/24(月) 19:20:22 ]
っ「www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja

201 名前:デフォルトの名無しさん [2008/11/26(水) 07:43:24 ]
プログラミング超初心者で>>23と全く同じ状況になってしまいました
デザイン画面は 「このファイルのデザイナに、デザインできるクラスがないため、デザイナを表示できませんでした。」というエラーが出てしまいます
↓ちなみにこのコードを追加したらなってしまいました

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//オプションボタン (ラジオボタン) の状態を確認
if (this->radioButtonKisu->Checked == true){
System::Diagnostics::Debug::WriteLine("奇数が選択されました");
}else if(this->radioButtonGusu->Checked == true){
System::Diagnostics::Debug::WriteLine("偶数が選択されました");
}else{
MessageBox::Show("奇数か偶数かを選んでください","お願い");
return;
    }
  }

前に成功したビルドの状態に戻せないんでしょうか
最初からやり直せば次に進めるんでしょうか

202 名前:201 mailto:sage [2008/11/26(水) 11:04:56 ]
あぁ、自己解決しました…

203 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 20:30:45 ]
ゲームを配布しようと思ってるんですが
コード生成のMTとMTdって何が違うんですか?
Dllが付くものは駄目だということは知っているんですが…



204 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 22:16:31 ]
ライブラリが最適化されてるか否か

205 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 23:16:52 ]
もう少しわかりやすく説明して欲しいんですが…

206 名前:デフォルトの名無しさん mailto:sage [2008/11/26(水) 23:26:24 ]
デバッグ用じゃないかデバッグ用か

207 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:00:34 ]
ggrks

208 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:45:38 ]
じゃあ要するに配布の再はMTを使った方がいいってことですかね?

209 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:52:04 ]
そういうことにしておけばいいんじゃないですかね

210 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 00:59:05 ]
くたばれクソども

211 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 09:56:20 ]
MTdはデバッグ用でこれでビルドしたやつ配布すると馬鹿にされる。

212 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 11:39:13 ]
>>208
Releaseモードでビルドするんだよ


213 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 16:52:45 ]
myfunc.h という名前のヘッダファイルに
int max(int x,int y);
という関数プロトタイプを宣言し
main()があるソースファイルとは別のmyfunc.cppという名前のソースファイルに
int max(int x,int y)
の定義文を記述しました。
そしてmain()があるソースファイルのはじめに
#include "myfunc.h"
と記述して動いたのですが、はじめの#include文を消去しても、ヘッダファイルに適当な関数プロトタイプの宣言を追加しても
動きました。(定義はしていません)はじめに#includeを記述する必要はあるのでしょうか。
そもそもヘッダファイルの必要性がよくわかっていないので、教えていただけないでしょうか。




214 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 17:21:44 ]
よくわからんが、とりあえず何か消したら念のためビルドのクリーンとかで
クリアしてから試してみては。

215 名前:デフォルトの名無しさん mailto:sage [2008/11/27(木) 18:07:33 ]
普通はヘッダの方は必要に応じて外部参照関数呼び出しを記述
extern int max(int x,int y);
で、cまたはcppソースの方にプロトタイプ宣言を入れる

cpp内で関数を参照する時、呼び出し側の関数よりも上に本体のコードがあれば
プロトタイプ宣言は必要ない。
本体が下にある場合はプロトタイプ宣言が必要。

216 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 00:11:19 ]
>>214,215
ありがとうございました。いろいろ試してみます。

217 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:14:13 ]
すいません、はじめてフォームアプリケーションを作ってみようと思ったんですが、
テキストボックスに入力した値がどこに入るのかわかりません。
Messagebox::Showでそれっぽいものを表示してみようとも思ったんですが、
System:::string この型は演算子として使用できません(String[0]とかも)となります。
private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {}の中で自分で何かをやるんでようか?

助けてorz

218 名前:217 mailto:sage [2008/11/28(金) 12:16:01 ]
MessageBox::Showを書いたのはbuton1_Clickの中です。

219 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:21:32 ]
なんつーか、それ以前にやることやったほうがいい気がするが。
もしくは本でも読むか。
試しに、buton1_Clickの中に MessageBox::Show(textBox1->Text); とか書いてみ

220 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 12:28:35 ]
>>219
ありがとうございました
おかげでスーパーハカーになることができました!


221 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 13:34:02 ]
>>216
とりあえずmax()の本体を別のcppファイルに移してためしてみるといい
ヘッダーの使い方がわかるはずだ

222 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 21:13:21 ]
>>221
ありがとうございます。max(int x,int y)が定義されているcppファイルを削除しても動いてしまったので
ためしに maxi(int x,int y)に名前を変えたところ、無事(? 動かなくなりました。
using namespace std; を main() があるcppファイルのはじめに記述していたのですが
stdの名前空間の中にmaxがあったのが原因だったみたいです。
その後、ヘッダーファイルをincludeしなかったりしてみたりと色々試してなんとなくですがヘッダの意味がわかった気がします。


223 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 21:56:04 ]
日本語でおk



224 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 15:59:58 ]
VC++2008無料版を使っています。
class の宣言文でpublic:を記述するとclassの位置までインデントが戻ってしまうのですが、
classの位置より1段階インデントした状態にオートインデントするにはどうすればいいのですか?

225 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 10:19:41 ]
USBにエディタを入れて持ち歩きたいんですけど
Visual C++ライクなエディタってありませんか?
Notepad++Portableは知ってるんですけど、折り畳みがダサいので・・・

226 名前:デフォルトの名無しさん [2008/12/03(水) 01:24:56 ]
実行すると、Debugフォルダがかってに作成されちゃうんですが、仕様ですか?

227 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 05:33:26 ]
>>226
仕様です。
どうしても作りたくなければReleaseビルド以外使うな

228 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 08:33:13 ]
>>226
プロパティいじれば好きに出来るよ
$(OutDir)
とか
$(IntDir)
を好きな名前にしたらいい

229 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:13:00 ]
ゲーム製作をしていてVC++2008 でコンパイルしています。

コード生成設定をMTdでやると通るのですが、MTでやると以下のエラーが出てしまいます。

LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __malloc_dbg が関数 "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
libcpmtd.lib(xdebug.obj) : error LNK2019: 未解決の外部シンボル __free_dbg が関数 "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z) で参照されました。
C:\Documents and Settings\***\デスクトップ\**\Debug\***.exe : fatal error LNK1120: 外部参照 2 が未解決です。

LIBCMTを無視しても逆にエラーが増えてしまうんですが、どうすればいいでしょうか?
ゲーム配布時にはMTdでもMTでもdllが付かなければ問題ないですか?

230 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:41:50 ]
>>229
libcpmtdはデバッグ用。内部でデバッグ用のmallocとfreeを呼んでるから/MTdじゃないとリンクできない。
リリースビルドならlibcpmtを使う。

ってか、プロジェクトの作成をウィザード任せにすればその辺を自分でいじることなんてないと思うんだけど。

231 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:50:34 ]
なるほど、debugモードでコード生成する時はMTdで
リリースモードでやるときはMTでやるものなんですね
試しにリリースモードでMT生成してみたら通りました。

どうもありがとうございましたー。

232 名前:デフォルトの名無しさん [2008/12/03(水) 20:24:26 ]
すいません
windowsXP SP2で visual c++ 2005 Express Editionを使っているんですが

以前のエラーのため、Windows Forms Designer Package ({7494682B-37A0-11D2-A273-00C04F8EF4FF})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Explorers and Designers Package ({8D8529D3-625D-4496-8354-3DAD630ECC1B})
以前のエラーのため、Visual Studio Common IDE Package ({6E87CFAD-6C05-4ADF-9CD7-3B7943875B7C})

というようなエラーが出てしまいます

コマンド プロンプトで 'VCExpress /resetskippkgs' を入力しろと出るので試しましたが無理でした


調べたところbeta版がどうこうとあるのですが、自分はそのようなものは入れていません
beta版のアンインストーラーを使用しても、該当するものはありませんでした

何か解決策はないでしょうか?

233 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 10:44:16 ]
そのエラーは何をする時に出るの?



234 名前:デフォルトの名無しさん [2008/12/06(土) 01:18:55 ]
お願いします。
WinXP SP2でVisual c++ 2005 Express Editionです。

UNICODEのIniファイルの情報をGetPrivateProfileStringで取得しようと
しているのですが、lpReturnedStringにはlpDefaultの値が入ってしまいます。

IniファイルがANSIのときはうまくいきます。
GetPrivateProfileStringの引数はワイド文字にしているつもりです。

意図的にGetPrivateProfileStringWにしてもダメでした。

UNICODEファイルの際の注意点などあるのでしょうか?
ご教授ねがいます。



235 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 01:29:29 ]
>>234
INI系の関数はAでもWでもファイルの中身はマルチバイト文字として扱われる。
そのおかげで、Aで書き込んでWで読み取るなんてことができるんだけどね。
もちろん、文字コードの自動判別なんてやっていない。

236 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 10:27:18 ]
>>234
> UNICODEのIniファイル

拡張子がINIってだけで中身がUnicodeじゃあ、INIファイルとは呼べ
ないシロモノだな。

自分で、CStdioFileクラスのCStdioFile::ReadString()/WriteString()
なりを使って、1行ずつ読み込んで文字列処理するコードを書くしか
ないな。(w

237 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 12:35:20 ]
そうだったのか。
たしかにINIファイルって、ASCIIしか使わないけど……

238 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 13:08:53 ]
> INIファイルって、ASCIIしか使わないけど……

んなこたぁない。シフトJISであれば漢字やカナ文字だって使える。

でなきゃ、漢字やカナ文字を含むパス名やファイル名の文字列保存に
使えない。

239 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 13:49:53 ]
マジ?シフトJISなら良かったのか。
それは気がつかなかった。今度試してみよう。

ていうか、レジストリ弄りたくなくて、いまだにINIファイル使ってるんだよね。

240 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 14:34:14 ]
Windowsフォルダに際限なくINIファイル作られるより、レジストリの方が
ずっとマシだと思えるんだが? ログインユーザー単位で設定が分けら
れるというメリットもあるし。

第一、レジストリなんて意識せずともWindowsのシステムでいじられ
まくりだぞ。

241 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 14:37:53 ]
>>239
Shift_JISというか、そこで使っているコードページの文字コード。
欧米ならWindows-1252だし、繁体中国語圏ならBig5という具合。

>>240
ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。

242 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 15:03:55 ]
>>241
> ファイルでもApplication Dataあたりに置けば、ユーザ別設定はできる。

MFCフレームワークのデフォルト処理を前提に書いてしまった。言われ
れば、まぁ確かにそうだ。 ところで、複数インスタンス起動した
アプリからiniファイルへの同時アクセスとかって、今は問題ないん
だっけか?

243 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 16:50:51 ]
たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。
自フォルダにINIファイル作るなんて普通じゃないか?フリーソフトなんかは特に。
わざわざ選択肢減らす必要なんてないしケースバイケースでよかろう。



244 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 17:30:28 ]
>自フォルダにINIファイル
Program Filesに置いたらVistaで問題が出る。
All UsersのAppDataとかでどうか。

245 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 17:41:50 ]
>>244
>Program Filesに置いたらVistaで問題が出る。
はじめやりずれーって思ったら他のユーザーでログインしたときを考えたら納得した

246 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 19:27:48 ]
>>243
> たんなるアプリの設定データはWindowsフォルダなんかにつくらんだろ。

昔は作りまくりだったんで、レジストリが搭乗したんだが?

今もMFCでCWinApp::SetRegistryKey()呼ばないとiniファイルを使うけど、
iniファイルが作られるデフォルトの場所はWindowsフォルダだよ。

>>244
> All UsersのAppDataとかでどうか。

自分(現在のログインユーザー)用の「マイドキュメント」フォルダの
パスはSHGetSpecialFolderLocation()で取得できるけど、これって取れる
んだっけ? もしかして決め打ち? それはそれで問題な気もするが?

なんて思ったら、

SHGetSpecialFolderLocation(hwndOwner,CSIDL_COMMON_APPDATA,...);

でいけるのか。 知らない間にCSIDLずいぶん増えているな。

ttp://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx

247 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 19:30:24 ]
昔話がしたいだけか。

248 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 19:46:34 ]
VistaでProgram Filesのデータを読み書きするのって各ユーザー毎に仮想フォルダ作って
勝手にやってくれんじゃなかったっけ?
具体的にはどういう風になんの?

正直Vistaなんて糞OS使った事もないから知らんが。

249 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 20:20:51 ]
全ユーザー共通のINIファイルじゃないとダメってソフトでも
なければさほど問題はなさそうな気もする
つかこれってINIファイルに限らず他のセーブデータにも
言える事だろ

250 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 23:21:36 ]
「Program Filesに置いたらVistaで問題が出る。」っていうのは、他の
スレでも見たような気がするが、実際何がどう問題なのかわからん。

すくなくとも、exe本体が存在するProgram Files下のアプリケーション
フォルダ内にiniファイルを作成して読み書きは問題なく動作している
けどな。

Administrator権限以外じゃダメとかなら、Vistaに限らず2000やXP等でも
問題になりそうな気がするし、セキュリティ上、別のログインユーザーに
iniファイル内容を見られると困るというなら、All Usersに置いても同じ
だと思う。


251 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 23:40:23 ]
別のログインユーザに見られたら困る、じゃなくて
別のログインユーザから見られないから困るんでしょ。
Program FilesやHKLMに無駄に書き込むソフトなんざそもそもマルチユーザを前提としていないので
これらの挙動はソフトとしては想定外なわけで。
あと、管理者権限を持つプロセスから呼ばれると仮想ストアじゃないとこから設定ファイル読みに行ってNotFoundとか。

なんにせよUAC程度で不具合出るようなソフトは単純に行儀悪いだけだと思う。

252 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:27:46 ]
>>251
そうそ
Program Filesにおいちゃうとアドミニ権限ないと
書き込めないし見れないんだよね
なんでアドミニ権限ないユーザが起動すると落ちるソフトとか結構あったりする

253 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:35:26 ]
行儀が悪いのはむしろこういう勝手な事をOSにさせるMSだと思うが
別にユーザー毎の設定で問題ないアプリなら不具合にならないわけだし
結局の所はケースバイケースって事でしょ

ゲームアプリのセーブデータなんかはプログラムフォルダ内に入れとかないと
セーブデータ残したままアンインストールする場合、普段ユーザーが見ない所に
ファイルが残るしな

「行儀がいい」と「頭が固い」を履き違えてるんじゃね



254 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:43:20 ]
>>253
いや、権限によってはProgram Filesを見れないから
アプリの起動自体できない
設定ファイルがないって感じで落ちる
ケースバイケースじゃなくてこう作らないと駄目ってところまできてる

255 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:48:55 ]
さすがにそれは設定ファイルが存在することを前提にプログラムを組む方がおかしい
なかったらデフォルト値で動かすのが普通。

256 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:51:59 ]
>>254
設定ファイルがないと動かないなんて作りになってるのは
ProgramFilesだろうがなんだろうが終わってるだろ

257 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 00:59:36 ]
>>256
仮にProgramFilesが駄目だったら今度どこに保存すんの?

258 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 01:06:21 ]
Vistaは持ってないけどこの認識であってる?

1.ファイルを読むだけだったらProgram Filesから行われる
2.書き込みが発生した場合、バーチャルストアで行われる
3.一度書き込みが発生したファイルは、バーチャルストアで読み書きが行われる

Program Filesから読めないとか、どこに保存するとか言ってる人がいるから混乱してきたが。
この認識が違うなら>>254に詳しい説明をしてほしい

259 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 01:11:29 ]
>>258
そんなのセキュリティのポリシーの設定で変わるじゃん
駄目にしてある会社だったら読み取りも駄目だろ

260 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 01:15:46 ]
その場合ってそのユーザにアプリって起動できんの?
インストールの設定も含めて

261 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 01:29:36 ]
仮にそういうセキュリティ設定になってたとしたら
INIファイルどころかあらゆるセーブデータの読み書きができなくなるわけだから
INIファイルをどうしようが結局同じことだと思うけど

まあどうしても全てのユーザーで動作させたいんだったら全セーブデータを
>>244のようにするか、レジストリに全てぶっこむしかないだろうね
アホ臭いとしか言いようがないが

262 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 01:45:39 ]
でもきちんと対応するってならそれっきゃないってことだろうな
まあ、業務でそういうところに当たらないとも限らないからちょっとメモっておこ
担当者がキチだと普通にこういうの要求されるよね

263 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 03:54:39 ]
>>254
ファイルが読めないなら起動に必要なデータファイルはどこから読むんです?



264 名前:234 mailto:sage [2008/12/07(日) 04:26:59 ]
豚切り失礼します。

>>236さん
遅くなりましたが、回答ありがとうございます。
そうですか。UNICODEはINIファイルとして使えないのですね。
勉強になりました。





265 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 12:46:44 ]
>>258
3.が違う

266 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 16:07:48 ]
>>265
どう違うの?

267 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 20:53:50 ]
言ってみたかっただけじゃね。

268 名前:デフォルトの名無しさん [2008/12/08(月) 01:31:32 ]
CとC++の違いってヘッダがiostreamになって使う関数が違う以外にないの?
こんなんでオブジェクト施行とか騒いじゃってるの?拍子抜けなんだけど

269 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 01:38:10 ]
クラス、テンプレート、多重定義、例外処理……、
オブジェクト指向に関係あるものないもの、CになくてC++にある機能なんていくらでもあるが。

270 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 01:49:56 ]
クラスなんて構造体に毛がはえたようなものしょぼいんだよはっきりいって

271 名前:デフォルトの名無しさん [2008/12/08(月) 02:18:40 ]
馬鹿野郎!
それのおかげでインテリセンスの恩恵があるんだろうが!

272 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 00:47:26 ]
C→C++の一番の利点は
コードが見やすいこと、これに尽きるだろ
C++に慣れるとCのでっかいコードは耐えられん
クラス化したくてウズウズしてくる
変数途中で宣言したくなる

273 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 00:51:53 ]
C言語の勉強やってからC++に移行したほうが良いだろうか
それとも最初からC++から勉強しても問題ない?



274 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 00:57:11 ]
>>258
バーチャルストアに書き込むのはマニフェストがない場合だけだよ。
マニフェストがあればあとは管理者権限への移行が成功すれば直接書くことになる。

275 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 01:19:02 ]
>>273
いきなりC++でいいと思う。
共通する事柄はいずれにせよ学ぶことになるし、
Cで良く使うテクだけどC++ではあまり使わないのとか意外とあるし。






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

前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