★初心者にVisual C++ ..
[2ch|▼Menu]
159:デフォルトの名無しさん
08/11/18 07:46:21
>>158
coutはC++でしか使えない
printfはCでも使える

160:デフォルトの名無しさん
08/11/18 07:51:42
URLリンク(www.asahi-net.or.jp)

こちらのサイトを参考にしてVisual C++ 2005で練習をしているところなのですが
完成したプログラムを「デバッグ開始」で動かそうとすると、
一瞬だけコマンドプロンプトの黒画面が出て、すぐに消えてしまいます

最初のうちは普通に実行され、黒画面が残ったままになったので
設定を間違えて弄ってしまったのかもしれません
原因、元に戻す方法がわかる方はいらっしゃいませんか?

161:デフォルトの名無しさん
08/11/18 09:02:07
リソースエディタなんてフリーで問題ないよ
どの道付属のアイコンエディタは使い物にならんし

162:デフォルトの名無しさん
08/11/18 09:03:33
>>160
最後にgetch()を入れればキーを押すまで画面がとまるよ

163:デフォルトの名無しさん
08/11/18 10:05:38
>>159
了解です
Printfで書くようにします
Cout使わないといけない場合なんかはないですよね
ありがとうございます

164:141
08/11/18 10:18:26
>>157
解説ページなどでResEditやXN Resource Editorでそれほど問題なさそうだったので、
どのようなデメリットがあるのかよくわからないということでした。
わかりにくくてすみません。

とりあえずフリーのものでやってみようかなと思います。

165:デフォルトの名無しさん
08/11/18 16:42:30
>>162
ありがとうございます
でも最後にgetch();を付けるとエラーが…

「デバッグ無しでビルド」を選択したら
とりあえずは消えない様になりました

166:デフォルトの名無しさん
08/11/18 16:44:50
そもそもデバッグしないでいいならCtrl+F5で実行すりゃいい

167:デフォルトの名無しさん
08/11/18 17:21:41
あとは

1.system("pause");
2.getchar();
3.main関数の最後の行("}")にブレークポイントをいれる

から好きなのを選べばいいと思うよ

168:デフォルトの名無しさん
08/11/19 12:30:43
今まで少しの間でしたがVC#2005EEを使っていました。
今日からC++を学ぼうと思い、VC++2008EEを使ってみたのですが
コード補完機能がないのが気になりました。
VC#2005EEのときは、1文字目から予測リストが出てくるので非常に使いやすかったのですが
VC++2008EEにはそのような機能はないのでしょうか。

169:デフォルトの名無しさん
08/11/19 13:32:24
>>168
ないよ
せいぜい関数の引数リストやクラスのメンバリストが出る程度だがそれでもないよりましだ

170:デフォルトの名無しさん
08/11/19 13:33:56
あ、そういえばCtrl+スペースで出たな


171:デフォルトの名無しさん
08/11/19 13:51:54
質問です。Visual C++2005を使っています。
プロジェクトをつくるとそのフォルダにReadMe.txtが自動で作られますが
ここに各ソースファイルの簡単な説明を追記したいのですが、どのようにすればよいのでしょうか?

作成されたReadMe.txtの最後の方に、
「AppWizard では "TODO:" コメントを使用して、ユーザーが追加またはカスタマイズする
ソース部分を示します。」とか書いてあるのですが、
各ソースファイルのコメント部分にTODO:と入れればその行が自動的に
ReaMe.txtに出力されるのかと思ったのですが、なんともなりません。
何かやり方が違うのでしょうか?

そういったReadMe.txtへの説明の自動追記機能はありますか?
それともRedMe.txtを直接開いて手書きで説明を加えなくてはならないのでしょうか?

172:デフォルトの名無しさん
08/11/19 13:52:53
あ、>>171はVisual C++ 2005 Express Editionです。
ひょっとしてエディションの問題???


