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/
677 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:02:23 ] >>674 カルシウム不足 不摂生な生活
678 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 22:38:08 ] 大学でBorland C++ Builder version.4を使用しています。 自宅でもプログラムを組みたいので、Borland C++ Builder 2007の体験版を使っているのですが、 *.dfmの互換性がないため、大学側のC++ Builderで使用するのに一々フォームを組み直す必要があって非常に面倒です。 *.dfmに下位互換を持たせることはできるのでしょうか?教えてください。
679 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 02:16:57 ] >>678 BCB4を大学からコpうわなにをするやめr
680 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 03:09:32 ] >>678 両方にTurbo C++ Explorerをインスコ
681 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 22:05:05 ] お世話になります。 ファイルマッピングの実装が完了しました。 で、複数のデータをひとつの文字列で送る予定なんですが、 数字であれば、カンマ仕切りで分ければいいのですが、 数字と任意の文字列も含んでおり、任意の文字列の中にカンマがあれば、 受信側で処理ができにくいと考えています。 " "や"|"や","など考えましたが、できるだけ、任意の文字列に例外文字・予約文字? を作りたくありません。 こんな場合、どういう方法があるのでしょうか? もちろん、仮想メモリーを別に設ければいいだけなんですが、 良い方法があれば教えてください。 ちょっとスレ違いです。すみません。
682 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:44:53 ] 任意の文字列に"があったら\"に、\があったら\\に変換すればいい
683 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 01:56:37 ] 普通に考えれば','じゃなく\x9を区切りに使うんじゃね?
684 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 09:17:58 ] 文字列長も一緒に送るなら\0で区切っても‥‥
685 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 09:34:53 ] 普通、ファイルマッピングならバイナリーをやり取り出来るわけでわざわざシリアライズする必要はないと思うけどな もしかして文字列の最大サイズを設けたくないのかな? あるいは読み出し側でストリームとして読み出してるんだろうか? ならパイプでいいと思うけどな。 とりあえず、文字列の問題は送信時に文字列の部分をエンコードするのが普通 >>682 さんの方法のほかに特殊文字は全部 %xx と%の後に2桁の16進数にしてしまう方法がある。 これがエンコードもデコードも簡単。 文字列の部分をエンコードしてからTStringListにAddで入れて CommaText で1行にして送るだけ エンコードは、1文字づつみて英数字以外は全部 %xx に置換してしまえばいい デコードは %を見つけたら次の2文字を取ればいいだけ
686 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 14:07:50 ] TChartのSeriesCountが1、軸にAutomaticを設定 この状態で最初のデータに2859以上のデータを追加するとエラーになるのはBCBの仕様?
687 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:54:11 ] シリアライズの件ですが、 難しいです。 検討してみたいと思います。 レスありがとうございました。
688 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:38:01 ] 静的リンクを設定したのですが、BCB非インストール端末にて動作させるとエラーが発生します。 当方BCB6のProを使用しております。 解決方法があれば教えていただきたいです。 以下エラーメッセージ vclx60.bplが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
689 名前:デフォルトの名無しさん [2008/04/24(木) 16:42:47 ] リンカとパッケージ
690 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 16:53:28 ] >>689 リンカの共有RTL DLL、パッケージの実行時パッケージを使って構築 この二つはチェックをはずしてありますが、他にも設定する部分があるのでしょうか?
691 名前:デフォルトの名無しさん [2008/04/24(木) 17:11:41 ] コードガードとデバッグ情報
692 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:20:46 ] >>691 CodeGuardは対象無し、デバッグ情報はリリースで再構築しているためチェックが外れています どうも他の人がやるとエラーの出ない実行ファイルが作成されたので、プロジェクトでなく処理系の設定じゃないかと思っています
693 名前:デフォルトの名無しさん [2008/04/24(木) 17:23:56 ] exeのサイズはそれなりのサイズになっとるかね? ディレクトリ・条件で無駄なあれがあったら削除してみるとか
694 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:10:39 ] 1.2Mくらいの実行ファイルが出来てます 他の人に作成してもらったものとは30kくらい大きいです 条件は不要なものがあったので削除してみましたが、変化無しでした
695 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:15:13 ] obj tds dsk とか不要ファイルを全部消してみたら?
696 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 19:39:56 ] BDS2006/2007は、単独実行exeを作成するにはオプション3箇所変更する必要あるけど、 Builder5/6は2箇所でいいのかな? オプションをもう一度目をこらして確認してから、再構築かな。
697 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:02:39 ] プロジェクトファイルが変になってるとか 新規プロジェクトで再構築はどうかな
698 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:02:21 ] うおおありがとうありがとう いろいろやってみたけどどうも上手くいかなかったです とりあえず再インストールしてやってみます
699 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:15:13 ] FindFirstでファイルの列挙を取得しています 自分のPCだと問題なく取得できるのですが、ファイルサーバだと取得できません。 調べてみたところTSearchRecのAttrがものすごく大きい値になってしまっているのが原因のようです。 回避策などあればご教授お願いいたします。 TSearchRec sr; int attr = faAnyFile; if (FindFirst(Edit1->Text + "\\*.EXE", attr, sr) != 0) { return; } do { if ((sr.Attr & attr) != sr.Attr) { continue; } // 処理 } while (FindNext(sr) == 0); FindClose(sr); }
700 名前:699 mailto:sage [2008/05/07(水) 14:19:19 ] うお、字下げがひどい TSearchRec sr; int attr = faAnyFile; if (FindFirst(Edit1->Text + "\\*.EXE", attr, sr) != 0) { return; } do { if ((sr.Attr & attr) != sr.Attr) { continue; } // 処理 } while (FindNext(sr) == 0); FindClose(sr);
701 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 14:41:59 ] TSearchRec.Attrは実装的には0x7FFFまで取りうるはず。 (winnt.h 5208行以降とWindowsSDK WIN32_FIND_DATAのドキュメント参照)
702 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:22:44 ] Attrってフラグの組み合わせなのに、大きさがどう関係あるの? > if ((sr.Attr & attr) != sr.Attr) あとこれの意図は?
703 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:29:07 ] ああfaAnyFileが全部のフラグカバーしてないじゃないかって事か
704 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:36:38 ] >>701 確認しました。 圧縮ファイルになっていました。 >>703 ご指摘のとおりです。 顧客の設定がわからないため、とりあえず属性の条件部分をコメントにして動くようにします
705 名前:デフォルトの名無しさん [2008/05/07(水) 17:02:28 ] C++Builder6で、 膨張処理 細線処理 のプログラムをおしえてください。
706 名前:デフォルトの名無しさん [2008/05/07(水) 19:24:26 ] borland C++Builder6からgnuplotを実行し、 グラフを書かせたいのですが、 以下のコードではエラーが出てしまいます。 (pgnuplot.exeを認識しない。) ご指摘をお願いします。 ----------------------------------------------------- FILE* gp; gp = _popen("C:/Gnuplot/bin/pgnuplot.exe","wt"); if(gp == NULL){ ShowMessage("I can't find PATH"); exit(EXIT_FAILURE); } fprintf(gp, "plot sin(x)\n"); fprintf(gp, "pause -1"); fflush(gp); /* Don't forget to flush the buffer. */ getchar(); _pclose(gp); exit(EXIT_SUCCESS); ----------------------------------------------------
707 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 19:55:59 ] >>706 ディレクトリ区切り記号を\\にしては? シェル上だとスラッシュでも動作する事多いけどDOS/Windowsの本来のディレクトリ区切り記号はバックスラッシュ。
708 名前:デフォルトの名無しさん [2008/05/07(水) 20:28:56 ] >>707 コメントありがとうございます。 \\でやってみましたが、動きませんでした。。 そもそもC++builderからgnuplotは起動できないのでしょうか・・・。
709 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:14:36 ] んなことはなかろう。
710 名前:デフォルトの名無しさん [2008/05/09(金) 13:36:24 ] んなことはないつってんだろっ!
711 名前:TOM [2008/05/09(金) 14:21:20 ] // interface class Interface { public: virtual int getValue() const = 0;}; // print class Print { public: void out(const Interface& interface) { cout << "## " << interface.getValue() << endl; }}; // class A class A : public Interface { public: virtual int getValue() const { return 0; }}; // class B class B : public A { private: Print p; public: virtual int getValue() const { return 1; } void out() { // オブジェクトがコピーされて、class Aの値が表示される p.out((A)*this); // class AのgetValueが呼び出される p.out((A&)*this); } }; オブジェクトをコピーすることなく、クラスAの値を表示できませんか?
712 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 01:14:22 ] Turbo C++ Explorerを使っています。 TEditで文字の右寄せを行いたいのですが、Turbo C++ Explorerでは コンポーネントの登録ができないため、登録せずに実現する方法があれば 教えていただけないでしょうか? XP以降ならSetWindowLong()で実現できますが、2000などにも対応したいのです。
713 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 11:01:33 ] スレ違い
714 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 13:18:25 ] TMemoで代用とかって話があったような
715 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 13:20:50 ] >コンポーネントの登録ができないため、登録せずに実現する方法があれば new して、Parentプロパティに貼り付け先のコンポーネントを設定汁!
716 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 14:19:36 ] test
717 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:05:08 ] >716がBCBで2chブラウザを作るそうです
718 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:09:20 ] プロジェクトソース部分だけ書けば既存のJaneのソースがそのまま使えそうな>BCBで2chブラウザ
719 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:50:45 ] スレッドを別に分けて作成しているんですが、 別スレッドからmainの中にあるimageコンポーネントに絵画したいんですが、 どうやら駄目なようです。 このような場合の特殊なやり方教えてください
720 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:07:54 ] >>719 なんか質問が抽象的杉。 何がダメなんや。 調停入れて描画すればええだけだろ。
721 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 16:43:33 ] ビルダーで作っているんですが、 ShellExecuteで他のプロセスを実行させていますが、 自前のプロセスが終了したとき、実行させたプログラムも 一緒に終了させたいのですが、良い方法ありませんか? 今はハンドルを一生懸命さがして PostMessage で終了させてます。 ShellExecuteの段階でハンドルがわかればいいとおもうんですが。 いろいろ教えてください。
722 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:51:04 ] ちょっとお尋ねしたいのですが、 #include <string> #include <sstream> #include <fstream> using namespace std; int main() { stringstream test; test << (char)0x12 << (char)0x11 << (char)0x10 << (char)0x00 << (char)0x00 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09; ofstream fout("test.txt"); fout << test.str(); return 0; } このプログラムが吐き出すtest.txtをバイナリエディタで見てみると、後ろから2バイト目に謎の0Dが出てくるのですが、この0Dは一体なんなのでしょう?? コンパイラはMinGWです。
723 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:54:41 ] すいませんソースコードが間違ってました。 正しいのはこっちです。 #include <cstring> #include <sstream> #include <fstream> using namespace std; int main() { stringstream test; test << (char)0x12 << (char)0x11 << (char)0x10 << (char)0x00 << (char)0x00 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09 << (char)0x09; int aa = test.str().length(); string uu; uu = aa; test << uu; ofstream fout("test.txt"); fout << test.str(); return 0; }
724 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 21:56:54 ] >>721 CreateProcess使えば?
725 名前:722 mailto:sage [2008/05/18(日) 23:38:08 ] 誤爆失礼しました。。
726 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 23:42:07 ] tp://akky.cjb.net/mfc/appclose.html これをもう少しスマートにならないものでしょうか?
727 名前:デフォルトの名無しさん [2008/05/19(月) 02:36:18 ] >>722 それテキストモードで開いてないか?
728 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:05:35 ] void __fastcall TForm1::Button1Click(TObject *Sender) { try { Chart1->BottomAxis->Automatic = true; Chart1->LeftAxis->Automatic = true; TChartSeries *cs = new TLineSeries(Chart1); Chart1->AddSeries(cs); cs->AddXY(30000, 0, "", (TColor)clTeeColor); } catch (Exception &ex) { Application->ShowException(&ex); } } これ実行するとEInvalidPointerになるんだが意味がわからんとです
729 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:16:29 ] よくわからんけど、 > Chart1->AddSeries(cs); これいらなくね?あと > EInvalidPointerになるんだが どの行で?デバッガで例外を発している処理をちゃんと確認してみたら?
730 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:11:40 ] >>729 > これいらなくね? これないと表示されないんだ… > どの行で?デバッガで例外を発している処理をちゃんと確認してみたら? ブレークかけてるけど、イベント終了まで例外は発生されなくて、終了後に例外が発生
731 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:20:04 ] こっちで試した限りじゃ空文字列がまずいようだ
732 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:52:56 ] 空文字を適当な文字列にしたらいけました ラベルが例外の温床なのかと思い、軸のLabelStyleをtalValueに変えてやってみたら例外発生 あとは実際のプロジェクトで試してみたら例外は変わらず コンポーネント追加してるのが悪いのかもしらん
733 名前:デフォルトの名無しさん [2008/05/21(水) 21:55:24 ] BCBの64ビット環境への対応に関して情報あれば教えてください。
734 名前:デフォルトの名無しさん [2008/05/22(木) 03:20:42 ] >>733 とりあえずDEP切っておけば動くんじゃね?
735 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:01:31 ] フォームを持たないプログラムを作るにはどうしたらいいですか? プロジェクトソースのWinMainにどうやってかけばいいですかね?
736 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:09:43 ] ウィンドウ持たない常駐型アプリはWindowsの仕様上無理。 メインフォームのVisibleをfalseにすればおk。 起動時に処理してそのまま終了ならコンソールアプリと同じ処理をすればいい(mainをWinMainに置き換えるだけ)
737 名前:デフォルトの名無しさん [2008/05/22(木) 16:32:25 ] TPNGObjectを探してるんだけどこれって本家HPが見れないー どっかDLできるとこある?
738 名前:デフォルトの名無しさん [2008/05/23(金) 23:10:10 ] >>737 ほんとだねー。 どこかにアップする?
739 名前:デフォルトの名無しさん [2008/05/24(土) 05:24:00 ] Delphiくだすれで見つけた。 www.codeplex.com/PNGImage/Release/ProjectReleases.aspx?ReleaseId=13294 fcしてみたけど手元のv1.564と全く同じだったからこれでいいんじゃないかな。
740 名前:デフォルトの名無しさん [2008/05/24(土) 17:53:43 ] 以下のようなエラーが出て、原因がわかりません。。。 エディターはBCC Developerで -W オプションにはチェックをいれています。 初歩的な質問ですみません > C:\borland\bcc55\Bin\make.exe -fDebug\testWin.mak -B Debug\testWin.obj MAKE Version 5.2 Copyright (c) 1987, 2000 Borland brcc32 -W -3 -Od -w -AT -pc -H- -k -b -v -y -DDEBUG -nDebug -c D:\util\bccdev1221\bccdev1221\DATA\testWin\testWin.cpp Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. Illegal Parameter: -W
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に宣言してます。