- 1 名前:デフォルトの名無しさん [2007/09/01(土) 09:41:22 ]
- C++Builderに関する質問・回答や議論等を行う相談室スレッド。
【前スレ】 C++Builder相談室 Part17 pc11.2ch.net/test/read.cgi/tech/1162918887/ 過去スレ・関連サイトは>>2-7あたり。 ※Borland C++ Compiler 5.5.1についての質問は以下のスレへ タダで使えるBorland C++ Part5 pc11.2ch.net/test/read.cgi/tech/1135127048/ ※BDS(Borland Developer Studio)の総合スレはこちら Borland Developer Studio 2006 No.13 pc11.2ch.net/test/read.cgi/tech/1175861395/ ※CodeGear(Borland)関連はこちら 【Borland】CodeGearオッチャ その5【(ノ∀`)アチャー】 pc11.2ch.net/test/read.cgi/tech/1186333161/
- 741 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:59:45 ]
- リソースコンパイラにC++ソースコンパイルさせるな
- 742 名前:デフォルトの名無しさん [2008/05/24(土) 18:02:32 ]
- brcc→bcc32
- 743 名前:デフォルトの名無しさん [2008/05/24(土) 18:04:50 ]
- >>741 さん
どういうことでしょうか? もう少し詳しく教えていただけると助かります。
- 744 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:14:34 ]
- >>743
付属の「Borland C++ Builder ツール」ってヘルプファイルを読みましょう。 結論から行くとmakefileの記述ミスじゃね?BCBIDEだとmakefileいじる機会ほとんどないから予測だけど。
- 745 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:15:25 ]
- >>743
>>742を百万遍嫁
- 746 名前:デフォルトの名無しさん [2008/05/24(土) 18:19:34 ]
- >>745 さん
百万遍読んだんですが、どこで設定すればよいのか分からないのです。。。 教えて教えてですみません。
- 747 名前:746 [2008/05/24(土) 18:22:53 ]
- すみません、解決しました。
ご迷惑お掛けしました。
- 748 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 19:54:47 ]
- BCB 5を使っているんですが、ブレークポイントから動きを追っていると
いきなり上の行に戻ったりおかしな挙動をすることがあります。 どっかでメモリ壊してるんじゃないかとは思うんですけど、同じような現象起きることありませんか? ちなみにCodeGuardでは何も検出されませんでした。
- 749 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:06:38 ]
- マルチスレッド使ってるだろ。
- 750 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:59:07 ]
- 意図的なマルチスレッドは使っていませんでした。
- 751 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 21:06:31 ]
- マルチスレッドか最適化ぐらいかな。ありえそうなのは。それ以外は経験した事無いな。
- 752 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:17:38 ]
- >>748
最適化だろ
- 753 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:10:53 ]
- 効率よくデバッグするときは最適化をOFFにするのがセオリー。
そうしないと、変数のレジスタ割当てやループの最適化や重複コードの最適化 などの影響であっちこっちに飛ばされるよ。
- 754 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:30:40 ]
- コピーしたフォルダがあるとか
- 755 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 06:46:27 ]
- ってか、デバッグするときは、
プロジェクト-オプション-コンパイラの デバッグ(F)を押した設定にする。 これ常識あるね。
- 756 名前:デフォルトの名無しさん [2008/05/26(月) 11:31:17 ]
- bmpを読み込んでTJPEGImageに変換してTJPEGImageのCompressionQualityを設定して
Timageに表示したいのですがいまいちうまくいきません。 CompressionQualityはファイル書き出し時に有効みたいなことが書いてたので jpg->Assign( bmp ); jpg->CompressionQuality = 10; TMemoryStream *ms = new TMemoryStream( ); jpg->SaveToStream( ms ); jpg->LoadFromStream( ms ); Image->Picture->Bitmap->Assign( jpg ); としてみたのですが、↑で実行時にエラーになります。 SaveToFileでファイルに書いてそれをLoadする分には正常に処理されるのですが ファイルを作らずにやるにはどうしたらいいですか?
- 757 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:11:48 ]
- StreamはPositionを意識しないといけない。SaveToStream後のPositionを見てみるといい。
LoadFromStreamはその位置からデータを読もうとする。
- 758 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:38:07 ]
- >>757
あなたは神ですか? まさにその通りでした!! それでちゃんと読めるようになりましたありがとうございます! し、しかし・・・ CompressionQualityってSaveToFileにのみ反映されるんですね・・・ SaveToStreamでは効果がなかった・・・
- 759 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:41:14 ]
- あ、違った(;´Д`)
SaveToStreamがうまくいってなかったからコードをアレしてたんだった SaveToStreamでもちゃんとCompressionQuality処理されてましたー
- 760 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:54:09 ]
- つーかVCLのLoadFromFile/SaveToFileってメソッド内でTFileStream作成して〜Stream呼ぶだけだかんねぇ
- 761 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 20:42:01 ]
- しかしVCとは違って各種ビルドオプションが切り替えられないのが面倒。
6使ってた頃にはリリースビルド専用のmakefile作ってた。
- 762 名前:デフォルトの名無しさん [2008/05/27(火) 05:00:24 ]
- >>761
意味不明 切り替えられるじゃん
- 763 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 06:24:46 ]
- >>761 はDelphi6と勘違いしているのじゃねえの
- 764 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 08:03:49 ]
- ひょっとして[デバッグ][リリース]ボタンでオプション設定する機能を
構成切り替え機能だと思ってるの?
- 765 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:35:11 ]
- で、みんなどのバージョンを頭に置いて書き込んでるの?
- 766 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:46:36 ]
- 6Pro
- 767 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:20:35 ]
- >>766
あれ? >>761はわざわざ「6使ってた頃には〜makefile作ってた。」って書いてあるんだから、 対象は6以外ってことで、2006以降の話なんじゃないのか?
- 768 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:36:34 ]
- はぁぁ?
- 769 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:55:19 ]
- >>761
今はどうしてるんだ? 今は6使ってないんだろ?
- 770 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:06:44 ]
- 今は5使ってます
- 771 名前:748 mailto:sage [2008/05/27(火) 21:22:14 ]
- う〜ん、最適化でそういう動きするのか。
でもデバッグを押して再構築してもまだそういう動きをしました。 テンプレートを多用してあまりにサイズが大きくなったので #pragma option push #pragma option -vi- 〜 #pragma option pop でインラインを止めてみたんだけど、これが問題なのかなぁ。
- 772 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:09:41 ]
- ていうかテンプレートそのものが原因だろw
- 773 名前:デフォルトの名無しさん [2008/05/29(木) 10:28:29 ]
- ODBCを経由せずにアクセスデータベース(mdbファイル)とやり取りする方法を教えてください
- 774 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 10:33:32 ]
- つ Win32API
- 775 名前:デフォルトの名無しさん [2008/05/29(木) 10:41:29 ]
- 関数名は?
- 776 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:02:25 ]
- それくらい自分で探したら。
大ヒントもらったんだから。
- 777 名前:デフォルトの名無しさん [2008/05/29(木) 14:10:49 ]
- 知らないならレスしないで下さい。ウザイだけです。
- 778 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:32:06 ]
- 知らない場合はレスしないよ。
知ってるけど自助努力の余地を残してあげてるだけ。 ここで努力して見せれば次は回答あげたりするわけだけど、 いきなりキレたりしたら、馬鹿にして見捨てるわけ。 今回は見事にキレたから、馬鹿にして見捨てた次第です。ばーかw
- 779 名前:デフォルトの名無しさん [2008/05/29(木) 14:53:16 ]
- 見事に知らない奴がするレスの手本だ
- 780 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:49:44 ]
- と言いつつ、本当に「知らない奴」かどうかは一度も確認したこと無いよね。
初めて見た時からずっと「これは知らない奴がするレスの手本なんだ!」ということにしてきただけw
- 781 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 19:34:09 ]
- コピペにマジレス(ry
w
- 782 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:25:16 ]
- delfusa.blog65.fc2.com/blog-entry-40.html
のやり方でTMemoを継承して、SetWindowLongで追加できないES_CENTERを持つメモコンポーネントを作成したいのですが、 CreateParamsで設定したスタイルが反映されません。どこに問題があるのでしょうか? class TMemoEx : public TMemo { protected: void __fastcall CreateParams(TCreateParams& param); public: __fastcall TMemoEx(TMemo* original); }; --------↑ヘッダ--------↓ソースファイル--------------- __fastcall TForm1::TForm1(...) : TForm(...) { Memo1 = new TMemoEx(Memo1); } void __fastcall TMemoEx::CreateParams(TCreateParams& param) { param.Style = param.Style | ES_CENTER | ES_NUMBER; TMemo::CreateParams(param); } __fastcall TMemoEx::TMemoEx(TMemo* original) : TMemo(original->Owner) { Parent = original->Parent; TMemoryStream* ms = new TMemoryStream(); try { ms->WriteComponent(original); delete original; ms->Position = 0; ms->ReadComponent(this); } __finally { delete ms; } SendMessage(Handle, ES_SETRECT, ....); }
- 783 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:42:36 ]
- param.Style = param.Style | ES_CENTER | ES_NUMBER;
TMemo::CreateParams(param); ↑逆
- 784 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:22:05 ]
- >>783
行けました。感謝です。
- 785 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 14:35:52 ]
- いま、簡単に書けば
void __fastcall TForm1::FormCreate(TObject *Sender) { loadInifile(Sender); } void __fastcall TForm1::loadInifile(TObject *Sender) { Panel1->Show(); Panel2->Show(); } のように、FormCreateでIniファイルを読み、 その結果でフォームのスクロールバーを表示したり、ステータスバーを消したりしています。 ここの処理をできる限り速くしたいと思います。 C++ Builderの場合、タイミング的にはloadIniFileが完了してからフォームが表示されるのでしょうか?
- 786 名前:デフォルトの名無しさん [2008/06/04(水) 15:02:24 ]
- CreateよっかコンストラクタかShowでやったほうがいいんじゃね?
- 787 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 15:13:55 ]
- てかBCBではOnCreate使わずにコンストラクタでやれってヘルプに書いてあるね
- 788 名前:785 mailto:sage [2008/06/04(水) 15:35:34 ]
- >>786>>787 すみません、そのヘルプの場所を教えていただけないでしょうか?
- 789 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 15:40:50 ]
- >>788
TCustomForm::OnCreate > 注意 フォームのコンストラクタとのやり取りが不良になる可能性があるので, > C++Builder で OnCreate イベントを使うことはお勧めできません > (OldCreateOrder を参照)。かわりに,フォームコンストラクタをオーバーライドすることをお勧めします。
- 790 名前:785 mailto:sage [2008/06/04(水) 15:49:03 ]
- >>789 ひぃ〜!ありがとうございます!
早速先のloadIniFileをコンストラクタに移動してみました。 が、動作をみると、まだフォーム表示後にフォームのサイズが変更されたりしてるようです。。 理想でいえば、ウィンドウのサイズや位置や、各コントロールのプロパティに値が設定された後、 フォームを表示したいのですが、どうすればいいのでしょうか。。?
- 791 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 15:53:41 ]
- TForm1::Visibleの初期値をfalseにして、コンストラクタの最後でtrueにすればいいんじゃね?
- 792 名前:デフォルトの名無しさん [2008/06/04(水) 15:54:28 ]
- loadInifileでやってるPanel1->Show();の意味がわからんのだが
- 793 名前:デフォルトの名無しさん [2008/06/04(水) 15:55:57 ]
- つーかフォーム操作はコンストラクタでやっとけばフォーム表示時には変わってるとおもうんだがー
他のコントロールならまだ作成されてない可能性はあるとおもうが
- 794 名前:785 mailto:sage [2008/06/04(水) 16:13:12 ]
- >>791 新規プロジェクトでForm1のVisibleを見るとfalseでした。
フォームのVisibleはフォームの表示には関係ないのではと思ったり。。
- 795 名前:785 mailto:sage [2008/06/04(水) 16:15:12 ]
- >>792 すみません、適当に書いたのであんまり意味はないです。。
>>793 なんか処理をコンストラクタに移したらうまくいったようなないような。。 フォームにActiveXのコンポーネントが乗ってるので、 そちらのちらつきが目立つようになってしまいました。。
- 796 名前:デフォルトの名無しさん [2008/06/04(水) 17:11:29 ]
- C++Builder5 ProでMDBファイルから直接レコードを読んだりしたいのですがどうやったらできますか?
- 797 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:05:33 ]
- >MDBファイルから直接
なにゆえ直接読む必要があるのだろうか・・・
- 798 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:10:05 ]
- ODBC
- 799 名前:デフォルトの名無しさん [2008/06/05(木) 10:54:37 ]
- ODBCを経由したくないからに決まってるだろぼけが
- 800 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 13:16:32 ]
- 普通にファイルオープンして読み書きすりゃいいじゃん
- 801 名前:デフォルトの名無しさん [2008/06/05(木) 13:26:53 ]
- 馬鹿はレスするなよ
- 802 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:13:53 ]
- くだすれ行けよ
- 803 名前:デフォルトの名無しさん [2008/06/05(木) 15:20:14 ]
- お前らの馬鹿なレスに期待してんだよクズ
- 804 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 10:12:27 ]
- >>796
マジレスすると、BCB6なら、プロジェクトに「タイプライブラリの取り込み」ってあるはずだから、 それでADOの対象DLLを取り込んで、COM経由で読めたような気がする。 確か、BCB5でもOKだったような。 それが無ければ、#import文でも取り込めた気がする。 この辺の作法はVC++と同じはず。
- 805 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:51:24 ]
- 直接レコードを読むってのは、ADO接続するってことなのか?
- 806 名前:デフォルトの名無しさん [2008/06/06(金) 16:14:00 ]
- むしろDAOで
- 807 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:35:06 ]
- つまんないことですけど、 std::sortで比較関数を書く場合、
bool sortNameAsc(const FI& left, const FI& right) { return left.Name < right.Name; } bool sortNameDesc(const FI& left, const FI& right) { return left.Name > right.Name; } で std::sort( vec.begin(), vec.end(), sortNameAsc ); // 名前昇順 std::sort( vec.begin(), vec.end(), sortNameDesc ); // 名前降順 と、 std::sort( vec.begin(), vec.end(), sortNameAsc ); // 名前昇順 std::sort( vec.begin(), vec.end(), -1 * sortNameAsc ); // 名前降順 は同じことですよね。。?自分に自信がなくて。。
- 808 名前:デフォルトの名無しさん [2008/06/06(金) 21:09:10 ]
- ちがわい
boolではtrueは1、falseは0に変換される
- 809 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:16:25 ]
- ってことは、
std::sort( vec.begin(), vec.end(), sortNameAsc ); // 名前昇順 std::sort( vec.begin(), vec.end(), ! sortNameAsc ); // 名前降順 ですか?><
- 810 名前:デフォルトの名無しさん [2008/06/06(金) 23:53:10 ]
- >>809
それコンパイル通る? 通ればそれでいいんだけど
- 811 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:58:18 ]
- あれなんかageになってたごめん
- 812 名前:809 mailto:sage [2008/06/07(土) 06:48:02 ]
- 三番目の引数が関数じゃないって怒られました \(^o^)/
- 813 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 10:45:35 ]
- 関数オブジェクト使えよ
sortName(Asc) とか sortName(Desc) と書けるように
- 814 名前:809 mailto:sage [2008/06/08(日) 05:43:37 ]
- 関数オブジェクトが理解できません\(^o^)/
ヤバス
- 815 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:51:43 ]
- STLよく知らんがこんなんでいいんじゃないん?
struct CData { CData(std::string name, int value):Name(name), Value(value){}; std::string Name; int Value; }; struct CCompareTest { int mode; CCompareTest(int val) : mode(val) {} operator()(const CData& l, const CData& r) { if (mode == 0) { return (r.Value > l.Value) ? true : false; } else { return (r.Value < l.Value ) ? true : false; } } }; main() { std::vector<CData> test; test.push_back(CData("Item1", 0)); test.push_back(CData("Item2", 4)); test.push_back(CData("Item3", 2)); test.push_back(CData("Item4", 3)); test.push_back(CData("Item5", 0)); std::sort(test.begin(), test.end(), CCompareTest(1)); for(std::vector<CData>::iterator it = test.begin(); it < test.end(); it++) { std::cout << (*it).Name << ":" << (*it).Value << endl; } } Name基準でしかソートしないならoperator >(const FI&, const FI&)とoperator <(const FI&, const FI&)定義して std::greaterとstd::less使えば事足りるだろうけど。
- 816 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:41:25 ]
- 関数オブジェクトってのは単に operator() をオーバーロードしたクラスのオブジェクトってだけのことだ。
- 817 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 16:43:38 ]
- なんだ関数オブジェクト知らなかったのか
普通に関数呼び出すよりも関数オブジェクトの方が 最適化を掛けるとインライン化されて速度が上がる可能性が高い まあ中にはVCみたいに関数呼び出しまでインライン化するお馬鹿な コンパイラもある事にはあるが
- 818 名前:デフォルトの名無しさん [2008/06/10(火) 18:37:40 ]
- Variant型のvarDispatchタイプにバイナリデータが入ってるのですが
これをHEX文字に変換する方法を教えてください
- 819 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 06:39:17 ]
- ん。varDispatchってことは、インターフェースへのポインタが入ってるわけでしょ?
そのインターフェースに何かしらのデータ取得用のメソッドないの?? varByte || varArrayなどのSafe配列としてバイナリデータ格納されてるわけじゃないんでしょ?
- 820 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:02:23 ]
- HBITMAP Spi_LoadImage(LPSTR plugin,LPSTR filename)
というHBITMAPを返す関数があるのですが、これをフォームに表示する方法がわかりません>< HBITMAP bitmap = Spi_LoadImage( "c:\\ifjpeg.spi", "c:\\0.jpg" ); Image1->Canvas->CopyRect( Rect(0,0,bitmap->Width,bitmap->Height), bitmap->Canvas, Rect(0,0,bitmap->Width,bitmap->Height) ); とすると「E2288 -> か ->* の左には構造体のポインタが必要」ってエラーが出てしまうのです。 どうしたらいいでしょうか
- 821 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:08:16 ]
- TBitmap::Handleに戻り値のハンドルぶち込めばいいんじゃね?
- 822 名前:820 mailto:sage [2008/06/16(月) 20:13:17 ]
- >>821 TBitmapコントロールってないですよね?><
フォームにはTImageを張ればいいのでしょうか??
- 823 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:24:47 ]
- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{ HBITMAP hBitmap = Spi_LoadImage("IFPSD.spi", "test.psd"); Image1->Picture->Bitmap->Handle = hBitmap; } //--------------------------------------------------------------------------- __fastcall TForm1::~TForm1() { Image1->Picture->Bitmap->ReleaseHandle(); }
- 824 名前:820 mailto:sage [2008/06/16(月) 20:29:22 ]
- >>823 ひぃ〜、できました!!感動です!ありがとうございます!!
このスレはすぐ的確な回答が返ってくる素晴らしいスレだと思います!!
- 825 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:31:01 ]
- つーかちゃんとVCLのドキュメント嫁
- 826 名前:820 mailto:sage [2008/06/16(月) 20:34:02 ]
- bcbに関しては全部ネットで勉強してるので、
なんかとっかかりがないんです(汗 VBとかVCはIDEがナビゲートしてくれる感じなのですが。。
- 827 名前:820 mailto:sage [2008/06/16(月) 21:39:47 ]
- たびたびすみません;;
テキストボックスを入力不可にしてグレーにしたいんです。 VBとかだとenableをfalseにすると勝手にグレーになって編集不可になったと思うのですが、 bcbだとreadonly=trueにして、自前で色を変更しないといけないのでしょうか?;;
- 828 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:48:06 ]
- 自前でどうぞ。
- 829 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:49:33 ]
- 無効にすればそうなるはずだが
- 830 名前:820 mailto:sage [2008/06/16(月) 21:55:24 ]
- ああ、enabled=falseにすると、エディットボックスのテキストがグレーになりました!!
テキストボックス自体をグレーにするには自前でするしかなさそうですね。。
- 831 名前:デフォルトの名無しさん [2008/06/17(火) 15:36:15 ]
- 知らないならレスしないでください。
- 832 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:49:33 ]
- ベッキーのようにexeから関数をエクスポートしたいのですが、
exeとエクスポート先のexe両方ともコンパイルできたのたのですが、 呼び出しexeで初期化が失敗しましたとでます。 とりあえず、exeのlibを作って静的にリンクしています。 またソースは extern "C" __declspec(dllexport) char* __stdcall GetA(void); という形で両exeに宣言してます。
|

|