173:デフォルトの名無しさん
08/11/19 16:06:59
>>165
コンパイルエラーならconio.hがインクルードされてないとかじゃね

174:デフォルトの名無しさん
08/11/19 16:13:36
// TODO: ここにコマンド ハンドラ コードを追加します

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

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

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

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

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

180:デフォルトの名無しさん
08/11/21 12:36:44
>>179
ポインタをtypedefする
typedef int *LPINT
LPINT pA;


181:デフォルトの名無しさん
08/11/21 16:31:05
>>179
後者が一般的

182:デフォルトの名無しさん
08/11/21 16:32:25
int * p;
ではダメですか?

183:デフォルトの名無しさん
08/11/22 16:31:46


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

 String *name = textName->Text;



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

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

 String ^name・・・・

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

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

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


184:デフォルトの名無しさん
08/11/22 16:51:51
>>183
URLリンク(msdn.microsoft.com)(VS.80).aspx

185:デフォルトの名無しさん
08/11/22 17:08:32
183です。

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



186:デフォルトの名無しさん
08/11/22 19:29:02
ちょw


187:デフォルトの名無しさん
08/11/22 20:37:46
名前:
E-mail:
内容:
なんぞこれ


188:デフォルトの名無しさん
08/11/22 21:32:16
デスマの合図に決まってるだろ

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



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

191:189
08/11/23 02:01:38
>>190
なるほど、ありがとうございました

192:デフォルトの名無しさん
08/11/23 03:58:12
Visual Source Safeを使えばいいと思うよ

193:デフォルトの名無しさん
08/11/23 11:48:07
次のVC++で改良される自動生成コメント ...

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


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

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

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

197:デフォルトの名無しさん
08/11/23 22:28:58
C++/CLIのinterfaceではないだろうか

198:デフォルトの名無しさん
08/11/23 22:39:06
>>197
調べてみたらそのようですね
ありがと

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

200:デフォルトの名無しさん
08/11/24 19:20:22
っ「URLリンク(www.microsoft.com)

201:デフォルトの名無しさん
08/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
08/11/26 11:04:56
あぁ、自己解決しました…

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

204:デフォルトの名無しさん
08/11/26 22:16:31
ライブラリが最適化されてるか否か

205:デフォルトの名無しさん
08/11/26 23:16:52
もう少しわかりやすく説明して欲しいんですが…

206:デフォルトの名無しさん
08/11/26 23:26:24
デバッグ用じゃないかデバッグ用か

207:デフォルトの名無しさん
08/11/27 00:00:34
ggrks

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

209:デフォルトの名無しさん
08/11/27 00:52:04
そういうことにしておけばいいんじゃないですかね

210:デフォルトの名無しさん
08/11/27 00:59:05
くたばれクソども

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

212:デフォルトの名無しさん
08/11/27 11:39:13
>>208
Releaseモードでビルドするんだよ


213:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/27 17:21:44
よくわからんが、とりあえず何か消したら念のためビルドのクリーンとかで
クリアしてから試してみては。

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

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

216:デフォルトの名無しさん
08/11/28 00:11:19
>>214,215
ありがとうございました。いろいろ試してみます。

217:デフォルトの名無しさん
08/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
08/11/28 12:16:01
MessageBox::Showを書いたのはbuton1_Clickの中です。

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

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


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

222:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/11/28 21:56:04
日本語でおk

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

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

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

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

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

229:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/03 18:41:50
>>229
libcpmtdはデバッグ用。内部でデバッグ用のmallocとfreeを呼んでるから/MTdじゃないとリンクできない。
リリースビルドならlibcpmtを使う。

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

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

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

232:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/12/04 10:44:16
そのエラーは何をする時に出るの?

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

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

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

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

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



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

236:デフォルトの名無しさん
08/12/06 10:27:18
>>234
> UNICODEのIniファイル

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

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

237:デフォルトの名無しさん
08/12/06 12:35:20
そうだったのか。
たしかにINIファイルって、ASCIIしか使わないけど……

