- 1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ]
- Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。 ■質問するにあたって ・エラーや警告のときはエラーメッセージを書きましょう。 ・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。 ・できるだけ具体的に。 質問の仕方については次のページが大変参考になります。 www.hyuki.com/writing/techask.html ■回答するにあたって ・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。 (MSDNのどの項目だとか、何のキーワードでGoogleするとか) ・ネタや煽りは軽く流しましょう。 過去スレ、関連スレなどは>>2-5辺り。
- 487 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 11:39:19 ]
- うおーーーできたーー
GetHeaderってなんだったんだーーーー ありがとう。まじありがとう。 無駄に難しくはまり込んでいた・・・
- 488 名前:デフォルトの名無しさん [2008/12/22(月) 20:19:26 ]
- VCで作ったwindowsのプログラムを全く別のパソコンで動かすにはどうしたらいいのでしょう?
ソリューション構成のとこをreleaseにして、できたexeファイルと画像と音声リソースを 同じディレクトリに入れて、USBメモリで他のパソコンに移して実行しても、 アプリケーションの構成が正しくないとかいうエラーが出てしまいます。 どなたかアドバイスお願いします
- 489 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:22:15 ]
- まずは、正確なメッセージを貼るところから始めよう。
- 490 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:23:37 ]
- 次に、そのメッセージでググってみよう。
- 491 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:26:05 ]
- アプリケーションをスタティックリンクするか、「他のパソコン」にランタイムをインストールするといいかも。
- 492 名前:デフォルトの名無しさん [2008/12/22(月) 21:11:11 ]
- ググッてみたら解決方法がいっぱい出てきました。
出てきたページを参考にランタイムを入れてみようと思います。 ありがとうございましまろ
- 493 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:48:23 ]
- >>478
プログラミングWindows 第5版 (Charles Petzold著) Win32APIを勉強する上ではバイブル的本だと思うが 君が理解できるかどうかは俺にはわからん ただ訳もよくできてるから 初心者が読んでても結構楽しいぜ それなりの値段だから 大きめの本屋で目を通してみると良い とりあえず上巻だけでOK
- 494 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 23:55:22 ]
- VC++2003を使用しています
テキストファイルやmp3等のリソースエディタでは埋め込みが不可能なものを リソースとして埋め込み、使用するにはどのようにしたらいいのでしょうか ググった所ビルドアクションを埋め込まれたリソースにするという事はわかったのですが、 追加したファイルのプロパティを確認しても項目がその他しか出ていませんでした どうかよろしくお願いします
- 495 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:01:29 ]
- VisualStudio2008 c++ です。
Regex::Matchesでパターンマッチした文字の位置を取得して、その列をSelectにすることできる? ABC ABC ABC ↑これでAをMatchesで取得したとして、3つ目のAを指定したら3列目が選択される。みたいに わかりにくくてごめん。
- 496 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:20:34 ]
- >>494
「カスタムリソース」でググってみ。
- 497 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 01:22:00 ]
- >>496
カスタムリソースで調べてやってみたら埋め込みリソースが成功しました 本当にありがとうございます
- 498 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:33:03 ]
- VC++上でコンソールアプリケーションを実行したときに
printf()の出力先(標準出力)を、VC++の出力窓にすることはできます? (OutputDebugString()を使わずに・・・)
- 499 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:10:04 ]
- printfってオーバーライドできたっけ?
- 500 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:12:56 ]
- >>498
標準出力の出力先はSetStdHandle()で切り替えられるけど、VCの出力窓のハンドルって取得できるのかな? 調べたらできるかもしれない。
- 501 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:18:42 ]
- なんでんなこと死体んだ
- 502 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:19:09 ]
- >>498
printfをオーバーライドして中身にOutputDebugString書いちゃ駄目なの? あくまでOutputDebugStringは使っちゃ駄目?
- 503 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 23:26:20 ]
- Regex::Matchesで検索した文字列の位置って、Forで地道に文字数カウントしかないの?
MatchCollectionのメンバで位置取得とかできないの?
- 504 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 03:17:52 ]
- #define printf (vsprintfしてOutputDebugStringする自作関数)
- 505 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 04:24:18 ]
- 自己解決した。スマソ
- 506 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 13:21:28 ]
- 質問です。
Visual C++ 2005 Expressを使っているのですが、 EXEファイルのプロパティから見られる「バージョン情報」を追加するには どうすればいいんでしょうか?
- 507 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 14:14:08 ]
- >>506
リソースファイルを作ればいい marigold.sakura.ne.jp/devel/windows/verinfo/index.html
- 508 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 19:49:37 ]
- >>507
ありがとうございます。そちらを参考にして一応設定し、「バージョン情報」タブが 表示されるようになりました。 ですが、何も設定していないのに「言語」という項目が「英語(米国)」という値で 自動的に設定されてしまうのですが、この「言語」の項目を「日本語」にするには どうすればいいのでしょうか? ためしに VALUE "言語", "日本語\0" と記述すると項目は追加されるのですが、「言語」「英語(米国)」は残ってしまいます…
- 509 名前:508 mailto:sage [2008/12/25(木) 20:01:21 ]
- 自己解決できました。TranslationとStringFileInfoのBLOCKの値に
関係してたんですね
- 510 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:41:53 ]
- VC++2008で、エディットボックスに入力された値を%と仮定して、
演算を行いたいと思っています。 15 と入力されていれば、1.15で演算 現在、取得した値に100加算し、100除算するようにしているのですが、 桁落ちが発生してしまい、変数に格納される値が1.1499…となってしまいます。 桁落ちを発生させず、正しく1.15として変数を格納するためにはどのようにすればよろしいでしょうか。 CString strBuf; double d; ((CEdit*)GetDlgItem(iID))->GetWindowText(strBuf); // strBuf="15" d = atoi(strBuf); // d=15.00000000 d = 100 + d/100; // d=1.149999999
- 511 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 02:56:37 ]
- 整数で計算して下さい
- 512 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 03:14:09 ]
- 結果出力、つまり文字列に変換するときに丸めればいい。
偶数丸めとか四捨五入とか。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 06:37:33 ]
- 1ドル15セントみたいな概念は理解できないんだな
- 514 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 07:10:36 ]
- 100 + d/100
- 515 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 07:19:30 ]
- たぶん、( 100 + d ) / 100 と書きたかったんじゃないか?
- 516 名前:510 mailto:sage [2008/12/26(金) 09:32:30 ]
- (100+d)/100の間違いでした。
四捨五入で試して見たいと思いますが、 少数で演算はやめておいた方がよさそうですかね。 計算式が少し複雑なものだったので、楽できればと思ったのですが。 ありがとうございました。
- 517 名前:デフォルトの名無しさん [2008/12/26(金) 11:57:21 ]
- CString型の文字列に格納されている文字を1文字ずつ取り出したいです。
ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、Strcpyでcharの配列にコピーした上で、 str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを作りたいです。 こんな感じの関数として。 CString ripString(CString src,int index){ //ソースとなる文字列、n文字目 /*〜処理〜*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b" ・ ・ ・ こういうことをするのに良い方法はありますか?
- 518 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:05:49 ]
- CharNext, IsDBCSLeadByte
- 519 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:09:47 ]
- >>517
CString::GetAt( int iChar)
- 520 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:18:56 ]
- >>517
#define _UNICODE
- 521 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 19:48:42 ]
- 初めてDLL作ろうとしたのですが、依存関係を設定してビルドするとなぜか〜〜.libが見つかりませんとでて失敗します。
〜〜.dllってどのようにすれば使えるのか教えてください。 dllファイルの作成自体は成功しています。
- 522 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 20:37:37 ]
- >>521
google dll 作成方法
- 523 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:03:56 ]
- 散々調べてから2ちゃんで質問したんですが・・・
とりあえず自己解決しました。 Project Test ←dllを使うプロジェクト Project Test_dll ←dllのプロジェクト という感じで、Test_dll.libができるのかと思ってたら、Test_dll.dllとTest.libの名前でファイルが作成されてました。 はじめにTestのソース内で#pragma comment(lib, "Test.lib")を試したところ 出力ファイル名が入力ファイル名が一致しています。というエラーが出たので、(名前も対応していないので) Test.libがTest_dll.dllのアタッチとは関係ないものだと早とちりしていました。 結局Test.libをTest_dll.libにリネームして、リンクすることでビルドに成功できました。
- 524 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:11:02 ]
- ただ出力ファイルのdllの名前はプロパティから変更できたのですが、出力されるlibファイルの名前が変更できません。
みなさんは毎回手動でリネームしているのでしょうか。
- 525 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 21:52:49 ]
- libが必要になる方法なんかで作らないもん
面倒だし
- 526 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 23:24:50 ]
- ビルド後のイベント
- 527 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 10:28:01 ]
- リンカの詳細にインポートライブラリってのがあるべや
- 528 名前:デフォルトの名無しさん [2008/12/28(日) 20:13:39 ]
- モードレスダイアログのコンボに対して、親ウィンドウから値をセットするにはどうしたらいいんでしょうか。
Win32 VC++です。 モードレスダイアログに setData(char* text) { ComboBox_AddString(hwndDialog, text); } 親から dialog.setData(text); UpdateWindow(hWndDialog);
- 529 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:01:37 ]
- うまくいかないのなら、その経過も書いてよ
- 530 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 22:13:09 ]
- 親から送る
ComboBox_AddString( GetDlgItem( hWndDialog, IDC_COMBOBOX), text);
- 531 名前:デフォルトの名無しさん [2008/12/28(日) 23:12:16 ]
- >>530
おっしゃるとおりにやってみたのですが、現象は変わりませんでした。 現象は、モードレスダイアログにあるコンボの中身が空のままです。 ただ、 num = (int)SendMessage(GetDlgItem( hWndDialog, IDC_COMBOBOX), CB_GETCOUNT, 0, 0); でみると要素数numはちゃんと増えています。 WM_PAINTを拾ってInvalidateRectで再描画する必要があるのでしょうか。
- 532 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 23:29:03 ]
- >モードレスダイアログにあるコンボの中身が空のままです。
ポインタ操作間違えて文字化けしているだけじゃないのか?
- 533 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 23:50:08 ]
- そもそもどこの時点でしけてんだよ
まず、モードレスダイアログ自身に同じ処理を書くと成功すんのか?それ
- 534 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 02:31:03 ]
- コンボボックスのリストの部分のサイズどうなってる?
コンボにフォーカスして↑↓キー入れてみたらちゃんと追加されてるとか
- 535 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:54:28 ]
- ボタンが無効かどうかを調べるにはどうすればいいんですか?
- 536 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:08:08 ]
- IsWindowEnabled()
- 537 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:24:57 ]
- ありがとうございますっ
- 538 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:10:54 ]
- Visual C++ 2005 Express+Windows Platform SDKの環境なのですが、
実行時にメニューバーの表示/非表示を切り替えたいのですが、 どういった方法がありますでしょうか?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:18:26 ]
- メニューバーをツールバーコントロールで作成しておいて、
EnableWindow( hWndToolBar, ( IsWindowEnabled( hWndToolBar) == FALSE);
- 540 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 22:19:21 ]
- しまった、カッコが一個たらね。
- 541 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 04:46:19 ]
- 別の方法で解決しましたが、レスありがとうございました
- 542 名前:デフォルトの名無しさん [2008/12/31(水) 22:52:19 ]
- どうやって解決したのか書いてけよ
クソだな 根っからのクソ 育ちが悪すぎる 親、何?誰?かなりクソでしょ? 教育失敗してる
- 543 名前:デフォルトの名無しさん [2008/12/31(水) 23:51:34 ]
- 今やるならC#で始めるほうがいいよな>初心者
ペゾルド本もC#だし。
- 544 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 02:50:34 ]
- ネコ以下でした…
- 545 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 11:15:15 ]
- vcprojからnmakeに変換する方法があれば教えてください。
- 546 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:00:22 ]
- VC6はメニューにあるね
- 547 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:14:00 ]
- 2002以降無くなったな、便利だったんだが・・・
- 548 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:49:40 ]
- >>546,547
レスありがとうございます。 探して見つかったら報告します。
- 549 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 21:57:36 ]
- #include <fstream>
char *textdata; void main(){ ifstream fin; fin.open("test.txt",ios::binary); この後、textdataにtest.txtのデータをコピーしたいのですが test.txtはeofの後にもデータがあります。 それも含めて、ファイルの最後までデータを読み込みコピーするには どうすれば良いですか?
- 550 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 22:13:27 ]
- そういう関数の中でeofチェックしてるはずだから
eofチェックしない処理を自作する。
- 551 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 23:41:29 ]
- できません
- 552 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 07:50:04 ]
- >>549
eofのあとにデータがあるんじゃなくて、eofの判定をミスってるだけだろ。
- 553 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 08:04:37 ]
- >>549
ソースを出してくれ
- 554 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 11:28:48 ]
- #include <fstream>
#include <iostream> using namespace std; char textdata; void main(){ ifstream fin; fin.open("test.txt",ios::binary); while(!fin.eof()){ fin.get(textdata); cout << textdata; } getchar(); 最初から作ったらできてたお
- 555 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 01:38:20 ]
- すいません。質問です。
プリコンパイル済みヘッダーを使用する設定にして、 ソースにプリコンパイル済みヘッダーを include しないと、 「プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました」 というエラーが出るのですが、 これは全部のソースに、プリコンパイル ヘッダーを include しないといけないのでしょうか?
- 556 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:10:17 ]
- >>555
すべての cpp ソースの頭に #include "stdafx.h" と書けば解決する。
- 557 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 03:32:56 ]
- つまり「全部のソースに、プリコンパイル ヘッダーを include しないといけない」というわけだ。
- 558 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:01:52 ]
- >>556さん
>>557さん ありがとうございます。 やはりそうなのですか。 ところで、何で全部のソースに書かないといけないのでしょうか? 自分のイメージでは、プリコンパイルヘッダーって、 ヘッダーファイルをまとめたヘッダーファイルみたいな物と思っています。 別にプリコンパイルヘッダーに登録されているヘッダーファイルが 必要じゃない場合とかも、そのソースに include しないとエラーが出るっていうのが、 いまいち納得できませんでした。 何か自分は考え違いをしているのでしょうか?
- 559 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:38:47 ]
- >>558
プリコンパイルヘッダーを使用する/しないは、全体の設定のほかに 個別のソースごとに設定できる。 必要なけりゃそれで除外すればいい。
- 560 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 10:55:22 ]
- >>558
プリコンパイルヘッダはコンパイル前にあらかじめヘッダーをコンパイルして結果を保存し、再利用してコンパイルを高速化するためのもの。 だからプリコンパイルヘッダを使用すると指定したモジュールのヘッダー読み込みの順序が同じでなければならない。そのために各ファイルの先頭でstdafx.hを読み込むようにしている。
- 561 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:20:54 ]
- イベントのハンドルが引数になってる場合はどうやって渡せばいいんですか?
- 562 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:23:14 ]
- warning C4731: 'Mul' : インライン アセンブラ コードにより変更されたフレーム ポインタ レジスタ 'ebp' です。
この警告をなくす方法を教えてください。もしくは気にしなくても良いのでしょうか? MSに msdn.microsoft.com/ja-jp/library/ywz8xf2a.aspx 悪い例のサンプルがあるんですけど 対応方法が載ってません。
- 563 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:59:54 ]
- ようするにebp/espを書き換えなければ済む話。
警告無視で書き換えるなら、__asmを入るときの値を出るまでに復元しろということ。
- 564 名前:デフォルトの名無しさん [2009/01/03(土) 23:47:30 ]
- 警告0の正しい?コードを書こうかなと思ってコード書き直してるのですが、
ReadProcessMemory(ProcessHandle, reinterpret_cast<LPVOID>(ModuleAddress+data.offset.x), &x, 4, NULL); こう書くとwarning C4312: 'reinterpret_cast' : 'DWORD' からより大きいサイズの 'LPVOID' へ変換します。 とでるのですが、正しい使い方はどうなるんでしょうか? ModuleAddressとdata.offset.xはどちらもDWORDです。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:12:20 ]
- それは、Win64だとvoid*も64ビットだから気を付けろという警告。
キャスト元をDWORDからULONG_PTRなんかにすればいい。 DWORDはWin64でも32ビットのままだが、ULONG_PTRはポインタと同じく64ビットになるという整数型。
- 566 名前:デフォルトの名無しさん [2009/01/04(日) 01:17:12 ]
- Windows XP SP3 Visual Studio 2003 の話です
ソースAがメインのソースとして ソースBとCが他にあるとします. ある構造体の宣言をソースCでし,ソースAとBでその構造体を使いたいものとします. そのときコンパイルすると 構造体の再定義というエラー error LNK2005: "その構造体は 既に ****.obj で定義されています。 とでます. どのように宣言すればよいでしょうか?
- 567 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:27:40 ]
- グローバル変数の実体は一つだけにして、他ソースからはexternで参照する。
- 568 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:29:39 ]
- コンパイルエラーが出るなんて糞質問はコード公開必須だボケが
- 569 名前:566 mailto:sage [2009/01/04(日) 01:31:04 ]
- すみません別ファイルへのリンクに
#include "ソースC.cpp" とかいう変なことしてました.
- 570 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:03:30 ]
- >>564
プロジェクトのオプションに64bit互換のチェックの有無があるからoffにする。
- 571 名前:562 mailto:sage [2009/01/04(日) 11:48:44 ]
- >>563
ありがとう。 pushとpopをしておけば良いのですね。
- 572 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 12:50:31 ]
- Visual C++本体の扱い方を解説しているサイトはありますか?
コーディングはできるんですが、ソフトの機能を把握しておきたいのです ちなみに2008です
- 573 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 14:13:05 ]
- >>572
ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vstoc/html/06ddebea-2c83-4a45-bb48-6264c797ed93.htm
- 574 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 22:13:13 ]
- exeのディレクトリにあるファイルは読み込めるのに
exeのディレクトリのフォルダのファイルは読み込もうとするとエラーが出ます。 何故ですか? ifstream fin; OK↓ fin.open("test.txt",ios_base::binary); NG↓ fin.open("data/test.txt",ios_base::binary);
- 575 名前:574 mailto:sage [2009/01/04(日) 22:21:20 ]
- どうやらファイルを見つけていないようです。
- 576 名前:574 mailto:sage [2009/01/04(日) 22:40:00 ]
- 単なるスペルミスでした。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:18:38 ]
- 動的に作成した画像ファイルを読み込むとエラーになるんですが
なんとかなりませんか?
- 578 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:23:39 ]
- エラーの内容から原因を推測して修正してください
- 579 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:29:38 ]
- short int からintへ,int からshort intへの代入で,
特に型変換を記述しないで実行したんだけど,エラーも出ずに普通に動いた. これ放置してて問題ない?それともちゃんと型変換した方がいい?
- 580 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:05 ]
- コンパイラの警告レベルを高くしたらコンパイル時に文句言うんじゃね、と無責任に答える
- 581 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:31:58 ]
- その場合でもshort→intのように無条件に大きくなる方はそのままでも平気。
- 582 名前:デフォルトの名無しさん [2009/01/06(火) 01:42:53 ]
- 「const unsigned char *」 型とはどういう扱い方をするものですか?
_ismbslead、_ismbstrail関数を使って、文字列の中の2バイト文字を判別したいのですが・・・ int _ismbslead( const unsigned char *str, const unsigned char *current ); この引数の渡し方の意味がわからないです。 CString型、もしくはこいつをコピーしたchar型の配列の各バイトをチェックするロジックを作りたいのですが、 第一、第二引数どちらについても、char*型で渡そうとすると「const unsigned char*に変換できません」というコンパイルエラーが。 この関数はどうやって使うモノなのか教えてください
- 583 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:43:13 ]
- ありがとう,とりあえずはshort int から int へはそのまま放置しときます.
- 584 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:21:57 ]
- >>582
キャスト
- 585 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:52:44 ]
- constというのは呼び出す関数の内部で値を書き換えないようにするものなので
この場合無視していい char * を unsigned char *にキャストする
- 586 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:44:30 ]
- FileStreamとBinaryReaderを使って、Byte型の配列を、読み込んだファイルのデータ長に合わせて宣言したいです。
//入力ストリーム作成 FileStream^ fs = gcnew FileStream(fnp, FileMode::Open); //バイナリリーダー作成 BinaryReader^ br = gcnew BinaryReader(fs); //データ読み込み int len = (int)fs->Length; //データ長 System::Byte data[len]; こうやると、C2057とC2466、C2133が出て、ファイルを読み込んでからByteの宣言は出来てないみたいなんですが、 どうすればファイルを読み込んだ後にByteの配列を宣言出来ますか?
- 587 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:08:36 ]
- >>586
array<System::Byte>^ data = gcnew array<System::Byte>(len); もっとも、File::ReadAllBytesを使えば1発で済むぞ。
|

|