- 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/
- 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に宣言してます。
|

|