238:デフォルトの名無しさん
08/12/06 13:08:53
> INIファイルって、ASCIIしか使わないけど……

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

なんて思ったら、

SHGetSpecialFolderLocation(hwndOwner,CSIDL_COMMON_APPDATA,...);

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

URLリンク(msdn.microsoft.com)(VS.85).aspx

247:デフォルトの名無しさん
08/12/06 19:30:24
昔話がしたいだけか。

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

257:デフォルトの名無しさん
08/12/07 00:59:36
>>256
仮にProgramFilesが駄目だったら今度どこに保存すんの?

258:デフォルトの名無しさん
08/12/07 01:06:21
Vistaは持ってないけどこの認識であってる?

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

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

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

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

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

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

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

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

264:234
08/12/07 04:26:59
豚切り失礼します。

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





265:デフォルトの名無しさん
08/12/07 12:46:44
>>258
3.が違う

266:デフォルトの名無しさん
08/12/07 16:07:48
>>265
どう違うの?

267:デフォルトの名無しさん
08/12/07 20:53:50
言ってみたかっただけじゃね。

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

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

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

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

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

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

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

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

276:デフォルトの名無しさん
08/12/09 01:24:14
>>275
把握したありがっとう

277:デフォルトの名無しさん
08/12/09 03:21:41
>>274
つかそれって結局管理者権限で実行するってことじゃねーの?
他のシステムファイルからみとかで管理者権限が必要でマニフェストに組み込まれた
アプリじゃなければ>>258のようになるってことっしょ?

278:デフォルトの名無しさん
08/12/09 10:30:08
>>277
マニフェストがない場合、管理者権限でもバーチャルストア行き。

279:デフォルトの名無しさん
08/12/09 10:52:59
マニフェストがないという言い方は正しくない

280:デフォルトの名無しさん
08/12/09 12:44:06
一連の流れをみててもどうもわかりにくいです。
人によって言ってる事が違うというか。
管理者、制限ユーザー、マニフェスト関連で正確な挙動に
ついての詳細情報が掲載されてるサイトないですか?
VistaだけでなくXPや2000での情報も欲しいです。

281:デフォルトの名無しさん
08/12/09 14:48:03
>>280
一次情報源としてMSDNライブラリなど

例えばここらへん。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
URLリンク(technet.microsoft.com)

282:デフォルトの名無しさん
08/12/09 15:11:06
日本語でおk

283:デフォルトの名無しさん
08/12/09 15:16:27
初心者スレで英文持ち出してくるヤツは死んでいいと思うよ
日本と米で仕様が違うのもよくある事だしな

284:デフォルトの名無しさん
08/12/09 15:26:18
英文にしか情報がないようなことを初心者スレで質問するヤツは死んでいいと思うよ

285:デフォルトの名無しさん
08/12/09 21:38:14
>>284
初心者なんだから分からんだろ。

286:デフォルトの名無しさん
08/12/09 21:50:21
非標準言語のしか資料が無いと言うことが判っただけでも大きな進歩であり、
革新的な質問であったことは確定的に明らか。

287:デフォルトの名無しさん
08/12/09 22:55:05
誰か日本語でわかりやすくまとめてくだちぃ

288:デフォルトの名無しさん
08/12/09 23:24:08
ホームエディションだと管理者か制限ユーザーのカテゴリわけだけで
細かい設定はないんだよな
プロフェッショナルの管理者による厳しいセキュリティ設定まで考慮してもきりがないと思う
どうやっても管理者次第で動かない設定にできるんだし

XPホームエディションでProgramFilesに入れたアプリを制限ユーザーで動かしてみたけど
普通にINIファイルを含むセーブデータを読み書きできた
Vistaでマニュフェストの指定なしだとこの読み書きがバーチャルストアになるってことか
それを想定して動くつくりであればセーブデータもプログラムと同じフォルダでいいんじゃね

289:デフォルトの名無しさん
08/12/10 01:08:56
まぁ仮想ストアは救済策ってーか、MSお得意の泥臭い互換性の維持だからな。
多分将来的にはユーザーのデフォの権限を制限ユーザーにしたいんだろうが、
それVistaでやっちゃうとProgram Filesに書き込むアプリなだけで動かなくなるわけだし。

マニフェスト無しでほっとくのも止めやしないが、管理者権限のコマンドプロンプトやファイラから
起動したら別々の設定ファイルをうっかり作っちまうとかも起こりうるので、
requireAdministratorで起動毎にUACダイアログを出した方がいい。

そしてアプリのユーザーにダイアログをうざがられてAppDataに
書き込まざるを得なくなるというプレッシャーこそがUACの真意だとかなんとか。

290:デフォルトの名無しさん
08/12/10 02:03:25
かなりどうでもいい条件付けだな

291:デフォルトの名無しさん
08/12/10 11:56:44
VS 2003からVS 2008にしてみました

C++のソースファイルはUTF-8で書かれていて、VS 2003では概ね問題なくコンパイルできていました。
ところがVS 2008のcl.exeは、このソース内に定数として書かれた文字列を勝手にSJISに変換して内部処理するようです。これでは正常動作できません。

この余計な機能を、何とか避ける方法はないのでしょうか?

膨大な量があるので、今さらファイルをSJISに戻すとかすることは不可能なんです。


292:デフォルトの名無しさん
08/12/10 12:03:53
コードページは?

293:デフォルトの名無しさん
08/12/10 12:10:24
普通にコマンドプロンプトを開いて作業しているので、932のシフトJISです。


294:デフォルトの名無しさん
08/12/10 12:15:05
すいません、本当に簡単なことなのですが
if(argc == 3){
if(argv[1] == L"-o"){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
この
if(argv[1] == L"-o") の条件が通りません。
コマンドで test -o test1 のように打っても違うものとして認識しているようで・・・
画面にプリントしてみると同じなのですが、Lをつけるとデータが違うものになってしまうのでしょうか?

295:デフォルトの名無しさん
08/12/10 12:16:52
chcpで変えてみては?
つーか、UTF-8でダメな例が思いつかないな、再現可能なソース無いですか?

296:デフォルトの名無しさん
08/12/10 12:18:44
>>294
文字列の比較に直接 == は使えません。

297:デフォルトの名無しさん
08/12/10 12:29:10
>>291
コンパイルエラーなのか動作が変なのか
エラーメッセージがあればそれを書いてもらうと何かわかるかもしれません

>>294
argvの型はTCHARですか

298:デフォルトの名無しさん
08/12/10 12:39:28
またどこの言語からの転向者だろ
VSつながりでVBかC#あたりか

299:デフォルトの名無しさん
08/12/10 12:40:19
template <typename Foo, typename Bar> class Baz : public Bar { なんたら
void Qux( const Quux<Foo,Bar> & foobar ) {...};
};

class Bar { なんたら }; // (1)

VC2008で上のをもう少し複雑に書くと Baz::Qux での引数の型 Quux<Foo,Bar> が
(1) の Bar と解釈されてコンパイルエラーになってしまう
GCCだと通るんだけどなあ

300:デフォルトの名無しさん
08/12/10 12:40:36
>"argv[2]"
この書き方はPerlかPHPだろう

301:デフォルトの名無しさん
08/12/10 12:52:34
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

302:デフォルトの名無しさん
08/12/10 12:53:27
もともとCとVBAをやってました
>>296
やっぱりstrcmpを使わないとだめですか?
>>297
int _tmain(int argc, _TCHAR* argv[])
こう宣言してます

303:デフォルトの名無しさん
08/12/10 12:57:44
>>302
はい。

304:デフォルトの名無しさん
08/12/10 12:59:15
if( _tcscmp(argv[1],"-o") == 0 ) {
では

305:デフォルトの名無しさん
08/12/10 13:00:32
if( _tcscmp(argv[1],_T("-o")) == 0 ) {
では

306:デフォルトの名無しさん
08/12/10 13:01:43
if (_tcsicmp(argv[1],_T("-o")) == 0) {
では

307:デフォルトの名無しさん
08/12/10 13:03:35
>>304さんの方法でやってみたところ
エラー 1 error C2664: 'wcscmp' : 2 番目の引数を 'const char [3]' から 'const wchar_t *' に変換できません。(新しい機能 ; ヘルプを参照)
というようなことを言われました。
どうもこの変換できないというところが理解できないです。代入しているわけでもないのに何故?って感じです。


308:デフォルトの名無しさん
08/12/10 13:04:55
#include "stdafx.h"
#include "string.h"
#include "stdlib.h"


int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp;
if(argc == 3){
if( _tcscmp(argv[1],"-o") == 0 ){
if((fp = fopen("argv[2]", "w")) == NULL){
printf("出力ファイルをオープンできません.\n");
exit(1);
}
fclose(fp);
}
else{
printf("USage :\n");
printf("-o : **********\n");
}
}
else{
printf("引数の数が違います");
}

return 0;
}

これが全文です。

309:デフォルトの名無しさん
08/12/10 13:14:00
通常 "-o" の文字リテラルは char で構成される
文字セットがユニコードの場合 _tsccmp は _wcscmp にマップされる
_wcscmp が要求する型は const wchar_t * だからエラーになる

_T マクロは文字セットにあわせてユニコードの場合には "-o" を L"-o" と変える
L"-o" はワイド文字 wchar_t で構成されるリテラルだから通る
すまん思いきり間違えた 304は俺

310:デフォルトの名無しさん
08/12/10 13:18:33
UNICODEに拘らなければANSI Cで十分なんだよな

311:デフォルトの名無しさん
08/12/10 13:21:00
>>309
解決しました!ありがとうございます

312:デフォルトの名無しさん
08/12/10 13:47:31
>>291で質問した者です
再現可能なソースを作っていて気がつきました。
chcp 65001やchcp 437としても動作が同じで、文字列リテラルが強制的にSJISに内部変換されていることが分かりました。
UTF-8のソースファイルなのですが、「BOM」を付けると、このような動作になるようです。

BOMを付けないUTF-8だと、warning C4819 が山ほど出て、化ける文字までありますが、何とかなりそうです。

今回作った下の再現プログラムも、BOMありのUTF-8と、BOM無しのUTF-8では、動作が違ってきます。

#include <iostream>
int main()
{
std::cout << "項目" << std::endl;
return 0;
}

一応解決したことにします。ありがとうございました。

313:デフォルトの名無しさん
08/12/10 15:35:09
すみません>>294で質問したものですが、
同じソースで _tcscat(argv[2],L".txt"); という処理を入れ、作成ファイルをテキスト形式にしようと思ったのですが
出力されたファイルが、テキストではなくファイルで出力されてしまいます。
画面表示させるとちゃんと****.txt となっているのですが・・・

314:デフォルトの名無しさん
08/12/10 15:49:13
>>313はスルーしてください
アホくさい間違いでしたので(汗

315:デフォルトの名無しさん
08/12/10 22:29:54
Visual C++を使用していて、ちょっと困ってしまったので助けてください。
下記画像のようにスペース部分に色つき矢印やらドットやらが表示されて消えなくなってしまいました。
どこかでキーボード押し違えたみたいで・・
この設定の解除の仕方を分かる方いたら教えてください><
   ↓
URLリンク(imepita.jp)

316:デフォルトの名無しさん
08/12/10 22:38:27
メニュー > ヘルプのキーボード何とかに一覧がある

317:552
08/12/10 23:45:14
ヘルプで見ても、そもそもコレが何なのか解らないので検索できないので
教えていただけませんか?

318:552
08/12/11 00:19:36
質問に答えてくれなかったからってこんなこと言うのもなんだけど
なんか、プログラマーって陰湿な性格の人が多いよね。

解るんなら教えてくれればいいじゃん。初心者用のスレだった気がするけど。

ついでに、編集→詳細→スペースの表示で自己解決しました。
だれも教えてくれんかった。

319:デフォルトの名無しさん
08/12/11 00:47:38
今MIDIファイルを開くっていうプログラムを作りたいのですが、
よろしければ教えてください。
バージョンはVC++2005 AEです。


320:319
08/12/11 00:53:28
319ですがGETFILE関数を使いたいです。
よろしくお願いします。

321:デフォルトの名無しさん
08/12/11 02:15:04
>>318
君が質問したのは3、4時間前だろ?
誰もが同じスレをずっと監視してサポートセンターのように対応してくれるとでも思ってんのか?

自分で解決したならそれでいいし、自分で色々やってもできなかったらまた質問すりゃいいだろ
陰湿なのはちょっとレスがない程度でふてくされる君の思考回路だよ

322:デフォルトの名無しさん
08/12/11 02:29:37
>>318
オマエみたいなパーデンネンを弾くために、みな時間置いてから答えるようにしてるからね。
ゴクローサン。

323:デフォルトの名無しさん
08/12/11 07:33:14
>>315
[編集]→[詳細]→[スペースの表示]

324:デフォルトの名無しさん
08/12/11 09:53:49
>>318
つーかその質問、定期的に出るんでうんざりなんだけど。
過去レス調べることもできないのかよ。

あと質問なんか1日くらい待てや、答える人が24時間張り付いてるわけじゃないぞ。

325:デフォルトの名無しさん
08/12/11 10:10:52
こんにちわ。Visual C++でOPENGLを用いてゲームを作ろうと思うのですが、
ウィンドウを振動させるやり方がわかりません。。

何かコマンドややり方があるのならアドバイスください。よろしくお願いします。


※JAVASCRIPTでウィンドウを振動させるみたいな感じです。

326:デフォルトの名無しさん
08/12/11 10:18:59
>>325
SetWindowPos APIとrand関数を使え

327:デフォルトの名無しさん
08/12/11 10:28:02
もの凄く気軽に「こんなソフトありませんか?」
スレリンク(software板:331番)

331 名前:名無しさん@お腹いっぱい。[] 投稿日:2008/12/11(木) 09:50:07 ID:mvBU1EDM0
こんにちわ。

アクティブウィンドウを振動させるようなフリーソフトってありますか?
OPENGLで実験中にウィンドウを揺らしたいのですが・・・コマンドも分からないし、出来ないので外部のツールで強引にしようかと。。


よろしくお願いします。

328:デフォルトの名無しさん
08/12/11 10:45:36
>>315
Ctrl+R、 Ctrl+Wを続けて入力


329:デフォルトの名無しさん
08/12/11 10:58:16
>318
試験勉強みたいに頭の中に全部記憶する必要ない。
というか情報量多すぎるからその都度自分で調べて解決していかないとだめ。
初心者の場合はどうやって調べたらいいかわからないから
調べ方を教えてあげるのが重要。
答えだけ教えたんじゃ、いつまでたっても自分で調べられようにならない。

330:M
08/12/11 11:35:21
今、VC++でMFCを用いたプログラムを作成中で、そのプログラムでRS232C通信を行いたいのですが、RS232c通信のプログラムの部分だけAPIを用いて記述したいのですがどのようにすればいいのでしょうか?
方法があれば教えてください。お願いします。

331:デフォルトの名無しさん
08/12/11 11:42:17
>>330
ここなんかどうだろ?
URLリンク(www.ee.fukui-nct.ac.jp)

332:デフォルトの名無しさん
08/12/11 11:43:59
>>326
2つともよく分からないまま検索したらMOVEWinfowというのもあるみたいで、if関数を用いて頻繁に座標をずらし振動させることにしました。
こんなんでいいのかな??

マルチすいません。ありがとうございます。

333:M
08/12/11 11:48:46
>>331
ありがとうございます。
このプログラムをMFCのプログラムにどのように組み込めばいいのでしょうか?
あほな質問ですみません。。

334:デフォルトの名無しさん
08/12/11 12:55:47
>>333
WM_COMMANDメッセージでコマンドを受け取ったら、main関数の中身を実行すれば?

335:デフォルトの名無しさん
08/12/11 14:11:02
ファイルの読み書きとほとんど同じだな
やってる内容が理解できれば使えるだろ

336:M
08/12/11 14:27:45
>>334
それでやってみようと思います。ありがとうございました。

337:デフォルトの名無しさん
08/12/11 16:38:53
VC++2008使ってます

LogItemという独自クラスを作り、

 LogItem item;
 ListBox.add(item);

といったことしてます(単なるリストボックスへの追記)。
表示を変更する際に、

 ListBox.add(〜.format("{1}・・・",item.name,・・・))

等とすると、今度は削除時にいろいろ面倒です。
表示を適切に変更できるものの、削除時は、
ListBox.remove(item)でいけるような
(追記時の表示に依存しないような)
簡単な方法はご存じありませんか?
参考になりそうなサイトやキーワードを
教えていただければ幸いです。

338:デフォルトの名無しさん
08/12/11 16:41:26
16ピンのPIC16F819のPICを利用してサーボモータや光電センサー、ディスプレイを制御したいのですがBASICのプログラムが分かりません 

サーボモータは Futaba S3002 を使用
・計7個のサーボモータ使用
・ボタンを押して入力したものをサーボモータに出力〔右に90度⇒左に90度〕

光電センサーは鏡とセンサーの間を通過するのを検出するもので omron E3R-R2E4 を使用
・コインを検出してカウントする
・6個使用

ディスプレイは数字と文字の両方を表示したいです


まとめると、コインを光電センサで検出してその検出したコインをディスプレイに表示する。たまボタンを押すとサーボモータが回転
するものを作りたいです。
この動作をBASICのブログラムで制御させるには、どのようなプログラムにすればいいですか

339:デフォルトの名無しさん
08/12/11 16:43:58
>>338
ここはBASICのスレでもPICのスレでもない。

340:デフォルトの名無しさん
08/12/11 19:13:55
337です。
自己解決しました。単なる調査不足&ありがちな混乱、でした

※ToStringをオーバーライドすればいいんですね・・・。

ってか。

質問の大半も意味不明でした。正確には「リストボックスにオブジェクトを
そのまま追加した時に、表示のみを変更できるようにしたい。」とすれば
よかったんでしょうね・・。

お騒がせいたしました。ほかに困っている人の助けになれば幸いです^^;


341:デフォルトの名無しさん
08/12/11 21:14:25
Visual C++ 2008 Express Editionについての質問です。

Windowsフォームアプリケーションプロジェクトを作成し、
フォームにボタンとpictureBoxを配置しました。
ボタンを押すと、pictureBoxのプロパティで設定した画像の画素値を取得したり
描きこんだりしたいと思い、画像にアクセスする手段を模索することにしました。

どうもpictureBoxクラスから直接画像にアクセスすることはできず、
いったんBitmapクラスに移さないといけないことが分かりました。
これでSetPixel関数を使って、画素値を書き換えることができるようになったのですが、
これをまたpictureBoxに戻して表示することができません。

コードは以下の通りです。(ボタンを押したときの処理関数)

Bitmap bmp = pictureBox1->Image;

bmp.SetPixel( 10, 10, Color::Red );
pictureBox1->Image = bmp; ← これで型が合わないというようなエラーが出る

どのようにすればpictureBoxの画像を加工し、それを表示することができるのでしょうか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4348日前に更新/248 KB
担当:undef