1 :
デフォルトの名無しさん :
02/03/14 09:30 C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは
>>2-5 あたり。
____
/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | <
>>1 C Builderって何
\| \_/ / \_________________
\____/
______.ノ (⌒)
//::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::| /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄ `-Lλ_レ′
レ::::::::::::::::::|/::: ̄`ー‐---‐′
5 :
デフォルトの名無しさん :02/03/14 12:25
BCB5で質問!
6 :
デフォルトの名無しさん :02/03/15 00:00
( ´_`) (´_` ) 人いないね。 ウン。 あげとこか。 ウン。
7 :
デフォルトの名無しさん :02/03/15 01:19
( '_') CPUウィンドウでJP命令見るとJMPって表示されるんだよ。 ('_' ) へー。
8 :
デフォルトの名無しさん :02/03/15 01:21
( '_') CPUウィンドウでFIMUL dword ptr〜命令見るとFIMUL word ptr〜って表示されるんだよ。 ('_' ) へー。
・・・。
( '_') CPUウィンドウで・・・ ('_' ) へー。
( '_') CPUウ・・・ ('_' ) へー。
( '_') C・・・ ('_' ) へー。
( '_') ウザイ? ('_' ) ウン。
スレタイトル間違えるとこうなると言う見本。 今度からは書き込みボタン押す前に5秒以上確かめろ。
∧_∧ 〔^^〕
_,( ´Д`)⌒ i |
(⌒ ー 一 r.、! 〉
ヽ弋 。 人 。 イ(` ー'
〔勿\ ヽ
) r⌒丶 ) ドカ
ドカ ドカ / ! |'´
ドカ / /| |‖ ドカ
( く ! ||‖ ドカ
ドカ \ i | ‖|‖|
,__> ヽヽ从/∧∧
⊂⌒ヽ从/ つ ゚д゚) ←
>>14
( '_') MFCまみれで・・・ ('_' ) ヘー
18 :
( '。') :02/03/15 02:42
( '_') 直ってるみたいだね。 ('_' ) ウソツキ。
ほかにはないのか? >> 17
20 :
( '。') :02/03/15 03:12
( '_') JMP・Jcond・LOOP系の命令が消えちゃうバグもあるんだ。 CPUウィンドウの表示のバグじゃなくて本当に消えちゃう。 もちろん最適化で省かれるんじゃなくて、絶対必要な部分なのに消えちゃう。 でも原因がはっきりしないんだ。 判ってるのはJMPのあとに現れる最初のジャンプ系の命令が消えることぐらい。 それも↑方向のショートレンジのJMPを置くと起こりやすいみたい。 でも条件はこれだけじゃないみたいで、再現したりしなかったり。 でももう直ってるかな?今までの全部BCB3の話。 早くお金ためてアップグレードしなきゃ。 ('_' ) 長いよ。
21 :
( '。') :02/03/15 03:19
( '_') 忘れてたけどJMP先がラベルで指定してある場合ね。 JMP $+xxに置き換えたら直るんだ。 ('_' ) もう寝ようぜ。
22 :
( '。') :02/03/15 03:25
( '_') あれ?BCB6申し込んだらBCB5貰えるのって今日までだ。 まだお金ないよ。 ('_' ) 寝れ。
23 :
( '。') :02/03/15 03:30
( '_') 間違えた。$+xx に置き換えるのは消えちゃうほうね。 置き換えると消えなくなるんだ。 ('_' ) 氏ね。
BCB3 かぁ。そんな古いの今頃話題にされてもなぁ。
( '_') 僕たち時代に取り残されてるみたいだね。 ('_' ) 元気出せよ今度こそアップグレードするんだろ?
( '_') でも貧乏学生に\36,750はきついね。 ('_' ) おまえこないだ中退したろ。
( '_') 4時だね。寝よう。 ('_' ) 結局今日はほとんど人いなかったな。
28 :
デフォルトの名無しさん :02/03/15 04:30
( '_') 4時半だね。 ('_' ) ひきこもりの俺らには関係ないさ。
4万円くらい、バイトして稼ぎなさいな。
30 :
( '。') :02/03/15 12:22
( '_') おはよう。寝てる間に2レスだね。 ('_' ) こんな時間に覗くなよ。テレホーダイなんだから。
( '_') バイトと言えば遺跡発掘のバイトしたことあるよ。 ('_' ) ゴッドハンドはいなかったけどな。つか回線切れって。
32 :
( '。') :02/03/16 00:23
( '_') あれ、12時間経ってるのに誰も来なかったんだね。 ('_' ) Delphi相談室とC++相談室あるしな。
( '_') BCB5の無料期間終わっちゃたね。6がバグだらけだったらどうしよう。 ('_' ) BCB3でGO!だな。
34 :
デフォルトの名無しさん :02/03/16 01:44
ヘルプとヘルプ内のサンプルを死ぬほど充実して欲しい。 ユーザーのコンポーネントを置くフォルダを規定して欲しい。
BCB3 もバグだらけだと思いますが? よくそんな環境で我慢しているね。 短い人生を無駄遣いするのが趣味ですか?
( '_') Borlandのサイトで新機能のヘルプが貰えるみたいだよ。 ('_' ) 金が貯まるまでそれでも眺めてるか。
( '_') 案内よく見たら動作環境がPentiumII/400MHz以上だってさ。 ('_' ) あと67MHz足りねーな。
38 :
TabSheetについて :02/03/18 05:27
PageControlに動的にTabSheetを作成して、 いらなくなったTabSheetを破棄したいのですが delete PageControl->ActivePage; とやってOKなんでしょうか? もっと気の効いたメソッドとかあるのかと思って質問させてもらいました。 前スレ966と重複書き込みです。すみません<m(__)m>
39 :
( '。') :02/03/18 06:10
あ・・・寝ようと思ったら上がってた。2日ぶりの浮上だね。
>>38 良いと思いますよ。
要らなくなったコンポーネントは deleteで
破棄してしまってOKです。
後処理なんかもデストラクタでしてくれます。
40 :
( '。') :02/03/18 06:58
あっ、あと気の利いたメソッドというのは無いと思います。 ですのでやはり delete PageControl->ActivePage で良いんじゃないでしょうか。
41 :
デフォルトの名無しさん :02/03/18 08:40
なんですかこのスレは! スーパーハイソサエイティーハッカーのY.K氏の許可を得ているのですか? age age
42 :
TabSheetについて :02/03/20 15:10
43 :
デフォルトの名無しさん :02/03/21 18:34
#include <Filectrl.hpp> で、 DirectoryExists(hoge)が、 プロジェクト>オプション にて、 「実行時パッケージを使って構築」のチェックを外して、メイクするとリンクエラーになります。 外部ライブラリを参照しない、単独exeにしたいんだけど、どうしたらいいですか?
>>43 ほんとだリンカエラー出るね。
合ってるか分からんけど *.bpr 開いて
<LIBRARIES value="Vcl50.lib vclx50.lib"/>
<SPARELIBS value="Vcl50.lib vclx50.lib"/>
って変更してみ。一応リンカエラーでなくなった。
GUIで延々と処理を繰り返すプログラムを作るとメニューや×ボタンが 効かなくなるのですが、どうすればいいでしょうか?
Application->ProcessMessages() とか、スレッド使うとか。
>47出来ましたー。 ありがとうございます^^;
>>47 それやると、やっぱり処理速度って落ちるよね。
ループとかしている方のメイン処理の。
Application->ProcessMessage()を入れないと
CPU100%使い切ってるのに、入れてやると
多くても70or80%くらいなんだよねぇ。
if(loopCount % 100 == 0) {
Application->ProcessMessage();
}
とかやるべきかねぇ?
51 :
デフォルトの名無しさん :02/04/07 07:53
起動時に前回のプロジェクトが読み込んだりできる設定ってないでしょうか?
>>50 やっぱ、パフォーマンス求めるならそうなるよね。
1度だけ、見よう見まねでスレッド使ったことがあるけど、
なんだか使いづらかった。
こんな程度の腐れは逝って良しですね。。。。
53 :
デフォルトの名無しさん :02/04/13 00:12
if(loopCount % 100 == 0) { Application->ProcessMessage(); } は良く使う手だよ。 プログレスバーの操作もその中にブッチこむよ。
54 :
デフォルトの名無しさん :02/04/13 01:00
使用許諾コードって貰わなくても問題ない? メールアドレスとか名前とか取られるのがやなんだけど。
そんなに某が信用できないのなら今すぐここから出て行け
56 :
デフォルトの名無しさん :02/04/13 07:54
うるせー、厨某!
57 :
デフォルトの名無しさん :02/04/13 21:38
C++Builder 5 で外部のエディタを使ってコードを編集しています。 外部のエディタでソースを保存してBuilderに戻ると、 -------------------------------------------------- モジュールXXXXXXXのタイムスタンプが変更されました。 読み込みなおしますか? -------------------------------------------------- と確認のダイアログが出るのですが、このメッセージを出さないようにする方法はありますか? 自動的に読み込みなおすようにしたいのです。
58 :
デフォルトの名無しさん :02/04/14 00:39
DirectXを使わずにピクセル単位で高速にビットマップを描画する方法 はないでしょうか? Canvas->Pixels[x][y]=TColor;のループだと非常に遅い感じです。
質問です。 TMemoコンポーネントを使ってるんですが、 Lines->Add(ホゲホゲ)って文字列を追加していくと、 最後の改行の影響かなんかで、空白行が発生するんです。 これを無くすような文字列リストの追加方法を教えてください。 BCB5です。
挙げて
>>60 改行入れられたくないなら、
Memo->Text = Memo->Text + hogeじゃダメ?
63 :
デフォルトの名無しさん :02/04/14 13:32
>>62 ありがとうです。
文字列リストへAdd(ほげ)、Add(ほげ)…ってやった後に、
Text+=ちょめってやったら、
***********
ほげ改行
ほげ改行
ちょめ
***********
ってなるのかな?
素人おしえてくんスマソ。
自分でやってみます。
自己レスです。 できました。 for(int i=0; i<10; i++) {Memo1->Lines->Add("これは中間行");} Memo1->Text = Memo1->Text + "ここが最後の行"; これで最後の改行がきえました。 サンキュウデス。
65 :
デフォルトの名無しさん :02/04/14 19:49
CheckListBoxってItemsで文字列変更するとリークしない? CodeGuardに補足されるのだけど。
>>66 ありがとう。試してみたけど駄目だった。
こんな変なコンポーネント使うのも恐いので、他のもので代用することにした。
しかし、Delphi4で修正されたものがどうしてBCB5に残ってるのか。
69 :
デフォルトの名無しさん :02/04/15 03:42
メモ帳から文字列を取り出して在る特定の 文字列を高速に別の文字へ置換したいのですが、 AnsiString str; // 文章 AnsiString oldstr; // 置換対象の文字 AnsiString newstr; // 置換後の文字 int pos; // 削除指定 先頭場所 int length = oldstr.Length(); // 削除指定 長さ while ((pos = str.Pos( oldstr )) != 0) { str.Delete( pos , length ); str.Insert( newstr , pos ); } この方法だと、文章50万文字中に置換対照の文字が 5000〜10000程あると、如何しても何十秒もかかって しまうのですが、何か良い方法は無いものでしょうか?
>>69 素直に、StringReplace使えば?
>69 ほれ。 str = StringReplace(str, oldstr, newstr, TReplaceFlags()<<rfReplaceAll);
72 :
Delフサギコ ◆zE1iiRdQ :02/04/16 07:49
>>69 ,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < 文字列置換のコツがわかるかも
UU"""" U U \_______________
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1015685238 最初に出力するoutStrを用意して
SetLengthで予測される十分な長さを確保して
strからoutStrにコピーするのがいいです。
73 :
デフォルトの名無しさん :02/04/16 10:39
単にファイルにバイナリで書いた配列データを読みたくて __finally使った下のコードで [C++ 警告] xx: W8070 関数は値を返すべき って言われたんだけど これは例外が起きた時に帰り値が不定になるって事だよね? でも、じゃどう書けばいいの? long *getBin(char *fname) {long *mem; FILE *fp=fopen(fname,"r"); if(fp==NULL) return 0; try { if( 0!=fseek(fp, 0, SEEK_END ) ) return 0; long size=ftell(fp); size=(size+3) &(-4); if( 0!=fseek(fp, 0, SEEK_SET ) ) return 0; mem =(long *) malloc( size ); fread(mem,size/4,4,fp); return mem; }__finally{fclose(fp);}; }
あ、途中の"r" は"rb"です
>>73 つーかそれ以前にBuilderは関数の途中でreturnしたら
__finally内は実行されないのでそのコードははげしく問題あるぞ。
>>75 え? でもステップ実行したらちゃんと fcloseも実行しましたけど?
気になって今、fcloseで改行入れてブレークポイントかけたらちゃんと 停止しました
>>76 あれ?そうなの?
バージョン3か4の頃は通過しなかったんだが。
改良されたのか。古い情報でスマソ
そうなんですか
>>75 Delphiだと 単に exit するだけだから、 こういう処理スタイルでいいんだけど
C++とcライブラリの組み合わせで __finally って案外と使い難いですね。
・・・だから最初からfinallyが導入されなかったのかな
>>78 たしかにC++だと__finallyよりauto_ptr等のように
スタックの巻き戻しでやるのが一般的かな。
とりあえず
>>73 のコードは return mem; を __finally の外に
書けば Warning は消えそうな気がする。
コンパイラの警告が __finally に完全対応していないのかな?
>>79 あ! 何か return が2重に実行されそうな感じがして試してなかったけど
__finally の下に return 0; 書いたら 警告はきえたし、ちゃんと動いた。
ありがとう。
cのライブラリだけだから例外が起きる可能性は無いと思うんだけど、そこまでは
コンパイラは判らないんだろうね
スタックの巻き戻しを使う方式に書き換えてみた。 たしかにコッチの方が __finally よりスッキリするみたい long *getBin(char *fname) {long *mem=0; struct DFILE{ FILE *fp; DFILE(char *n) {fp=fopen(n,"rb");}; ~DFILE(){ if(fp){fclose(fp); };} }f(fname); if( 0!=fseek(f.fp, 0, SEEK_END ) ) return 0; long size=ftell(f.fp); size=(size+3) &(-4); if( 0!=fseek(f.fp, 0, SEEK_SET ) ) return 0; mem =(long *) malloc( size ); fread(mem,size/4,4,f.fp); return mem; }
vector<vector<AnsiString> > Table; で、2次元配列をソートする方法ってありませんか?
83 :
デフォルトの名無しさん :02/04/16 22:01
Memoコンポの背景に画像を表示したいのですが、可能ですか?
Table[i][j]で、iを列・jを行としたときに、 n番目のiをソートキーとして、行単位にソートしたいです。
86 :
Delフサギコ ◆zE1iiRdQ :02/04/16 22:37
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡< できると思いまフ
>>83 UU""" U U \_______________
とりあえず
TCuteMemoを利用するなり
>>81 fseekの前にfpのNULLチェックしないの?
それと余計なセミコロンは癖ですか?
エラーチェックするなら、ついでに fclose の前に fflush をやって戻り値をチェックすべし
>>58 こんなのでいかがですか。
void __fastcall TForm1::FormPaint(TObject *Sender)
{
char bmih[sizeof(BITMAPINFOHEADER)+4*256];
unsigned char Pixels[256][(256+3)/4*4];
BITMAPINFOHEADER *lpbi=(BITMAPINFOHEADER *)bmih;
lpbi->biSize=sizeof(BITMAPINFOHEADER);
lpbi->biWidth=256;
lpbi->biHeight=256;
lpbi->biPlanes=1;
lpbi->biBitCount=8;
lpbi->biCompression=0;
lpbi->biSizeImage=256*256;
lpbi->biXPelsPerMeter=0;
lpbi->biYPelsPerMeter=0;
lpbi->biClrUsed=0;
lpbi->biClrImportant=0;
RGBQUAD *lpQuad=((LPBITMAPINFO)bmih)->bmiColors;
for (int i=0;i<256;i++)
{
lpQuad[i].rgbRed =(unsigned char) i;
lpQuad[i].rgbGreen =(unsigned char) i;
lpQuad[i].rgbBlue =(unsigned char) i;
lpQuad[i].rgbReserved =0;
}
for(int i=0;i<256;i++)
{
for(int j=0;j<256;j++)
{
Pixels[i][j]=(unsigned char)j;
}
}
SetDIBitsToDevice(Canvas->Handle,0,0,256,256,0,0,0,256,Pixels,(LPBITMAPINFO)lpbi,DIB_RGB_COLORS);
}
AnsiString testfunc() { AnsiString test = "abc"; return test; } main() { AnsiString str; str = testfunc();; } というようにやった時strは元のtestがスコープ外に出てしまっているので 中身が不定になる可能性があるのでしょうか? それともかならずstrの中身はabcになるのでしょうか?
91 :
デフォルトの名無しさん :02/04/17 21:13
>>90 大丈夫。だと思う。
VCLのソースをみた訳じゃないからなんとも言えないけど、
常識的な文字列クラスなら普通大丈夫。
92 :
デフォルトの名無しさん :02/04/17 21:15
BC++B6でboost::regexをmakeした人いる? どうやればいいの?
94 :
デフォルトの名無しさん :02/04/17 21:17
>>85 行と列が逆なら簡単なんだけど、それじゃだめ?
97 :
デフォルトの名無しさん :02/04/18 00:14
( ゚д゚)σ)´Д`)
98 :
デフォルトの名無しさん :02/04/18 00:28
StringGridの固定セルをクリックできるようしたいんです。 できますか?
ファンクタ作って渡せばいいよ。 コンパイラ通してなから間違いがあるかも知れないけど…。 typedef std::vector<AnsiString> StrVec; class compare_by_nth : public std::binary_function<const StrVec&, const StrVec&, bool> { int i_; public: compare_by_nth(int i) : i_(i) {} bool operator<(const StrVec& a, const StrVec& b) const {return a[i_] < b[i_];} }; std::vector<StrVec> mat; // mat... std::sort(mat/begin(), mat.end(), compare_by_nth(1)); 詳しいことはSTLスレで聞いて。
100 :
デフォルトの名無しさん :02/04/18 13:33
>>99 これでは一次元のvectorのソートじゃない?質問は二次元のvectorだった
ような気がするけど。
101 :
デフォルトの名無しさん :02/04/18 15:34
まちがえた。operator()ね。
>>100 1次元だったらstd::sortだけでできるじゃん。AnsiStringって<で比較できたよね?自信ないけど。
103 :
デフォルトの名無しさん :02/04/18 20:45
>>102 なるほど。std::vector<StrVec>という所で既に二次元になっているわけか。
ファンクタ作る所なんか、C言語のqsortを彷彿とさせますね。
104 :
デフォルトの名無しさん :02/04/18 21:37
>>102 <で比較すると、単純なバイトレベルでの比較となるそうだからOKじゃない?
ロケールまで入れるとAnsiCompareを使用。ほとんど意味無し。
105 :
デフォルトの名無しさん :02/04/20 02:20
複数の画像をgifアニメのように 交互に表示するには、どうすれば良いでしょうか?
>>106 CppWebBrowserにNavigateメソッドでアニメーションGIFを読み込ませるw
色々方法があるから何とも言えん。
>>107 回答ありがとうございます。
そんなことが出来るなんて知りませんでした。
やっぱりbuilderって便利ですね。
>>109 (´д`).。oO(いや、アニメーションさせるためだけにIEコンポーネント使うのはメモリ消費量とかから見てどうかと・・・)
BCB6を先日買ってきたんですが、 アクションマネージャーの使い方がよくわかりません。 アクションマネージャーで作成したアクションの プロパティを変更したい場合、どうやって指定したらいいのだろう・・・。 その方法か、参考になるページがあれば教えてください。 よろしくお願いします。
BCB5で 出力される exe のファイル名を設定するには どうすればいいですか? .bpr をメモ帳で開いて <PROJECT value="ここ.exe"/> を書き換える以外の方法で、おながいします。
>112 プロジェクト名を変える。
>>110 に先日教えていただいた方法で試してみたのですが、
すでに指摘された欠点もありますし、
ファイル内にうまく組み込めなかったので、
何か他の方法を教えて頂けないでしょうか?
どうにかして、1秒おきに2枚の画像を
切り替えて表示する動作を実現したいのですが、
そのような方法をどなたかご教授ください。
>>114 2個のImageを重ねて置いて、1秒おきにVisibleをtrueにしたりfalseにしたりする。
>>115 あ、その方法がありましたか。
1つのオブジェクトをいじる事しか考えていませんでした。
どうもありがとうございました。
5から6へ移行してトラブルみたいなのはないですか?
118 :
デフォルトの名無しさん :02/04/24 04:07
ρ(´-`ρ) ★BCB★ (σ´ー`)σ
119 :
デフォルトの名無しさん :02/04/24 15:57
BDEのTQueyを使って、パラメータを使用してデータを登録する場合に, charのフィールドにNULLを登録するのはどうするの? 以下のやり方だと0が入るのですが TQuery *sql; (省略) sql->SQL->Text = "INSERT INTO TBL ( FLD) VALUES ( :DAT)" sql->Params->ParamByName( "DAT")->AsString = NULL; sql->ExecSQL();
AsString ではなく Clear(); では?
>>119
121 :
デフォルトの名無しさん :02/04/24 16:15
Clear(); だと項目"DAT"の型がわかりませんってエラーが出ますが・・・
>>121 「VALUES ( :DAT)」って、これでいいのかなぁ?
じゃあ ->DataType=ftString; を付けてみたら? なにせ問合せでパラメータは使うけど挿入でそんな事した事ないや。 BDE なら sql->Insert();して sql->Fields を使うのがなんと言っても簡単だし
>>123 おぉ、行けました。
Clear();だけなら型がわからんから指定しとけってことだったのかぁ
さんきゅです
>>123 言いえて妙。
"INSERT INTO TBL ( FLD) VALUES ( :DAT)" なんて
文字列で SQL文を書いてしまうと、
せっかくのコンパイラのチェック機能がスルーされてしまうし。
…ってことかな?
ヽ(;´Д`)ノ アレ ?
( ____ )
@== > = >==
126 :
デフォルトの名無しさん :02/04/24 22:35
builder4のコンソールウィザードでプログラムを実行すると、 MS-DOSプロンプトで結果が表示された後すぐにウィンドウが閉じてしまうのですが、 閉じないようにするにはどうしたらいいのでしょうか? MS-DOSのプロパティで「プログラム終了時にウィンドウを閉じる」のチェックは はずしてみましたが駄目でした。
127 :
デフォルトの名無しさん :02/04/24 22:53
>>126 #include <conio.h>
int main()
{
...
...
getch();
return 0;
}
128 :
デフォルトの名無しさん :02/04/24 22:56
>>126 #include <cstdlib>
using namespace std;
int main()
{
..
..
system("pause");
}
>>126 int main()
{
...
...
while(1)
;
}
あのの、パソナル版のアカデミ版ってないんですかぁ?
質問は元気よくageて言おう。 どれ、おいちゃんがageといてやろう。
133 :
デフォルトの名無しさん :02/04/25 03:24
BCB6ってば、更にサイズがでかくなってるね。 何も書かなくても450kbか。
134 :
デフォルトの名無しさん :02/04/25 14:11
>>130 >>127 ,128がいいと思う。129はブレークポイントを仕掛けておかないと
止まらなくなって(゚д゚)マズー。
>>134 >>126-130 漏れは、DOS窓を起動してから
ProjectHoge.exe [Enter] していますが、何か?
標準出力に何かを出力するアプリケーションなら、
リダイレクトしてファイルに採っておけばよいし。
>127-129 134 135 出来ました。 ありがとうございます。
137 :
Ð ë á t h ¹³ :02/04/27 04:11
インラインアセンブラで↓のようなコードを書くと、×の行でシンタックスエラーが出ます。 struct TValue { int Value1; int Value2; }; asm { MOV [ESI+.Value1],EAX //○ MOV [(TValue PTR ESI).Value1],EAX //× } STRUC〜ENDSで構造体を定義すると×の行もエラーは出ないのですが、 そうするとC++のほうで、その構造体が使えなくなります。 ○の方法だとオペランドサイズのチェックをしてくれないので どうしても×のようにチェックしてくれる方法を使いたいんですが、 何か方法(×の行のエラーの出ない書き方とか)はないでしょうか。
>>137 そういうふうにしたい場合は、H2ASH (使い方はTSM_UTIL.TXTに )で構造体を変換して
それをインクルートするのが普通じゃないかな
MOV [ESI+.Value1],EAX のような使い方だと、それはBCC32でコンパイルされると
MOV [ESI+0],EAX になってしまう
>>138 ありがとうございます。そんなのがあったんですね。
なぜかうちのBCBにはH2ASHが無い・・・CDにも入ってない・・・。
バージョン古いからかな。
> MOV [ESI+0],EAX になってしまう
そう、これで困ってました。即値になるだけで修飾はされないんですよね。
WEBでTSM_UTIL.TXT見るとH2ASHを使えば解決できそうですが、
無いものは仕方無いので、夜になったら(テレホなので(*´д`) )
フリーのBC++ダウンロードして入ってないか調べてみます。
>>139 ああそうか TASMを手に入れないとダメですね。
Σ(´Д`ズガーン 万策尽きたか・・・。
H2ASHと同じ事を手作業でやるという最終手段を使うしかないかな。
>>140 テレホタイムを浪費するところでした。ありがとうございます。
>>141 TASM単体に付いてくるということなんですね。
BCBのTASMと一緒に付けて欲しかったスBorlandサン。
ようするに、インラインアセンブラだと 構造体メンバがバイトなのか16bitなのかとかが反映されないから嫌なんでしょ? でもそれをインラインアセンブラで書こうというのが無理やりのように思う あとで間違えないようにという事なら assert で サイズチェックを入れておいたら?
144 :
デフォルトの名無しさん :02/04/27 16:17
メインメニューやツールバーで使うアイコンを作るのがめんど臭い。 フリーで落とせるペーヅ教えてくださレ」。
>>143 嫌なのは構造体のメンバのサイズが変わったときのコード修正でして
例えば
FLD DWord ptr [ESI+.Value] を、
FLD [(TValue PTR ESI).Value],
とできると、Valueがfloatからdoubleに変更になってもコードは変更しなくて済みますよね。
修飾してる場合は、全て修正しなくてはなりませんし、修正忘れが1つでもあるとバグになります。
こういう変更が時々あって、構造体もアセンブリコードもマグナムサイズなものですから、
楽でバグを出しにくい書き方のほうを使いたかったのです。
結局自前でstructと同じ構造のSTRUC〜ENDSを作ることになりそうですが。(*´д`)
146 :
デフォルトの名無しさん :02/04/28 05:08
>>90 過去ログ読んでて、気になって仕方がないんですが、
なんでOKなん?
char *型 "ABC"
AnsiString型 ローカル変数 testが動的確保した"ABC"
AnsiString型 戻り値が動的確保した"ABC"(testのコピー)
の3種類作られるけど、関数抜けた時点では最初の2つしか開放されないから?
そんなの実装次第じゃん、厨房な俺に教えてくれ〜
BCCとあまり関係なくてスマソ
>>145 うーん x86に限ってはBCCもそれほど目立って効率の悪いコードを
出す訳じゃないのと、特に浮動小数点コードを使うとその演算に隠
れてしまうので、その手の構造体の絡んだコードをアセンブラで書
こうとした事はありません
まあ自前で struct 変換ルーチンを作るのが簡単かも
>>146 実装次第だから、その実装をそれでOKなように作っているという事では?
int testfunc()
{
int test = 0xabcd;
return test;
}
なら 大丈夫なので、それと同じように使えるように AnsiStringクラスを作ったという事でしょう
それから、文字列クラスはもう一つ作られている筈です。
それは
>>90 のtestfuncの返値の隠れた文字列クラスです。
このコンストラクタは関数の呼び出し直前に呼ばれて、関数が帰って代入動作をすると消えます。
149 :
デフォルトの名無しさん :02/04/28 18:54
制作したプログラムの動作がいまいち遅いのですが 実行中、同時に音楽や動画を再生しても途切れなく再生できます。 自作のプログラムが固有するCPUの割合は調整できないのでしょうか?
>>149 動作が遅いといっても、他に何も同時実行させてなければ、CPUをフルに使えるはずだが。
他のプロセスやスレッドと同時実行させてて、そっちよりも優先的にCPUを使いたいってことなら、
SetThreadPriority や SetPriorityClass を使えばよろし。
>>148 解説サンキュー
必ず基本型と同じ感覚で使えるように作ってるってわけですか
(自分で作るとき、そこまで考慮してないけどなぁ)
C++の文法は大体わかったつもりだけど、このへんの暗黙のルールとか
ライブラリとかは、まだまだ理解不足だねぇ
頭の中はC言語とアセンブラのまんま〜
>それから、文字列クラスはもう一つ作られている筈です。
>それは
>>90 のtestfuncの返値の隠れた文字列クラスです。
>>146 の3つ目がそのつもりだったんだけど書き方が悪かったね
152 :
デフォルトの名無しさん :02/04/29 16:35
ヽ(゚∀゚)ノ
153 :
デフォルトの名無しさん :02/04/30 15:19
教えていただきたいことがあります。 EDITコンポを2つ配置し"A"を名前"B"を読み仮名とします。 ユーザーが"A"に名前を漢字で入力すると"B"に読みが半角カナで仮表示 (ユーザーが修正可能)されるというものを作りたいのですが、どのよう にしたら良いかわかりません。 "B"に何か別なコンポーネントを使えばよいのでしょうか? アドバイスやここを見れと言うのでもかまわないのでご教示 お願いいたします。
155 :
デフォルトの名無しさん :02/04/30 20:46
C++Builder初心者です。お手数ですが教えてください。 図1)のように、画面を分割したいのですが、縦分割は簡単にできたのですが、B領域とC領域の横分割がうまくできません。 TSplitterにて、AとBCの分割は、Align=alLeft、Left=分割位置、にて簡単にOKだったのですが、 BとCの分割を行おうとして、Align=alTop、Top=分割位置とすると図2のようになってしまいます。 Align=alTopを指定すると、Topの値は無視されるようです。 図1) AAAAAAAA|BBBBBBBBB AAAAAAAA|BBBBBBBBB AAAAAAAA|BBBBBBBBB AAAAAAAA|------------ AAAAAAAA|CCCCCCCCC AAAAAAAA|CCCCCCCCC AAAAAAAA|CCCCCCCCC 図2) BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBB ----------------------- AAAAAAAA|CCCCCCCCC AAAAAAAA|CCCCCCCCC AAAAAAAA|CCCCCCCCC AAAAAAAA|CCCCCCCCC 画面を縦に分割して、その分割した右側を横に分割する方法をアドバイスお願いします。
BCのところにTPanel乗せてから分けるってのは駄目なの?
>>156 ありがとうございます。できました。
TPanelにTSplitterを入れることができるのですね。
VCの考え方と全然違うのでとてもとまどってしまいました。
MFCの、CSplitterWndに相当するものを必死で探してしまいました(汗)。
>155 こないだの漏れと同じだ(笑) ・AをAlign=alLeftで作る ・Aの右にスピリッタ入れる ・BC領域にあたる部分にパネルを張る ・Bをalign=alTopでパネル上に作る ・Bの下、パネル上にスピリッタを入れる ・Cをalign=alClientで作る パネルはBevelOuter=bvNoneにすると吉
始めまして質問させてください。 TEditを並べてVK_RETURNで次のEDITへ SetFocusしてます。 そのとき、ポーンとBEEP音がなりうるさいのですが なんとかならないでしょうか? 一行テキストですから本来入力できない リターンがくると 警告音がなるには当然ですが・・・
160 :
デフォルトの名無しさん :02/05/03 11:41
何でC++Builderの自動保管機能はあんなに使いにくいのですか? いちいち読み込んでいて、埒があきません
161 :
デフォルトの名無しさん :02/05/03 11:50
私もそう思うので使わないようにしました。
162 :
デフォルトの名無しさん :02/05/03 12:01
Builder 6 で SOCK_RAW ソケットをオープンして setsockopt で IP_HDRINCL を有効にして生ソケットを扱ってみたのですが、 sendto で WSAError の 10049 が発生します。 VC6 では問題なく実行できました。 何か原因考えられないですか?
>>159 試してないけどOnKeyDownで
if(Key == VK_RETURN)
Key = NULL;
>>159 Delphiの場合、そういう場合はAbort例外を投げるんだけど
if Key=#13 then begin
Edit2.SetFocus;
Abort;
end;
Builderでも同じじゃないかな?
>>164 OnKeyPressでは駄目かな。とりあえずどちらかで出来たよ。
167 :
デフォルトの名無しさん :02/05/03 17:46
OnKeyPress で Key = NULL;
ありがとうございます OnKeyPressでAbortで出来ました
やっぱ、あの音要らないって人多いね。俺も消してる。
170 :
デフォルトの名無しさん :02/05/03 23:36
unable to open file SYSUTILS.RES と言われるのですが、どうしたらいいのでしょうか? windows.h はインクルードしていますが、VCL関連のヘッダは インクルードしていません。
171 :
デフォルトの名無しさん :02/05/04 00:08
>171 あります。 \CBuilder\Lib\Objフォルダにあります。 プロジェクトオプションのライブラリパスでも通っています。 ファイル名は Sysutils.res と小文字ですが、関係無いですよね・・・。
>>172 エラーの出た行でどんなことしてますか?
コンパイラできました。 *.makファイルをいじったのがいけなかったようです。
ありゃ
176 :
デフォルトの名無しさん :02/05/04 00:53
(´-`)。o ○ (すげーな、オイ。コンパイラ作ったのかよ)
>176 つまんねーよ、カス
C++Builderさっぱり分かりません。
180 :
デフォルトの名無しさん :02/05/04 01:52
みなさんC++Builderの操作方法ってどうやって 覚えたんですか?
自然に。
マニュアル
>>180 はC言語スレ行っちゃたけど、タイミング悪すぎ。
NULL議論の真っ最中に・・・憐れ180
あ、1こレスもらってる
186 :
顔も名前も出さずに毎月100万円 :02/05/04 03:10
Future-Web(フューチャーウェブ)登場
なんと10,000円単位の収入
●10,000円単位の高収入
1件につき最大10、000円の高額収入。月収100万円以上も可能。
●画期的なビジネス!
インターネットを利用したこれまでにない斬新で画期的なビジネスです。
●誰でも出来ます!
インターネットが出来る環境の方なら誰でも参加可能です。
●専門的な知識は一切不要!
ビジネスに必要なツールはすべて当社で用意いたします。また、サポ
ートも万全です。
●詳細は今すぐHPをご覧ください。
http://www.future-web.tv/7823/
Bitmapを読み込んで、その画像上に新しく図形などを描き込み、その画像を セーブする方法で悩んでいます。Form上のCanvasプロパティを使って、読み込んだ Bitmapに図形を書いたり、消したりすることができることがわかったのですが、 それでは、図形がBitmapに書き込まれたことにはならないので、Imageコンポーネント にあるBitmapをセーブしてもNGですよね。 何か良い解決策はないでしょうか? 一度、書き込んだ図形の消去も可能にしたいのですが、よくやり方がわかりません。 どなたか助けてー
188 :
デフォルトの名無しさん :02/05/05 02:21
>>187 FormではなくImageのCanvasつまり Image1->Canvasに描くと
図形をBitmapに描いた事になる
。・゚・(ノД`)・゚・。ウワーン Windows 98 SE + C++Builder5.5 にて、 他人(誰?)が書いたソースを使ってビルドすることを企てております。 どうしても struct _timeb と _ftime() が定義されていないという理由で コンパイルが失敗します。 いちおう、 #include <sys\types.h> #include <sys\timeb.h> こんなふうにヘッダファイルをインクルードしてあるんですけれど、 ダメなんです。 #define _timeb timeb とか、勝手にやっちゃえばいいんでしょうか? アヒャー(・∀・;)
192 :
デフォルトの名無しさん :02/05/08 02:53
燃えagaーれー 燃えagaーれー 燃えagaーれー
バンダムー
天功ー
シカトー
>>191 よおーし、おじさん (;´д`).。oO( やっちゃうゾー? )
(´-`).。oO( もとのソースがLinux向けだったらしいが不詳 )
環境書き忘れです。 BCB6です。
>199 作者のサイトに >C++Builder に関する質問は、回答できない(する能力がない)ので送らないでください。 と書かれていたので 使ったことある人いるかな、と思いここで聞いたのですが。
201 :
デフォルトの名無しさん :02/05/09 00:52
BCB4 使ってるんですけどコンポーネントパレットのSampleページにある TCSpinEditって、なんかおかしいような気がします。 数字入れるものとして使いたいのに、エディットの中でEnter押すと、 なぜか改行が入力されてしまいます。数字以外も入力できるし。 スピンつきの数値入力にはなにか別のものを使うんでしょうか?
>>197 BCB6持ってないから試せないけど、
unit TextDlgs;
: ←ここの、{$ではじまる行を全て削除してみるとか
interface
>>201 editとspin組み合わせてもそうなる、使用じゃないの?
204 :
デフォルトの名無しさん :02/05/09 01:12
>>197 TTextOpenDialog で起きるの?
>>197 Del6で試したけどエラー出る・・・。
>>202 は関係なかったみたい。ゴミン無視して。
>204 はい、そうです〜。 >205 自分もDel6Personalいれて試してみました。 エラー出ますね。 ってことで一応作者の人にメールしておきました。 返答ありがとうでした。
FUMIKAさんが男なんて詐欺だ〜
208 :
Delフサギコ ◆zE1iiRdQ :02/05/09 02:45
∧,,∧∩ /騙されて ミ*゚Д゚*ミ < 一歩一歩 (ミ ミ \大人になっていくのです 〜ミ ,,, ミ し' `J 最近は電車の部品の名前では... なんとなく、.NET対抗age月間
Indy使ってるかたいらっしゃいますかぁー?
http://www.nevrona.com/Indy/download80.html に書かれている
Please note that the install does work properly
with C++Builder 4, 5 and it will fail to generate
the compiler binaries on drives (E: and N:).
This is a failure in the installation ONLY and not in Indy itself)
という文章は、E又はNドライブにIndyを
インストールしちゃだめでっせ。という解釈で
よろしかでしょか?
当方、BCB5 Pro(Update1)でし。
コンパイラの出力先がE:かN:だと駄目。
らじゃーっす。 なんで、そんな制約があるんでしょうね。 TCppWebBrowserを越える使い勝手があることを祈ってまする>Indy
制約というか、バグでしょう。 なんでそんなバグかは非常に興味がある。
コンパイラ側には制約/バグは無いようだが。 Indy のインストーラがなんか変なことやっているのかな?
>>211 IndyとTCppWebBrowser?
比較対象がおかしいぞ。
215 :
デフォルトの名無しさん :02/05/09 06:21
とりあえず、TCSpinEditはくそだから使わないように。
>>203 ,
>>215 ありがとうございます。
TCSpinEditを使わないとすると、
代替のブツはどのような方向性で作る(探す?)のがいいんでしょうか?
最悪、APIで組み合わせることになるとか?
ハーイ ∧,,∧∩ /TEditと ミ*゚Д゚*ミ < TUpDownをセットで (ミ ミ \ お使いになるのが 〜ミ ,,, ミ よいと思います し' `J TUpDown.Associateがあるぞよ ちょっとデザインが違うけどね
>>217 では、まずそいつらでいってみます。
ありがとうございました。
219 :
デフォルトの名無しさん :02/05/09 10:44
つまらない質問ですが、 オブジェクトや実データにつけるTとかFってどういう意味でしょう? TはオブジェクトのTかなぁと思ってみたりもするのですが…。
>>219 オブジェクトのTって…強引すぎ(w
型(Type)のTな。
TurboPascal時代からの慣習だYO!
メンバのFはなんだっけ…
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡< フィーは♪フィー♪ルドの♪フィー♪ 'ミ つ旦)~~ \___________ ⊂ミ",, ,,ミ つ
わー、ありがとうございます。TypeのTとFieldのFでしたか・・。 全然見当違いでした。知ってどうなるわけでもないけど結構気になってたので 聞いて良かったです。ありがとです。
>>214 ぐはっ、両者を比較するのは間違ってますか・・・・
やりたいことは、HTTPクライアントを作って
特定のURLを巡回し、指定されたHTMLファイルを
取得できるかどうかを調べる、簡易WEBサーバ監視ツールを
作りたいんですが・・・・・
TCppWebBrowserを使ってみたんですが、どうも思って
いた物と違ったようなので、winInet関連にもはしりましたが
Indyの中にもHTTPクライアントとして使えるような
コンポーネントがあると思っていたんですが・・・・
とりあえず、これからインストールしてみます。
>>223 それならIndyでOK
223自身も言ってるようにTCppWebBrowserを使うのが変
> 224
ありがとうです。
いま、インストールしてとりあえずサンプル動かしてみたんですが
winInetなんて使ってられないくらい便利ですね。
が、HTTPのステータスコード(TIdHTTP->ResponseCode:404 Not Foundとかのやつ)が
おかしな事になっています。
たとえば、
http://www.2ch.net/ http://www.2ch.co.jp/ を巡回すると、1つ目の方は当然のごとく200(OK)を返しますが、
2つ目の方でも200を返します。
本来、2ch.co.jpなんてのは実在しないんだから
NULLか0あたりを返してくれることを期待していたんですが・・・
何かご存じの方いませんか?
TCppWebBrowserってCGIやるとき使うの?
>>223 男ならTClientSocket・・・は使いにくいのでソケットAPI叩こう!
>>227 いや、WinINETAPIで十分だろう
230 :
Delフサギコ ◆zE1iiRdQ :02/05/10 16:31
231 :
デフォルトの名無しさん :02/05/10 17:06
void __fastcall TForm1::Button1Click(TObject *Sender) { // Memo1->SetFocus(); Memo1->SelectAll(); } SetFocusしないと SelectALlが効かないんですが、これってそういうもの? それから Memo1のReadonly=true;にしてあると CutToClipbordも効きません。 W2000でBCB5です。
∧,,∧ ミσ゚Д゚ミσ HideSelection=False? ReadOnlyなんだから、Cutはできないのは普通じゃないかな?
>>232 なるほど、そう見えてないだけで実際には動いてたんですね。
ReadOnlyでCutToClipbordが効かないから判りませんでした
>>228 これって対応Windowsってどれどれ?
>>234 そりゃア IE3 を動かせる Windowsでしょう。
(;´д`).。oO( ただし 3.1 を除く )
WinINET は IE が入ってる事が条件。 例によっての話、IEのバージョンによってバグの入り方は違う。 何でバージョンによってDLL名変えないのかねえ
237 :
デフォルトの名無しさん :02/05/11 02:08
BCBでDirectX 8を普通に使う方法は無いものですか
238 :
デフォルトの名無しさん :02/05/11 07:52
複数のコンポーネントを全部1つのパッケージに入れると、 どれか1つ使った場合も全部exeにくっついちゃうの?
スレタイトルに+って使えないんじゃなかった?
>>238 リンカが取り除けるものは取り除くけど
使っているものはもちろん
使われるかどうか判らないものはリンクされる。
使っているもの
それぞれのunitの nitialization finalization
使っているかどうか判らないもの
publishedな部分
リソース
>240 >238さんじゃ無いけど。 ってことは、出来るだけパッケージ分けた方がいい?
>>241 え? そんな事は言ってないよ。
Delphiで言えばusesしなければ、パッケージのほかのモジュールは何の関係もない
のは常識として、追加の話をしただけで
>242 あー、すまんっす。 勘違いしてた。
>>237 implibでDLLからlibファイルこさえてSDKのヘッダファイルincludeすればいいだけだと思うが。
先日BCB6を買ってきました。 とりあえず、チュートリアル通りにエディタを作って みたのですが、そこで少し疑問がでたので質問します。 この手のサンプルを見てると 「新規作成」を選ぶと画面をクリアするように なってますが、エディタって大抵新しいウィンドウ(フォーム)を 開きますよね。 でも、その方法がわからないのです。 ご教授、よろしくお願いします。
>>245 TForm1.CreateModal();だったっけ?
>246 CreateModalというメソッド無いみたいなんですが・・・。 一応ShowModalかな?と思い試してみたんですが 「表示されているウィンドウをモーダルにすることはできません」 と言われてしまいます。
CreateNew
TForm *form = new TForm1(this); form->ShowModal(); delete form;
>>245 >「新規作成」を選ぶと画面をクリアするように
>なってますが、エディタって大抵新しいウィンドウ(フォーム)を
>開きますよね。
メモ帳やワードパッドはそんなことないよ。と言ってみるテスト。
VCLにはメインフォームというものがあって、ちょっとやっかいな構造になっております。
新しいフォームを開くのはいくらでも出来るんですが、
最初に開いたフォーム(メインフォームと呼ばれる)を閉じると、
後で開いたフォームも全部閉じてしまうです。
・・・続き(解決編)聞きたい?
>>244 確か、8になってから
その方法でも使えなくなったってどこかで見たな。
252 :
デフォルトの名無しさん :02/05/11 21:18
D3DXが使えないらスィ
>250 うあ、そうだったんですか。 MDIアプリにした方がスマートなのかな・・・。 続き、一応聞きたいです。 理解出来るかはわかりませんが(苦笑
ヽ l // ――― ★ ――― // | \ / /. | \ / | ワガママ 言うな! -  ̄ ̄ ― / / ヽ ∧_∧_ | ( ´Д`)  ̄"⌒ヽ | / ) ヽ' / 、 `、_ γ --‐ ' λ. ; ! f 、 ヾ / ) ! ノヽ、._, '`"/ _,. ‐'" | j ヽ 〈_,,,ノ" ヽ ! ヽ 冫 y' .ノ `、 \ | / / \、ヾ | | イ-、__ l.__| }_ l _.| .〔 l l 〔___! '--'
>>253 エディタのフォームとは別にダミーのメインフォームを作ります。
これでエディタフォームは開いたり閉じたりしても大丈夫ですが、問題がいくつかあります。
1.メインフォームが邪魔
・・・画面外に追いやって見えなくするとか API を使って非表示にするとか。
2.個々のエディタフォームがタスクバーに現れない
・・・SetParentで親をNULLにするとか、WS_EX_APPWINDOWを付けるとか。
3.エディタフォームを全部閉じてもアプリケーションが終了しない(メインフォームが残ってるので)
・・・エディタフォームが全部閉じられたらメインフォームも閉じるよーにします。別にメモリに常駐しててもいいけど。
別なアプローチとしては、新しいフォームを開く代わりに自分の exe をもう1個起動させることも出来ます。これはカンタン楽チン。不便な面もあるけど。
>>256 モナーむこう側を向いてる方が絵的にいいなー。
>257 なるほど・・・。 何となく理解しました。 例えばタスクトレイに入れておく ダミーのメインフォームを作って そこから>249さんが書いてくださった方法で 開いていけばいいと。 頑張ってみます〜。
>>245 タブにしたらどう?
TPageControl に挿入するか TTabControlにして 作成したフォームを一つだけ有効にするか
とりあえず>259に書いた方法でやってみました。 ウィンドウは開けるんですが、 一番最後に開いたウィンドウにしかフォーカス当たらない(苦笑。 ってことで、道は遠そうです。 >260 それもいいですね。 そうしてみようかな・・・。
>>261 ShowModal は、モーダルダイアログと呼ばれるやつです。他のフォームが全部使えなくなる。
ただの Show なら大丈夫。(でもすぐ delete しないように)
>262 おおっ、できました〜。 やっぱり自分が思ったとおりに動くと嬉しいですね。 これからも頑張ります〜。
264 :
デフォルトの名無しさん :02/05/13 15:57
MaskEditで例外処理が行われた時に出てくるメッセージを、 英語版Windws環境上で、英語メッセージが出てくるようにするには、 どうしたら良いでしょうか?
265 :
デフォルトの名無しさん :02/05/13 16:23
TTableを元にして、QuickReportを使用しています。 分レビューは正常なのですが、実際に印刷すると C A B C D となってしまいます。 実際にはデータは、A,B,C,Dしかないのですが。。。 BCB5 QR Ver3.0 です。m(_ _"m)ペコリ
>>264 データを「リソース」にしておけばよかった…かな。
267 :
デフォルトの名無しさん :02/05/13 22:58
>>266 ありがと、試してみます。
難しそう・・・
268 :
デフォルトの名無しさん :02/05/14 00:06
C++ は長いことやってたんですが、VCLを使ったWinアプリ開発は初めてです。 質問があります。 自分で new をつかって作成したオブジェクトでも、delete しなくていい(しちゃいけない?) ときってありますよね? そこの線引きがよくわかりません。 たとえばImageListにnewでつくったBitmapを追加したとき、 その追加メソッドの呼び出しに渡したポインタはdeleteしてもいいのか、とかです。 なにかわかりやすい指標のようなものはないでしょうか? それとも、なんか勘違いしてます?
わかりやすい指標→OwnerプロパティがあるVCLオブジェクトかどうか かな?
>>268 基本的に自分で作った物はFree。
TListのデストラクタをオーバーライドして解放ルーチンを埋め込んだり。
>269,270 はいーわかりましたー。 もいっこ、確認ですが、 Owner を設定して new で作ったモノは delete してもいい?しちゃだめ?
(゚д゚) してよし! ~( )− / >
問題ないと思ふ
ダブルで即答だ、ぅわぁい。 これでVCLとは友達だ。
> もいっこ、確認ですが、 Owner を設定して new で作ったモノは delete > してもいい?しちゃだめ? ∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ 彡 < あえて言っておこう (ミ ミ) \_______ ミ ミ ∪ ∪ ∧,,∧ サッ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ミ < しなくてもいいんだ。 ⊂ Om \_______ ミ、,, ミ, .しヾJ してもいいけどネ
276 :
デフォルトの名無しさん :02/05/15 23:00
スレッドが動いてるときに、 xボタンでソフトを終了されると落ちるんですけど、 どうしたらいいでしょうか? XXX->FreeOnTerminate = false; XXX->Resume(); で、一個スレッド作ってから、そのスレッド内で YYY->FreeOnTerminate = true; YYY->Resume(); bool bn=YYY->WaitFor(); と、もう一個スレッドを動かしてます。
そのコードだけでは・・・。 アプリが終了したときのXXXとYYYの終わらせ方に問題があるのかも。
278 :
デフォルトの名無しさん :02/05/16 13:32
アプリ終了時、どんな風に処理すればいいのでしょうか? XXXは勝手に開放されるのかな〜と思いますが YYYはやっぱり開放しなきゃいけませんよね? アプリ終了時何もして無かったです。
逆じゃないの? XXXは明示的に開放が必要だよね。
280 :
デフォルトの名無しさん :02/05/16 14:32
間違ってました。 XXX->FreeOnTerminate = true; XXX->Resume(); で、一個スレッド作ってから、そのスレッド内で YYY->FreeOnTerminate = false; YYY->Resume(); bool bn=YYY->WaitFor(); と、もう一個スレッドを動かしてます。 でした。 スレッドが動いてる最中にユーザーにソフトを終了された場合 どのようにスレッドを終了すればいいのでしょうか?
そのスレッドのTerminate()呼ぶ。
282 :
デフォルトの名無しさん :02/05/16 20:33
スレッドが現在実行中か、deleteで開放された後か、 調べる方法ってないですか?
283 :
デフォルトの名無しさん :02/05/16 20:33
えーと、 C++ Builder 5.5 を使ってるんです。で、 プリプロセッサの出力結果とかは、 IDE のほうのオプション指定でテキストファイルに出力 できるのでしょうか?
>>284 CPP32.exe を単独で使えばいいんじゃないの
>>285 てへっ
く( ´D`)
そしたら、名句ファイル吐かしてからやってみますです。
(´∀`) ありありがとう☆
C++Builder5.5?
___ __ / ヽ \  ̄\ \ ̄\ / ̄ ̄ ̄ ||\ ___| ( )|_ \ < ・・・・ ||\|| | | V ̄V| | _|| ̄ \___ || || ̄ | | ̄ ̄ ̄| | || .|| U U .||
289 :
デフォルトの名無しさん :02/05/21 11:44
从/ __∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /( ´Д`)V < はッ!先生、ちがっ・・・!、2日間も寝たりなんかしてません! __ / /| u゚_/ ) \________________________ \ ( ( ̄ ̄⊆_ノ ̄\ ||\ `ー⊃ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
Delphi相談室とC++相談室あるし、閑古鳥がなくのもしゃーない
291 :
デフォルトの名無しさん :02/05/22 13:02
すんませんが教えてください。 メニューをIEみたくドッキング可能にしたいのですが、方法がわかりません。 TControlBarを置いて、TMainMenuを作ったら、単にメニューがTControlBarの上に表示されてしまいました。 そもそもTMainMenuを使ってドッキング可能なメニューは作成できますか。
>>291 TMainMenu系は APIのCreateMenu InsertMenuのラッパです
windows標準のメニュー バーはオーバーラップ ウィンドウかポップアップ ウィンドウにしか付加できません
パーソナルでもやっていけますか。。?
DBとかWebサービスやらないならいける。
>292 ということは、TPanelにTSpeedButtonを張ってCaptionに、ファイル(&F)とか設定して 押された場合は自前でポップアップメニューを表示する・・・みたいにしなければならないと いうことなのでしょうか。
>296 ありがとうございます。何とかできそうです。 なにせC++Builder使い始めてまだ3日なもので・・・(汗
メニューに「Ctrl + C」などのキーを割り当てるのってどうするのでしょうか? Alt + Cならば、Nameプロパティに&Cってやればいいのは知っているのですが・・・
TShortCut ヘルプに烈しく載ってる気が…
∧,,∧ ミσ゚Д゚ミσTMenuItem.ShortCutプロパテ
>>290 STLスレッドとWin32API 質問箱もあるからねえ。
302 :
デフォルトの名無しさん :02/05/24 23:28
今日から C++ Builder 使い始めようと思ってスレを検索したが、ここのスレタイに ++ がないから偽者にひっかかっちゃったよ。
303 :
デフォルトの名無しさん :02/05/25 22:14
>>303 リンカのオプションでスタックサイズ増やしてみれば?
スタックサイズはデフォルトで1MByteですけど足りないですか? アプリケーションウイザードで作成してほんのちょっとのコードを付け足しただけなんですが・・・
END_MESSAGE_MAP(TForm) ←ここのTFormを自作フォームの名前にしてるとか
>>306 TMainForm になってます。
class TMainForm : public TForm
{省略} です。
これは、自分が名前を付けたのではなく、アプリケーションウイザードが勝手に作成したのですが。
>>306 動きました。ありがとうございます。
END_MESSAGE_MAP(TMainForm)
を
END_MESSAGE_MAP(TForm)
に修正したら一発で動きました。
ヘルプを読んだら、 #define END_MESSAGE_MAP(base) default: \ base::Dispatch(Message);\ break; \ } \ } base パラメータは,これらのマクロを使ってメッセージマップが宣言されるコントロールの基本クラスを指定します。 とちゃんと書いてありました。 これだけで3時間くらい悩んでしまった。 どうもありがとうございます。
うぃ
( ´・∀・`) 閑散としたこのスレも役に立っております
教えてください。 TlistBoxで Item->Add (XXXXX)でリストを増やしていき 枠外に出たとき、スクロールバーは出ますが追加した行は そのまま枠外に出てしまいます。もちろん手動スクロールすれば 見れますが自動的に今追加した行が(行末)が出るように出来ないでしょうか?
313 :
デフォルトの名無しさん :02/05/28 12:30
>>312 追加されたのが選択されてもいいなら
int Index = ListBox1->Items->Add("あいうえお");
ListBox1->ItemIndex = Index;
選択させずにスクロールさせる方法はちょっとわからないっす
>>312 SetTopIndex
>>313 あなた次第でいかようにも しかし初心者ならDelphiをお勧めします
おっと,単に TopIndex プロパティだな
そんなプロパティがあったとは・・・。 雑魚い方法を晒してしまい申し訳ないっす。
ありがとうございます。うまくできました。 最近C++Builderを使い始めてよくわかりませんでした。 良いスレですね。昔からBORLAND派には悪人はいないと ありがとうございます。
>>313 とりあえず、MSのサイトからPlatformSDKを落としてきてください。
で、sampleの"Generic"をいじってください。
321 :
volvic :02/05/28 19:44
動作環境の質問なんですが、クルソーで動かすのは不可能なんでしょうか? インスコした途端、凍りまくりです。メモリは256でXPなんですが、 どうにかして簡単なプログラムなら回せるようになりませんか? マジレスおながいします。
322 :
デフォルトの名無しさん :02/05/28 20:33
TBitmapを使おうとすると(builder6) [C++ エラー] Unit1.cpp(16): E2015 'TBitmap' と 'Windows::TBitmap' の区別が曖昧 って言われるんだけどどうしたらいいか知らない?
Graphics::TBitmap?
すいません、少々質問をさせていただきたいのですが、よろしいでしょうか。
ボーランド本家 (
http://www.borland.com ) からBorland C++ Compiler 5.5をダウンロードしようとすると、
なぜか99%で切断されてしまいます。
これを最後までダウンロードするには、どうしたらいいのでしょうか?
・・・やはり付録ですか?
雑誌の付録からインストールしろという事ですか?
アナログ回線で30分もかけた労力と電気代を返せ!ヽ(`Д´)ノ ウワアアン
>>323 おおサンキュー
ユニット名が名前空間になってたんだね
知らなかった
>>324 今ダウンロードしてみたけど普通にできたよ。
30分かけてもう一度・・・
>>321 それはボーランドに相談した方がいいでしょう
>>324 iriaとかダウンロードツールを使ってみるとか、プロキシを使うとか
>>326 さん
>>327 さん
iriaを使ってダウンロードしていたのが原因でしょうか?
う〜ん、串を使ってもう一度試してみる事にします。
ありがとうございました。
329 :
デフォルトの名無しさん :02/05/28 22:03
Canvas->Font->Style += (TFontStyles() << fsBold); とかやった後で ::DrawText(...)// WIN32API でやってもスタイルに反映されません。 Delphi6でできたのに、C++Builder6では別の手順が あるんですか?
Canvas->Font->Style = Canvas->Font->Style << fsBold; ならどう?
331 :
デフォルトの名無しさん :02/05/28 22:10
>>330 やってみます。自宅に環境がないので明日確認します。
332 :
デフォルトの名無しさん :02/05/28 22:12
>>329 Canvas->Font->Style = Canvas->Font->Style << fsBold;
かぶっとるね
アリガトウゴザイマシタ>327
335 :
デフォルトの名無しさん :02/05/28 22:22
このスレで1000を取った奴はとても縁起が悪く、とんでもない目に遭います・・・
BCB6でboost::regexを使いたいんだけど、上手くmakeできないんです。 コンソールでは大丈夫でも、IDEからGUIアプリを作ろうとすると、AccessViolationで落ちちゃう。 BCB5では問題なかったんだけど、同じ症状の人、解決した人、いない?
338 :
デフォルトの名無しさん :02/05/29 06:44
でも、1.28なんですよ(bcb6.makもある。)
339 :
デフォルトの名無しさん :02/05/29 08:15
VCと違ってBCBにはプロファイリングのためのツールがついてませんが、 どこかにいいのがあったら紹介してほしいです。
>>339 プロファイラってどんな事が出来るの?
BCBのCodeGuardは コンパイル時に余分なコードが付くから実行そのものが遅くなってしまうんだよね
341 :
デフォルトの名無しさん :02/05/29 08:48
>>338 1.28は、うちでも動かなかったので、1.27を使ってます。(BCB5でも駄目だった様な)
BCB6+1.27+bcbdev.comのメイクファイルなら動きました。
342 :
デフォルトの名無しさん :02/05/29 10:34
はじめまして。 初心者です。 C Builderとは関係ないかもしれませんが、 RGBからHSLへの変換方法を教えてください。 よろしくお願いいたします。
344 :
デフォルトの名無しさん :02/05/29 11:10
デュアルCPUでC++ Builder使ってる人いますか?
やっぱりコンパイル速度も速くなるものでしょうか?
>>340 どの関数がどのくらい時間くっているか調べる奴じゃない?
346 :
デフォルトの名無しさん :02/05/29 12:02
>>346 早速のレス、ありがとうございました。
複数ファイルのコンパイルを並列で処理してくれるのかな
と期待していたのですが、そうならないんですね。残念。
343,345さん有益な情報ありがとうございます
350 :
デフォルトの名無しさん :02/05/29 15:12
C++Builder6でモデムの着信を検知したいんだけど どうしたらいいの?
>>350 ポートを占有して RING 文字列を受け取ったら?
352 :
デフォルトの名無しさん :02/05/29 18:06
ふと思ったのですが、みなさん、BuilderでADO / ADOX使うとき どうしてます? 6になってから、ADOは標準でコンポーネントが 付いてくるけど、ADOXは依然、自前で何とかしないといけないですよね。 私はタイプライブラリの取り込みで生成されるTCOM_XXXを使っています。
353 :
デフォルトの名無しさん :02/05/29 18:53
>>351 すみません、ポートの占有はどのようにすればいいのでしょうか?
TAPIを使えば出来ますか?
354 :
デフォルトの名無しさん :02/05/29 21:08
329です。 やはり ×Canvas->Font->Style += (TFontStyles() << fsBold); // ダメ ○Canvas->Font->Style = Canvas->Font->Style << fsBold; // オッケー でした。ありがとうございました。 +=演算子の定義がヘンなんですかね。
>>354 それ、Canvas->Font->Style の get メソッドで帰ってきた戻り値である一時オブジェクトを変更するだけだから、本体に影響を与えないの。
・・・と理解してたのだけど今まで。よく考えると妙な気も。調べてみやう・・・
>>341 どうもありがとう。結局1.27+BCBDEVで無事動きました。
確かに、1.28はBCB5でもだめだった気がします(1.26に戻して使ってました)
時間があったら頑張って原因究明してみます。
>>337 もありがとう。
色々試してみた。355 の説で合ってるっぽい。
359 :
デフォルトの名無しさん :02/05/30 10:41
レジストリからダイヤルアップ接続名の一覧を取得したいのですが Windows2000ではダイヤルアップ情報はレジストリのどこに記述 されているのでしょうか?
360 :
デフォルトの名無しさん :02/05/30 11:03
>>361 お答え有難う御座います。
早速RasEnumEntriesを調べてみます。
>> 361 RasEnumEntriesを使用して、ダイヤルアップ一覧を取得することに 成功しました。 有難う御座いました。
366 :
デフォルトの名無しさん :02/05/30 20:40
this->InsertComponent(child); で、コンポーネント内にコンポーネントを持たせると、 プログラムの終了時にEACCESS vaiolationが発生します。 解決方法は簡単で、InsertComponentを使わないことです。 (Parentを設定して、終了時にデストラクタがちゃんと 呼ばれさえすればいいみたい) これはバグ? 注) このときは、TV番組録画予約表のようにずらーっと時刻が並んだ表の コンポーネントで親はTPanel、子はTDateTimePickerです。
367 :
デフォルトの名無しさん :02/05/30 23:27
俺BCB 5で作れるアプリは、まだテキストエディタだけ。 とりあえず、テキストエディタチュートリアルを35分以下で作れるように練習した(ヘルプファイルを除く)。 次は海洋生物データベースのチュートリアルだな。
> 海洋生物データベース あったなこれ(w
369 :
デフォルトの名無しさん :02/05/31 14:27
あるコンポーネントから別のコンポーネントを作成し、作成元のコンポーネント 名をOwner->Name のようにして取得しようとしたのですが、コンパイルは出来る ものの、実行するとエラーが出ます。なにがいけないのでしょうか?
作成元のコンポーネントがオーナーとは限らない・・・ コンストラクタの AOwner 引数に放り込んだものがオーナーになります。
Builder3を使っているのですが、 STLでsortは大丈夫なのにstable_sortを使うと必ずアクセス違反でコケます。 もしかしてバグでしょうか?
>>353 351ではないが、普通にCreateFileでシリアルポート開けてタイマーか別スレッドで
ReadFileしてればいいんでない?とりあえず初期設定のところだけ貼っておく
(ボーレート等は適切に設定してやること)。
bool PCtrl::OpenPort( char* pnum ) //引数例:pnum="COM1"
{
DCB dcb;
COMMTIMEOUTS cto;
if ( this->h != NULL )
return false;
this->h = CreateFile( pnum,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0, 0);
if ( this->h == INVALID_HANDLE_VALUE )
{
return false;
}
BuildCommDCB( "baud=600 parity=E data=8 stop=1", &dcb );
SetCommState( h , &dcb );
cto.ReadIntervalTimeout = 100;
cto.ReadTotalTimeoutMultiplier = 0;
cto.ReadTotalTimeoutConstant = 100;
SetCommTimeouts( h , &cto );
return true;
}
>> 372 ソースまで書いて頂いて有難う御座います! これを参考にして試してみます。
>> 370 お答え有難うございます。 コンストラクタのOwnerには作成元のオブジェクトを 入れているつもりだったのですが、以下のように書いた 場合は作成元がOwnerとして渡っていないのでしょうか? Form1上にButton1を配置してButton1からForm2を作成 する場合 void __fastcall TForm1::Button1Click(TObject *Sender) { TForm2* NewForm=new TForm2(this); NewForm->ShowModal(); delete NewForm; } とした時、thisで示されているオブジェクトはButton1では ないのでしょうか?
>>374 そのthisはForm1で、Button1はSender
>>375 有難うございます。TComponentに型キャストしてSenderを渡した
ところ、呼び出し元のコンポーネント名を取得できました。
377 :
デフォルトの名無しさん :02/06/02 19:06
厨質問スマソ cbuilderで作った実行ファイルってlinux(redhat)でも動くの?
動くよ。WineとかVMWareで検索してね。
あと Lindows とか
Lindowsってもう動くの?
381 :
デフォルトの名無しさん :02/06/03 08:52
たびたびの質問すみません。 ShellExecute()で外部プログラムを起動させることは 分かったのですが、起動させたプログラム中のボタン を押したりテキストフィールドへ文字を入力したりする にはどのような方法を取ればいいのでしょうか?
382 :
デフォルトの名無しさん :02/06/03 21:20
SendMessage PostMessage
383 :
デフォルトの名無しさん :02/06/04 23:29
はじめまして ファイルから呼んでメモリーに格納してある JpegファイルのイメージをTJPEGImageに入れたいのですが どうすればよいのでしょうか? LoadFromFileでファイルから読めますが インターネット(SOCKET)からJPGをメモリーに読み込んで TImage->Picture=(TJPEGImage*)buff;// Socketで読み込んだデータ− こんな感じにしたいで。どなたか教えてください
ストリームに読み込んで、Jpeg->LoadFromStream。
385 :
デフォルトの名無しさん :02/06/05 01:13
TMemoryStream* mem = new TMemoryStream(); mem->Read (m_pBody, m_iBodyLength); TJPEGImage* jpg = new TJPEGImage; jpg->LoadFromStream (mem); View2->Picture = (TPicture*)jpg; delete jpg; delete mem; こんな感じですよね? ただ、これだとハングします・・・
386 :
デフォルトの名無しさん :02/06/05 01:24
すみません mem->Readでなく mem->Writeでした でも、それでもダメでした mem->sizeはいい値を示していますが
いや、こう TMemoryStream* Stream = new TMemoryStream; Stream->Write(Buffer, Length); //ReadじゃなくてWrite Stream->Position = 0; //使う前にPositionを戻す Jpeg->LoadFromStream(Stream);
かぶった・・・ Read←→Writeを直してるなら、あとはPositonを元に戻すだけでできると思う。
>View2->Picture = (TPicture*)jpg; これはいいのか?
391 :
デフォルトの名無しさん :02/06/07 19:27
あげとく c(゚Д゚c
BCB6でIRCクライアントのようなものを作りたいのですが 参考になるページは無いでしょうか? IndyのTCPクライアントでconnectした後、どうすればいいのか さっぱりわからない・・・。
>392 もう少し具体的に何がしたいのか書かないとアドバイスの しようがないよ。
>393 とりあえず読んでます >394 とりあえず、IRCクライアントとしての最低限の機能 (サーバ接続・目標のチャンネルに入る・ログの取得・発言くらいかな) がしたいです。
396 :
デフォルトの名無しさん :02/06/08 10:35
WCHAR の配列を AnsiString であらわすことは可能でしょうか?
397 :
デフォルトの名無しさん :02/06/08 10:37
↑ 可能
398 :
デフォルトの名無しさん :02/06/08 11:34
AnsiStringとStringって同じもの?
399 :
デフォルトの名無しさん :02/06/08 14:52
ランダムに3ケタの数を生成し、それをバケツソートでソートしたいのですが、 どう書いて良いかわかりません。どなたか、アルゴリズムを教えてください。 言語はC++です
400 :
デフォルトの名無しさん :02/06/08 15:06
>399 ガッコウノシュクダイハジブンデカンガエタホウガジブンノタメニナルヨ
401 :
デフォルトの名無しさん :02/06/08 18:30
MessageDlg のタイトルが「情報」とか「エラー」とか日本語で出るのを 英語にする方法ありますか?
英語版ウィンドーズを使う
MessageBox を使えばいけたんですね。 ありがとうございました
405 :
デフォルトの名無しさん :02/06/09 02:52
Xalan/Xerces(ApacheのXSLTプロセッサ/XMLパーサ) 使いたいんですけど、 Xercesがテスト通りません。 .regファイル入れたのにダメ。 当方BCB6パーソナルです。 どっかで成功しているバイナリをダウンロードできませんか? Exceptions Test # 105: wrong DOM_DOMException thrown. Exceptions Test # 109: wrong DOM_DOMException thrown. Exceptions Test # 110: wrong DOM_DOMException thrown. 1 StringHandles. 1 StringHandles. 1 StringBuffers. 1 StringHandles. 1 StringBuffers. Exceptions Test # 201: wrong DOM_DOMException thrown. Exceptions Test # 202: wrong DOM_DOMException thrown. Exceptions Test # 201: wrong DOM_DOMException thrown. Exceptions Test # 202: wrong DOM_DOMException thrown.
「TClipboard のグローバルインスタンスの中身が変化した時」という イベントは、どうやって作ればよいのだろう。
>>406 TClipboardを継承して、WndProcをオーバーライド。
SetClipboard関数でグローバルインスタンスを変更。
408 :
デフォルトの名無しさん :02/06/12 01:52
複数NICが刺さっていて、それぞれ別のIPアドレスを 割り当ててあります。 TServerSocketで、片方のIPアドレスにだけポートを 開くにはどうすればよいのでしょうか。
>>407 継承とかオバライドとか、
C++ の長所をすっかり忘れていますた (・∀・)=3
手順まで教えていただき、これでなんとかなります。
多謝!!(´▽`*)
ミ?゚Д゚彡 いわゆるクリップボードの監視をするときに使う WMDrawClipboard や WMChangeCBChain の方とは違うんですよね? >SetClipboard関数でグローバルインスタンスを変更。 なんか、うまく解放してやらないと クリップボードがあぼーんの可能性が?? 昔、OSのクリップボードが吹っ飛んで 焦った事あったです。
>>410 Clipboard関数の最初の呼び出し時にインスタンスが作成されるので、
その前にSetClipboard関数を呼ぶ必要がある。
412 :
デフォルトの名無しさん :02/06/14 11:56
両方使ったことある人に聞きます。 C++BuilderはVC++よりいいですか?
>412 使う場面によります。
414 :
デフォルトの名無しさん :02/06/14 12:49
>>412 ちょっとしたプログラムをWindowsで組んでみたい時はC+Builderは便利。
本格的な実用プログラムを組むと、サイズが抑えられるのはVC++。
でもどちらが何ができるかと言うと、どちらでもいい。C++BuilderでもMFC
は使えるのだし。
415 :
名無しサンプリング@48kHz :02/06/14 12:56
IEコンポーネントスレにも書いてしまったんですが… TCppWebBrowserコンポーネントで _blank で新規ウインドウを生成しないようにしたいんですが どうしたら良いでしょう…(同一ページでリンク先に飛ばせたい) ご存知の方がいましたらば情報キボンです!
416 :
名無しサンプリング@48kHz :02/06/14 13:30
TVariantで飛んできた値ってどうやって使うの?
417 :
デフォルトの名無しさん :02/06/15 12:20
C++Builder使えても就職ない?
>>417 どの言語が使えても同じ。 コードが書ける程度では仕事はない。
去年迄の派遣シフト中は派遣なら就職出来た。派遣だと VC/VBが多いからね。
しかしもう派遣シフトも完了した状態。 海外シフトが始まってるし、コードが書けるだけ
ではいよいよ就職は出来ないよ。
就職したいなら、キャラクターを磨け。人付き合いの良さとか、創造力とかさ
420 :
デフォルトの名無しさん :02/06/16 17:11
>>419 Delphiで書かれたコンポーネントは、そのままC++Builderで利用できます。
>>420 ありがとうございます!!いろいろ試してみた所、C++Builder6でDelphi用の
WindowsXPコンポーネントが使えるようになりました。
C++BuilderはDelphi相当のコンパイラを内蔵してるんですね!全然知りませ
んでした。
>421 相当っていうか、全く同じもの・・・。
423 :
デフォルトの名無しさん :02/06/16 21:31
おいらも、パスカルで書いてあるコンポーネントを勝手に?コンパイルしてくれたのには最初、驚いたよ。 っていうか、パスカルで書いてあるの知らずにコンポーネントのインストールをして、あとでソースを見たらパスカルだった。 Delphiって文法はだいぶ違うけど、クラスとかはC++とほとんど一緒なんだね。
>>419 いきなりzipファイルへのリンク書くなよ。
説明用のページを貼るくらいはできるだろ?
>>423 ということはDelphiで勉強してもBCBに簡単に移行できるって事?
427 :
デフォルトの名無しさん :02/06/16 23:28
DelphiとC++Builderは操作は同じなの? マウスクリックしてどうとか言うの。
>>427 VCLを使って実際にプログラミングしていくやり方の事?一緒だよ。
フォームにコンポーネントを貼り付けるやり方は全く同じ。
ただ、コードはC++で書かないといけないけどね。
VB使えて、C++も理解してれば VBみたいな感覚で使える?BCB。 欲しいんだけど
>>429 VBとC++も理解してるのなら大丈夫でしょう。
Delphiも使ったことがあればBCBで幸せになること間違いなし。
BCBあればDELは買わなくていいんだな。 というか、無料DEL+BCCでいいんじゃないのか?
>>431 難しいところだね。Delphiの爆速コンパイルを一度味わってしまうと、
なかなか他のコンパイラに移行できない。
BCBはやっぱり重いから、ある程度リッチなマシンでないとストレス
が溜まるかも。
俺はBCB Pro+無料Delで幸せ。DelphiのコンポーネントをBCBに
入れまくって遊んでいる。
買っちまったよ。 早速インスコして使ってるんだけど、これヨサゲね。 幸せの予感。 買うとき散々迷ったんだけど、もしかしてVC++.NETも似たようなインターフェース?
>>433 キタ━━━━━━(゚∀゚)━━━━━━ !!
これで仲間が増えた!!
俺はと言えば、Delphiの参考書片手にWindows APIとC++のお勉強。
DelphiのObject Pascalが、ほとんどそのまま何も考えずにC++に
移植できるのは一種の快感だね。
×もしかしてVC++.NETも似たようなインターフェース ○ C#.NET / VB.NET
436 :
デフォルトの名無しさん :02/06/18 10:14
BCB5なんだけど、 for(i=0;i<cnt;i++){ TTrackBar &bar =* new TTrackBar(this) ; bar.Parent = this; bar.Name = "BAR"+IntToStr(i+CRAMAdr); bar.Top = i*bar.Height+45; ・・・略・・・ みたいに TTrackBarを動的に作成しようとしたら cntが1以上の場合 そのクラスは既にありますというエラーが出ます。 で、.PASで procedure test(AOwner:TWinControl); var i:Integer; begin for i:=0 to 3 do begin with TTrackBar.Create(AOwner) do begin Parent := AOwner; Top:=Height*i+32; end; end; end; と試験コードを書いて試した所、やはり同じエラーが出ます (このコードでもDelphi5なら成功する) いったいどうやればいいんでしょう?
どうも
>>436 の件は、フォームに同じ種類のコンポを張るだけでダメという事で
どうやらBCBが壊れていたようです。インストールからやりなおしてみます。
やりなおした結果、 新規プロジェクトで試した場合には現象は止まりましたが それまで作成していたものは、.dfm .cpp .h .bpr 以外のファイルを全て削除しても直りません 結局、別ディレクトリに作成し、ソースとフォームだけを コピーして直りました。 なんだか訳が判りません・・・・
>>438 BCB5の賞味期限が切れた模様。BCB6を買いなされ。
>>438 お待ちしています
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( )
| 某|
(__)_)
VCL使ってプログラムして初めて、256色(パレット対応)なんてモードが 用意されていることがわかったよ。 カナーリ気色悪いモードだねこれは。過去の遺物だとか本には書いてあっ たけど。 WindowsもインテルのCPUと同じで、互換性を重視してバージョンアップ していったら、いつの間にかアーキテクチャが汚くなっていたという奴か?
>441 9x系が不安定なそもそもの原因なのでは?>互換性を重視して〜
>VCL使ってプログラムして初めて、256色・・・ BIOS(SVGA)で対応している基本的なモードの一つだから当然だろ
>>441 256色インデックス(パレット)付カラーは 今でもGIFでおなじみだと思ったが
うわー、今まで簡単なツール類はVBで作ってたんだけど BCBマンセー気味に。 はぁはぁ、もっとVCLが欲しい、、プロ版買っとくんだた(´_`
447 :
デフォルトの名無しさん :02/06/20 00:07
>>446 俺はBCBプロフェッショナルと
デルファイ6プロフェッショナルを
買ったが手に入れた事で満足してしまい
今じゃ押入れの中だ。
パーソナル版で充分だったな、、、、
>>446 ユーザ向けの優待販売使うとPro単体より若干、安い罠。
Modern C++ Design買ってきたから、BCBでLoki通るように改造してみたい。 多分無理だろうが(w
451 :
デフォルトの名無しさん :02/06/23 14:03
ほιゅ
このスレには初めて来たのですが、C++Builder で、ちょっと教えてもらいたいこ とがあります。 StringGrid コンポーネントで、Cells[col][row] = "ABC" という具合に文字列 をセットしたあと、そのセルの文字列を中央寄せしたいのですが、うまくいきませ ん。したいことは、 StringGrid1->Objects[col[row]->Alignment = taCenter みたいな感じですが、エラーが出てしまいます。 判る方、どうか教えてください。
454 :
デフォルトの名無しさん :02/06/27 20:39
SQLビルダってC++Builderをインストールすると使えるの? ヘルプはインストールされてるけど起動方法がわかりません。
BCB面白そうだな。 BCB6Personalが一万円切ってたから、買ってみるかな。
>>455 BCB面白いよ。俺はPro版使ってるけど。Delphiと違って、コンパイルが
激遅なのが玉にキズだけど、MFCで培ったテクニックもそのまま使えて
幸せ。
C++Builder6を使っています。 フリーのコンポーネント(Pascalで書かれた)を登録しようと パッケージを新規で作成して登録しました。 登録したコンポーネントを使ったプロジェクトをコンパイルすると リンカエラーが起きます(登録したコンポーネントのコンストラクタは未解決等) これはプロジェクトにそのコンポーネントをコンパイルした際に出たobjファイルを プロジェクトに追加すれば出なくなるのですが おそらく自分のコンポーネントのインストール 手順が 何か抜けてる部分があるのだと思います。 このようなエラーが出る場合 どのような作業を行えばエラーは出なくなるのでしょうか?
458 :
デフォルトの名無しさん :02/06/27 23:03
>>457 エラーメッセージを詳細に書くナリ。
ありがちなリンクエラーは、namespace が違ってたり、パケージ選択
を間違えたりとか etc...
コンポーネントインストールするときに 出力ファイルのパスミスってただけでした。 すいません(鬱
>>454 SQLビルだって、たしかEnt版しか使えなかったような。
俺はPro版しか触ったこと無いのでわからんが・・・・
>>460 ごめん、TQuery右クリックで起動できた。
462 :
デフォルトの名無しさん :02/07/02 15:45
C++ Builder 6 を入れました。 コンポーネントを追加しようと、メニューから [コンポーネント] - [パッケージのインストール] の [追加] で *.bpl を選択しました。 が、VCL50.BPL が見つからない、というようなメッセージが出ました。VCL60.BPL はあるようなので、 バージョンに関連したものではないかと思うのですが、このコンポーネントは Ver.6 では使えないの でしょうか? それともどうにか使う方法はあるのでしょうか?
>>462 もしかしてコンポーネントがBCB5でコンパイルしたものじゃない?
BCB6でコンパイルし直さないといけないのでは。
どこかのページにWindowsXPスタイルに対応したコンポーネントが 置いてないでしょうか。
465 :
デフォルトの名無しさん :02/07/03 02:34
466 :
デフォルトの名無しさん :02/07/04 02:37
>>465 どうもすんまそん&アリガト。
早速インスコしてみたんだけど、これBitBtnもProgressBarもないのね。
一番よく使うのに。
MFCを紐解いて自作しないとだめなのか・・・・・・
>>466 BitBtn や ProgressBar は Manifest を(アプリケーションに)追加することで
new GUI になりませんか?
468 :
デフォルトの名無しさん :02/07/04 02:59
>>467 そうなんですが、配布する時のことを考えると、できれば
2000以前で普通のGUI、XPだとnew GUIと自動的に切り替わる
コンポーネントが欲しいんですよ。SP1で対応してくれるかもしれんけど。
>>468 だからこそ Manifest で良いのでは?
exeと同じフォルダに manifest ファイルを置くだけ。
もちろんWindows2000では無視されるのでXPに対してのみ効果があるし。
別に配布上問題はないと思ふが
470 :
デフォルトの名無しさん :02/07/04 03:40
ちゃんとリソースにして .exe にくっつけておきなよ。
>>468 SP1 では XP テーマ対応はしない。と明言しているはず。Delphi7 から。
BCB6 のコンポーネントは Delphi6 のそれと同じ物を使っているから BCB6 では
対応できない。
ただ「対応できない」というのは過去との互換性の部分がほとんどだから、3rd party
のコンポーネントを使ってしまえばすんじゃう話だよ?
新しくアプリケーションを作るのであればたいした問題じゃないよね?
あとは、ImageList の(Microsoft が作りこんだ)非互換性をどうするか、って
くらいしかめんどくさい話は残っていない。
>>471 がーん。対応しないんですか。BCB6では。
昨晩もマニフェストファイルを作ってみたんですが、XPスタイルになる
ものとならないものが混ざって醜いことこの上なかった。
外国のサイトでもさぐってみようかな。
473 :
デフォルトの名無しさん :02/07/06 09:52
Builder 6 のバグレポートとかがまとまったページって ご存知の方いっらしゃいませんか?
>>474 ありがとうございます。無理にXP対応にしないようにしてみます。
世の中にはまだまだWin2000ユーザーも多いことですし、単に見映え
の問題ですからね。
ご紹介のホームページは今から覗いてみます。
C++Builder用のオフィシャルコース本がないので、Delphi6用の2冊組 を買ってきました。ちょっと値が張りましたが。 コンポーネントの使い方だけなら、これで十分です。もちろん中身は Object Pascalで書かれているので、これをC++に翻訳するには相応 の言語力が要求されます。 と言ってもObject PascalとC++はよく似ているので、そんなに移植は 困難ではありません。逆だったら難しいかも。
>>476 >これをC++に翻訳するには相応の言語力が要求されます。
そうか?とバイリンガルなアタシはおもふ。
>>477 すげえな。C++の文法自体はわかっているのだが、Object Pascalが
サパーリなので、困難を極めます。Registerって何?のレベルです。
>>478 いや、Cにもその概念ありますがな・・・
>>479 そうですね。コンポーネントの登録でした。あまり使いませんね。
>>480 ありがとうございます。今見せていただいていますが、この調子だと
Delphiが即マスターできてしまいそうな気がしてきました。
☆ チン ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < BCB6 SP1まだ〜? \_/⊂ ⊂_ ) \___________ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | |JBuilder7SE返品|/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ そろそろ出てもいいと思わない?
483 :
デフォルトの名無しさん :02/07/08 15:17
取得した使用許諾コードってどこ見れば分かるの?
>>482 アップデートは今暫くおまちください
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( ) BCB6++ Personal/SE/Enterprizeヲ
| 某| ジュンビシテイルカラナ
(__)_)
485 :
デフォルトの名無しさん :02/07/10 01:33
すいません、今から馬鹿な質問します Bcc の 5.5.1 は WindowsXP 非対応らしいですが BCB の 6 に含まれる Bcc は XP 対応済みですよね? Bcc のバージョンナンバーはあがってますか? 既出でしたらすいません
>>485 BCC5.5.1はXPでも問題なく使えますよ。
BCB6にはBCC5.6が付属していますが、ほとんど変わってないようです。
大きく違う点は、STLPortが標準装備になったのと、C99にいくつか対応
したぐらいで、BCC5.5.1にSTLPortをインストールして使えば、実用上
ほとんど差はありません。
486さん、487さん 教えてくれてどうもありがとう、助かりました 5.5.1がXPでも使えるのはとてもうれしいでふ BCC 5.6は無料公開されないのかな?でもバグ増えてたら悲すいね
489 :
デフォルトの名無しさん :02/07/10 23:38
質問させてください.Builderとはあんまり関係ないんですが GPSユニット+Super MAPPLEでパソコンナビをやってます. mappleはCOM1〜6のうちの選択したポートからGPSのデータを 取り込んで地図上に現在位置を表示します.COMポートからは データの受信のみをしているようです. 1) GPSユニットからは,精度のいいデータ(1/1000度単位)と精度の悪い (1/100度単位)データが同時に出てきてしまうので,地図上に2本の 軌跡が表示されてしまいます. たとえば,北東に進んでいるとき,精度のいい方のデータは斜めの 軌跡になるのに,精度の悪いほうは階段のようにぎざぎざになる. GPSのデータを一回トラップしてやって精度のいいほうのデータのみを 取り出してmappleに食わせてやることができると気持ちいい. 2) GPSユニットからは,衛星の情報も同時に送信されているけど, mappleでは確認する機能が無いため,データを途中でトラップして やって衛星データを表示するソフトを作って同時に動かすと便利. 3) 曲がり角の座標に来たときに「次,右です」とか教えてくれるソフトを 作りたいのですが,mappleがCOMポートを占有してしまうので, 地図を確認する場合には音声ナビソフトを終了して(COMポートを 放して)mappleを立ち上げる必要がある.信号待ちの間にこれを やるのはつらい.これもCOMからのデータを途中で取り出せれば 簡単. だと思うのですが,何かいい方法はないでしょうか. 使っているパソコンにはCOM1,2の二つだけがついていて,COM3〜6 は空いてる状態なので,このへんにダミーのvxdでも作ってやれば いいんだろーかとも思っているのですが,具体的な方法がさっぱりです. それとも,もっと簡単な方法があるでしょうか. 教えて君ですんまそん.
490 :
デフォルトの名無しさん :02/07/11 22:45
BCB6ってさ、templateを使ってるソースでコード補完使うと氏なない? 特にsizeof(T)があるとかなりの確率で氏ぬです。 今はコード補完切ってるからいいけど、BCB5より補完や宣言表示が速いから ホントは使いたいんだよね...。
491 :
デフォルトの名無しさん :02/07/16 13:00
PlatformSDKのサンプル「Generic」をビルドしようとしたら、brc32.exeでリソースがリンクできない‥‥ BCC 5.5.1のbrc32.exe呼び出してやると何事もなかったようにリンクできるんだが‥‥ バグ?
492 :
デフォルトの名無しさん :02/07/16 20:45
>>491 brc32 単体で動かすときのオプション指定を間違えていない?
>>493 「brc32 generic.rc generic.exe」
これであってるはずだけど‥‥
何故かリソースのコンパイル自体は行われているがexeファイルにリソースがリンクされていないと言う現象が‥‥‥
(エラーメッセージは-v付けても特になし)
うわぁぁぁん!!
495 :
デフォルトの名無しさん :02/07/17 22:35
TStringsからAnsiStringへの代入はどうすればいいでしょうか? static_castもdynamic_castも、コンストラクタも全部エラーになります。 StringGrid1->Cells[NumCol][i + 1] = CheckListBox1->Items[i];
>>495 CheckListBox1->Items->Strings[i]
497 :
デフォルトの名無しさん :02/07/17 22:50
>>496 ありがとうございます。うまくいきました!
どうやら Itemsプロパティの扱い方が、DelphiとBCBで違うようです。
BCBの方がより文法に厳しいように思います。これでやってみます!
>>494 なんか思い出してきた。それ BRC32 のバグだった気がする。
BRC32 は実際にはりソースコンパイルはBRCC32 を呼び出し、
.exe とのリンクは ilink を呼び出しているのだ。
BCC32 に .rc や .res を渡した場合にも、BRCC32 や ilink を
呼び出しているんだが。BRC32 に ilink の呼び出しの不具合があった気がする。
ilink を呼び出してリソースリンクできないかな?たしかそうやって解決した記憶があります。
499 :
デフォルトの名無しさん :02/07/18 14:22
質問です。 あるもらい物のソースを make すると [リンカ エラー] 外部シンボル 'System::__linkproc__ __fastcall GetMem()' が未解決 (C:\〜.OBJ が参照) [リンカ エラー] 外部シンボル '__fastcall Controls::TControl::ClientToScreen(const Windows::TPoint&)' が未解決 (C:\〜.OBJ が参照) というようなエラーが 20 〜 30 くらい出ます。名前からすると、C++ Builder に付属の ライブラリがリンクされてないようなことではないかと思うのですが、今まで C++ Builder にさわったことがなく、どうして良いものかさっぱり分かりません。 上の情報だけで何らか原因/解決法が分かりますでしょうか?
あれ? 再構築したら通っちゃった。
4月からCを始めて今BCBをやっています 初心者板が無いようなのでここで質問させて頂きます 漢字の練習帳みたいなマス目を作って、そこをクリックや ドラッグするとそのマスごとに線や○×などを 表示させたいのですがなにか良いコンポーネントはありませんか? ループで線を引いて、Originで始点のマス目を割り出して、、、 と考えていました よろしくお願いします
>502 リンク先の>36ですか?w 使いようではそう言う動きも可能かと
2,3人友達に聞いてみたけどBCBを誰も知らなかったw BCBって一般的じゃないんだ;´Д`)
>>504 BCBとDelphiは内容的にはほとんど同じだと思うが、BCBがC++なので、
初心者に対して敷居が高いからのように思う。
506 :
デフォルトの名無しさん :02/07/22 15:32
言語としてはC++の方が一般的だから、C++を採用している方が敷居が低いのが普通と思うけどな。
初心者が見てC++のほうが敷居が低いと思うだろうか。
509 :
デフォルトの名無しさん :02/07/22 16:02
すんませーん。TImageについて教えて下さい。 やりたい事はImage上にマウスカーソルが来たらImage上のBMPを別のBMP に変化させるだけです。勿論、マウスカーソルがImage上に居なくなった 場合は元のBMPに戻すと言う事です。 よくある奴ですね。でも分からない・・・ たったこれだけの事がわからない・・・ あぁなんと情けなや・・・ どなたかご存知ありませんか? 説明が面倒くさければ、その説明のWebPage だけでも・・・ BCB5+Win2000+SP1
510 :
デフォルトの名無しさん :02/07/22 16:12
と、、すいません。何が分からないのかを記載していませんでした。 Image1とImage2があり、それに既にBMPを読み込んで配置しています。 Image1にマウスカーソルが来た場合の判定方法と言う事です。 Leaveした時も判定したいです。
>>510 TImageをサブクラス化してWM_MOUSEHOVERとWM_MOUSELEAVEイベント拾えばいいんでないの?
TImageにWM_MOUSEHOVER飛んでくるかは知らんが。
512 :
デフォルトの名無しさん :02/07/22 16:52
うぉ〜ぅ。了解です。スグサマやってみます。
TImageはグラフィックコントロールなのでWM〜は来ないのでは? CM〜なら来るかも
くぅ〜 感謝感激雨あられ。皆さん、やさすぃ〜 ありがとうござまーす。 この感激〜♪を何時までも♪
Delphiでメッセージに応答させたい場合は message 文を書けば いいですが、BCBでこれに対応した構文はあるのでしょうか?
BEGIN_MESSAGE_MAP MESSAGE_HANDLER END_MESSAGE_MAP というやつ。
>>517 なるほどマクロで定義されているのですね。ありがとうございます。
しかしDelphiよりかなり汚いプログラムになってしまいますね。
C++にはもともとイベントハンドラという概念がないのでifやswitch
で分岐させるか、throwで処理するしかないわけですね。でも
throwは非効率的なので分岐処理となるわけですか。
汚いと言われれば確かにそうかも。 でもまあ仕方なさげ。
>>519 DelphiはWindowsに特化して作ってあるので、これの真似をC++で
しようとすれば、どうしてもあちこちにアラが見えてくるのは仕方ない
ですね。
最近なぜ私はDelphiに移行せずBCBにこだわっているのかわからなく
なってきました。MFCでさんざん苦労してきたからかもしれません。
俺の場合はやっぱC++が好きだからかな >Delphiに移行しない理由 Delphiもフリー版のおかげで触ることが出来たけど、やっぱC++の方が好きだったんで。 C++ & RADってことでBCB。
((( ))) ( ´Д`) ⊂ ._つ 人 Y し'(_) 出来ねぇ・・・ void __fastcall TForm1::OnMouseEnter(TMessage & msg) { if (msg.LParam == long(Image20)) { ShowMessage("MouseEnter"); } } msg.LParam がいつも0・・・ どんなコンポーネントでもマウスを合わせ たら拾ってきやがる・・・ 誰かHELP ME・・・
>>522 それはフォームのCM_MOUSENTERを処理してるの?
サブクラス化してるようには見えないし、
そのコードだけだとよくわからない・・・。
>>521 私も同じです。元々C言語で仕事してきたので(今はC++MFCメイン)、
BCBの方がすんなり入れました。VCL使う時はどうしてもDelphiの参考書を
読むしかないですね。
BCBの本がほとんど無いのは悲しいです。
>>522 たった今作り始めてみました。出来たらうpします。
すんません。CM_MOUSEENTERです・・・ private:// ユーザー宣言 void __fastcall OnMouseEnter(TMessage & msg); void __fastcall OnMouseLeave(TMessage & msg); public:// ユーザー宣言 __fastcall TForm1(TComponent* Owner); protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, OnMouseEnter) VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, OnMouseLeave) END_MESSAGE_MAP(TForm)
>>524 ぐわぁ〜
つ、作って頂けると・・・
なんともありがたや、ありがたや・・・
と言いますか・・・ 漏れ、なんて情けなや・・・
作っては見たものの、マウスの動きが早いと取りこぼす‥‥鬱だ。 VCLのサブクラスがイマイチ解らなくてSetWindowLong使ってるしw
>>527 様
成る程・・・ BCBでの実装は難しいのですかねぇ〜
うーんと。ToolBarで代用とか他の道を模索してみましょうか・・・
>>525 >>524 さんがコード書いてくれてるみたいだけど(サブクラス化の方かな?)
それはTImageを継承してコンポーネントを作るときに使う方法。
>>529 コ・コンポーネント作成ですか!!
そこまでしないとBCBでは実装出来ないと!
簡単だと思っていたんですが・・・ 大甘だったと言う事ですか・・・
どうやらできました。 サブクラス化までは必要ないです。TFormが受け取るメッセージをディスパッチ すれば十分なようです。 ただし、DelphiのMLにもありますように、Panelの上にImageが乗ってたりすると うまく行きません。 protected: BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, CMMouseEnter); VCL_MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave); END_MESSAGE_MAP(TForm); void __fastcall TForm1::CMMouseEnter(TMessage& Msg) { // Image1 にマウスが入った? if (reinterpret_cast<TComponent*>(Msg.LParam) == Image1) { // 赤く塗る Image1->Canvas->Brush->Color = clRed; Image1->Canvas->FillRect(Rect(0, 0, Image1->Width, Image1->Height)); } } //--------------------------------------------------------------------------- void __fastcall TForm1::CMMouseLeave(TMessage& Msg) { // Image1 からマウスが出た? if (reinterpret_cast<TComponent*>(Msg.LParam) == Image1) { // 白く塗る Image1->Canvas->Brush->Color = clWhite; Image1->Canvas->FillRect(Rect(0, 0, Image1->Width, Image1->Height)); } }
ほんとだ。パネルに乗ってると駄目だね。 サブクラス化したほうはOKでした。
>>501 ですがもう一度同じ質問宜しいですか?
漢字の練習帳みたいなマス目を作って、そこをクリックや
ドラッグするとそのマスごとに線や記号、○×などを
表示させたいのですがなにか良いコンポーネントはありませんか?
皆さん社会人のようで、土日と平日のレスの量に差がありますねw
>>532 サブクラスにした方がきっちり動くのは、Delphiでも同じですね。
これで胸がすっきりしました。
>>533 TLabelのCanvasに描画するだけのというのはダメ?
>>531 ぐぉーーーーーーー 本当だーーーーーーーーーーーーーーーーーー!!
出来たーーーーーーーーーーーーーーーー
んですが、Panel上に乗ってるんですよね・・・ バッチリと・・・
これは弱った・・・ いや、、、ゲームを作ってまして・・・
操作系は全てPanel上にのせてるんですね・・・ これがまた・・・
そうですか・・・ サブクラスを勉強します・・・
お付き合い下さった方、誠にありがとうございます。
>>535 サブクラスについてはまた後ほど書いてみます。
ただ、テレビで見たい番組があるので、ちと遅れます。
サブクラスを書くと、friend class宣言をしないと不便なことがあるかも
しれません。これは書いてみてまたお知らせします。
>>533 Canvasがあれば何でもいいけど、絵を保持してくれるTImageでどう?
>>535 >>530 でびっくりしてるけど、コンポーネント作りは難しくないよ。
サブクラス化でやるならこんな感じ。
--- .h ---
TWndMethod OldImageWndProc;
void __fastcall ImageWndProc(TMessage& Msg);
--- .cpp ---
※置き換え
OldImageWndProc = Image1->WindowProc;
Image1->WindowProc = ImageWndProc;
※置き換える必要がなくなったら
Image1->WindowProc = OldImageWndProc;
void __fastcall TForm1::ImageWndProc(TMessage& Msg)
{
if (Msg.Msg == CM_MOUSEENTER)
{
ShowMessage("Mouse Enter");
}
OldImageWndProc(Msg);
}
∧_∧
>>536 (´Д` ) 書き終わってリロードせずに貼ってしまいました。
/ y/ ヽ 切腹しますた。
Σ(m)二フ ⊂[_ノ
(ノノノ | | | l )
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>537 ウワァァァァァァァァァァァァァァァァァァァァァァァァァァァァァン!!! わかりません〜〜〜〜 ・・・・
・・・
・・・
.hの部分はどこに追加しますか?・・・
.cppの置き換えって・・・ ・・・なんでしょう?
ってレベルなんですね・・・ いや、、、 もっと調べまする・・・
すんません。VBからの移行組なもんですから、そこら辺りはさっぱり・・・
とりあえずWin32APIで。 VCLは初心者レベルなので勘弁w //--------------------------------------------------------------------------- //フォームの配置はForm1(TForm)->Panel1(TPanel)->Image1(TImage)。 //動作にはWin98/NT4以降orWin95+IE3以降必須 // TForm1 *Form1; WNDPROC oldProc; BOOL tmeFlag = TRUE; LRESULT APIENTRY MyProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { /* case WM_MOUSEHOVER://TPanelにセットしているせいか、Panel上にマウスがある時に常時流れているので使えない(;´Д`) break; */ case WM_MOUSELEAVE: //マウスが離れた時の処理 Form1->Image1->Picture->LoadFromFile("適当0.BMP"); tmeFlag = TRUE; break; } return CallWindowProc(oldProc, hwnd, msg, wParam, lParam); } void __fastcall TForm1::FormCreate(TObject *Sender) { oldProc = (WNDPROC)SetWindowLong(Form1->Panel1->Handle, GWL_WNDPROC, (UINT)MyProc); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (tmeFlag == TRUE) { //マウス進入時の処理 Image1->Picture->LoadFromFile("適当1.BMP"); tmeFlag = FALSE; } TRACKMOUSEEVENT tme; tme.cbSize = sizeof(TRACKMOUSEEVENT); tme.dwFlags = TME_LEAVE; tme.hwndTrack = Panel1->Handle; tme.dwHoverTime = HOVER_DEFAULT; _TrackMouseEvent(&tme); } //---------------------------------------------------------------------------
いや、漏れが甘い夢を見ていたようです。 大人しく別の方法を模索します。 ありがとうございました。
なんか入り乱れてるけど、とにかく全部貼っちゃいます
>>539 ヘッダはこんな感じ
class TForm1 : public TForm
{
__published:
TImage *Image1;
private:
TWndMethod OldImageWndProc;
void __fastcall ImageWndProc(TMessage& Msg);
public:
__fastcall TForm1(TComponent* Owner);
__fastcall ~TForm1();
};
cppソースはこんな感じ
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
OldImageWndProc = Image1->WindowProc;
Image1->WindowProc = ImageWndProc;
}
__fastcall TForm1::~TForm1()
{
Image1->WindowProc = OldImageWndProc;
}
void __fastcall TForm1::ImageWndProc(TMessage& Msg)
{
if (Msg.Msg == CM_MOUSEENTER)
ShowMessage("Mouse Enter");
OldImageWndProc(Msg);
}
とりあえず茶でも飲め 旦~ 旦~ 旦~ ヽ )ノ ビュンビュン 旦~ ⌒(゚д゚)ノ 旦~ /. ( ヽ 旦~ 旦~ 旦~
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) < たまに突然盛り上がるね。 (つ旦と) \______________ と_)_)
| \ |Д`) BCBでWin32API直叩きはやっぱり邪道かな? |⊂ |
>>536 様
>>511 様
>>542 様
出来ました〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ウキィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィ
はぁ〜 苦節1日・・・ ようやく出来ますたぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
ぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
ぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
ご迷惑をお掛けいたすますたぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
ぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
ぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
うれすぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃ
ぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃ
>>545 そんなことないですYO
APIも使えた方がいいに決まっとります (´・Д・`)ゝ
漏れはAPIあまり分かりませんけど…
ボソボソ・・・ 何個もある場合はどうしたらいいんでしょう・・ Imageが40個もあるんですが・・
>545 俺もAPIで組める人尊敬ですよ >546 おちけつ
>>548 ヤッパリw
コントロールに頼らず、画面サイズのテーブル作ってボタンの情報を格納、MouseMoveイベントで自力チェックしたほうが簡単な(・∀・)ヨカーン
ImageListからImageへの読み出し方ってご存知ないですか? BCB使い初めてからずっと疑問なんですが、、、 わからない・・・ 教えられついでにご質問します・・・
ここまで出来ればもう・・・ 出来たも同然なんですが・・・
>>550 それを言わないで・・・ 悲しくなって来ますので・・・
ウワァァァン!!!!
>>551 ヘルプのTCustomImageList::GetBitmap()
くっ・・・ 出来たと思ったのに・・・ 後、もう少し情報をくださーい。 ImageList2->GetBitmap(1,Image165->Picture->Bitmap); で、、、今までの関連TImageで交互に変化させようとしました。 すると、拾ってきません。いや、正確には拾ってくるのですが、ブレークポイント を置いてF9すると変化します。 ですが、何もしないまま素通りさせると拾ってきません・・・ タイミングの問題なんでしょうか・・・
いやもう少し具体的に・・・ CM_MOUSEENTERでImageList2のindex0のBITMAPを。 CM_MOUSELEAVEでImageList2のindex1のBITMAPを。 となっています。 で、今まで御教授頂いたCODE上でBITMAPを変化させようとしています。 所が、何も変化しなくなってしまいました。 イベントには飛んで来ています。デバッグでは変化は成功しました。 ブレークポイントも何も置かない場合のみ変化しません。 と言う事です。
>>554 TImage::Refresh()で再描画させてみれば?
ちらつくようなら、
ってか、、、、 ここにいる方達は天才ですか? と言いますか、漏れのつたない文章を理解し更に解答まで素早く用意する・・・ マジで天才ですか? いや、言わせて下さい。 出来ました!!!!! と! おいおい、、、漏れの3ヶ月って一体何よ・・・ VBでの . が -> に変わっただけで分からないとか。 ImageListからBITMAPが取れないとか。 なんなんだ、漏れ。 本当に自信を無くしました・・・
これで漏れの殆どの疑問が解決してしまった・・・ 凄い人達もいるもんだ・・・ 世の中広いなぁ〜
A (゚o゚)<よくわからないけど、おめでとう (ー)ー ))
Imageのサブクラスを作成した場合(例えば名前をTMyImageとする)、 これをIDEに登録(Register)してから、Formに貼り付けて使わないと いけませんね。
何から何までありがとうございます。 全然、関係は無いのですがBuilderはINIファイルの書き込み・読み出しとかが遅 いとかを昔MLで聞いた事があるのですが本当なのでしょうか? また、INIに書き込む事が出来ない事があるとも聞きましたが・・・ 他にゲームの設定とかを暗号化したファイルに記憶させたいのですが、私のゲーム はインストーラを使いません。インストーラを使わなくて暗号化したファイルを作 成する事って可能なのでしょうか?
>BuilderはINIファイルの書き込み・読み出しとかが遅 >いとかを昔MLで聞いた事があるのですが本当なのでしょうか? >また、INIに書き込む事が出来ない事があるとも聞きましたが・・・ CBuilder 1 のバグ。といわれると否定できませんが、まずガセでしょう。 どちらの ML でしょうか。
おっと。名無しさんになってしまった... ".ini" で検索した結果を見る分には問題となるような投稿記事を見つけることは できませんでした。 NT で管理者権限云々の話は、OS のセキュリティ機構の問題ですからバグとは いえないでしょう。書込み禁止の FD に書き込めないのはなぜだ?というような 話題ですから。
>>566 申し訳ございません。私も探す事が出来ませんでした・・・
見たと思ったのですが・・・
関係無い事で時間を取らせてしまいました。この場にてお詫び申し上げます。
>>567 Tmeminiですか・・・ 初めて知りますた。
iniファイルが存在してそれを初めに読み込んでキャッシュすると言う認識
で大丈夫なんですよね。
成る程。こう言う物もあるのか・・・ 速そう・・・
全然話は違いますが、ファイルを暗号化する一般的な手法ってご存知無い
ですか? 解読をやろうと思えば何でも出来るので仕方無いのですが、素
人に有効であれば良い程度の暗号化なんですが・・・
XORでもやっとけば?
>>570 う、、、うわぁ〜 む、難しい・・・
ぜんっぜん理解出来ません。これは・・・
Delphiだからとかではなく、、、、 例えBuilderだったとしてもさっぱり・・・
XORの原理から勉強しないと・・・ 漏れの脳みそでは・・・・
572 :
他のプログラムの起動 :02/07/23 17:42
簡単なプログラムランチャーを作ろうと思っています。 あるプログラムから他のプログラムを起動するのってどんな関数 がありましたっけ。DOS時代には子プロセスの起動の関数が あったように記憶しているのですが。。。 よろしくお願いします。
execXX系/WinExec/CreateProces
すんません。またまた質問です。 VBとかで言うPublic変数とかグローバル変数ってBuilderではどうやるん でしょ。hのPublicに記載するんでしょうか。前やろうとした時に全然う まく動作しなくて。 具体的にはForm1とForm2の両方が1つないしは2つの変数の値を参照します。 変数の値により何かを分岐させようと思っているのですが・・・ XOR・・・ 難しいですねぇ〜
>>574 C++とは言わん。最低限Cくらいは勉強しとくことをお勧めする。
とりあえずexternを検索しる。
XORはビット演算知ってれば簡単だと思うが。というか言語ガイド読んだか?
>>574 Form1かForm2のどちからのヘッダーファイルのグローバル部(クラス宣言の外)
に変数を定義する。
もう一方のグローバル部にはexternを付けて変数を外部宣言する。
>>575 そうですよねぇ。VBからCを素っ飛ばしてC++に来ましたから・・・
知識が滅茶苦茶飛んでるんです。
Builderで業務アプリは組んだんですが・・・ ま、小さい小さい物ですが。
どっちにしても知識不足は認識しておりますので、勉強いたします。
ありがとうございます。
>>576 ありがとうございます。スグサマ試してみます。
ウゥ・・・ 拾ってこないっす・・・ Form1のヘッダー・・・ つまり extern PACKAGE TForm1 *Form1; の下に int phensu; と記載しました。 そして、Form2のヘッダー extern PACKAGE TForm2 *Form2; の下に extern phensu; と記載しました。 そして Form1側で phensu = 1; Form2->Show(); として Form2のFormActivateイベントでphensuが1であればこれ、phensuが2であれば これと分岐させようとしました・・・ がphensuは 0 となっており、どれにも引っ掛かりません。 この場合の期待値は 1 です・・・ 何が悪いんでしょう・・・
>>579 ん?俺の所で試してみたけど動くぞ。
--form1.h--
int sema;
--form1.cpp--
void __fastcall TForm1::Label1Click(TObject *Sender)
{
sema = (sema == 1) ? 0 : 1;
Form2->Show();
}
--form2.h--
extern int sema;
--form2.cpp--
void __fastcall TForm2::FormActivate(TObject *Sender)
{
if (sema == 1)
Label1->Caption = "Active";
else
Label1->Caption = "Form2";
}
form1のラベルをクリックする度に、form2のラベルのキャプションが変わる。
すんません。やっぱり漏れの方では動きませぬ・・・ 理由がわからない・・・ 余計なものを除いてとりあえず記載しときます・・・ Form1.h __published:// IDE 管理のコンポーネント private:// ユーザー宣言 public:// ユーザー宣言 protected: }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; int phensu; //--------------------------------------------------------------------------- #endif Form2.h __published:// IDE 管理のコンポーネント private:// ユーザー宣言 public:// ユーザー宣言 __fastcall TForm8(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm2 *Form2; extern int phensu; //--------------------------------------------------------------------------- #endif
Form1.cpp phensu = 1; Form2->Show(); Form2.cpp void __fastcall TForm2::FormActivate(TObject *Sender) { ShowMessage(phensu); if (phensu == 1) { } } 上記のShowMessageでは 0 となりまする・・・ 記載する場所を間違えているのでしょうね・・・ 多分・・・
>>581 うーんこのソースからだけではおかしなところはないですねえ。
強いて言えば"TForm8"かな?TForm2なのに?
どこかいいうpろだ教えてくだされば、こちらで試作したファイルを
まるごとうpしますよ。
>>583 ごみんなさい。Form2ですた・・・
すんません。うpを知らないんですぅ〜〜〜〜〜〜〜〜〜〜〜〜
はふぅ〜 どーしよ
探してきます。
うぅ・・・
>>586 様へ
>>586 様のCodeでは動きます。確かに・・・
でも漏れの方では全然・・・
試作で別の奴を作ってみました。それは動くんです・・・
でも本番の奴では動かない・・・ あぁ・・・ 理由がわからない・・・
こうなると設定がらみでしょうか・・・
念の為に再構築もやってみましたが変わらず・・・
こんな所でつまずくとは・・・
>>588 外してるかもしれんけど、intの前にvolatile付けてみるとか。最適化で
うまくいってないのかもしれないから。
何から何までありがとうございます。 volatileを付けると・・・ 「phensuが複数見つかった」とコンパイラに怒られますた・・・ タイミングとかの問題でしょうか・・・ もしかして・・・
>>590 volatile int phensuは一つだけ、後のファイルは全部
extern volatile int phensuにしてみたら?
こいつは手強い・・・ Form1.h volatile int phensu; Form2.h extern volatile int phensu; としますた。ダメっす・・・ 宣言は上記2つしか今は無いっす・・・
Form1.h側の volatile int phensu = 100; とかにすると100を拾ってこれるんですがねぇ〜 これじゃ〜・・・
メンバとかローカルに別のphensuがあるヨカン
>>594 様
その可能性も疑ったのですが・・・ 今試しに
ppppppphensu
と絶対ありえない変数で試したのですが・・・ やっぱり 0 ・・・
何か不味いんでしょうかねぇ〜
Formが多すぎるんですかねぇ〜
実際のFormは今現在 8つ あり、実際にはForm1 と Form8とのやり取りに
なっています。
多いからダメってのも無いとは思うんですが・・・
>>592 >>593 おかしいねえ・・・・ここまでしたら動きそうなものだが。
どこかにケアレスミスがあると思うよ。
>>595 仕事のファイルでないなら、うpしてみませんか?
>>597 そうですねぇ〜 了解です。先程のうpの場所に上げてみます・・・
ただ、やばめな所は全部削除して置きます・・・
かなりの部分を修正しまくらなくてはならない事がわかったので、そのまま うpしますた。 87番っす。Project1
>>597 って言いますかもろ仕事がらみなんですが・・・ まあどうでもいいっす。
グローバルすら出来なけりゃ仕事もくそもないですから・・・
>>599 >>600 了解です。Getできましたので、もし差し支えがありましたら消しておいて
下さい。今から見ます。
俺、へたれだからグローバル変数使いたいときは ヘッダファイルをインクルードしていた。 この場合は、Unit8.hで #include <Unit1.h> して、Form8.cppの中でUnit1->phensuとしてやると。 これって、純粋な意味ではグローバル変数とは言わないんだろうか? ひょっとして俺は、いままで生き恥を晒してきたのだろうか。。。
borlandのリンカは、重複したシンボルがあっても へいきでエラーなしでリンクしちゃうから、 Form1.hをincludeしてるそれぞれの.cppで べつのアドレス(べつのphensu)を参照してるんじゃないかな。 てゆーかさ、ふつー、.hファイルは extern int phensu; ってかいといて、 どれかひとつの.cppファイル(Form1.cpp)に int phensu; って書いて実体を確保しとくもんじゃないの?
>>602 でも実現出来てるんですよね? 漏れは実現すら出来ないなんて・・・
OH〜 MyGod・・・
>>603 > てゆーかさ、ふつー、.hファイルは
> extern int phensu;
> ってかいといて、
> どれかひとつの.cppファイル(Form1.cpp)に
> int phensu;
> って書いて実体を確保しとくもんじゃないの?
だよな
>>602 Unit1でpublic変数として定義してあれば、どのクラスからも見れますから、
それでもいいんじゃないでしょうか。
この場合、phensuがどのクラスに属するべき変数であるかで、externに
すべきかクラス変数にすべきか決まります。Unit1->phensuでも構わない
と思います。
ところで、バグの原因がわかりました。Unit1.cppの347行目でForm8を
表示していますが、この時点ではphensuは0です。そして、この行は
一回しか呼び出されません。
うpしたファイルってどうやって消すんですかねぇ〜 消し方わからねーー
>>603 >>605 BCBの場合フォーム一つにヘッダファイル一つが作られますから、
どちらでもいいと思います。
603さんのようにするには、すべてのフォームからインクルードする
ヘッダファイルを一つ作り、そこにextern宣言することになります。
>>607 画面の下に記事No.と削除キーを入れる所がありますので、そこに入力して
記事削除ボタンを押せばいいと思います。
>>606 誠に申し訳ございません!!!
283行目の方です・・・ で、「翌年」を押すと問題のForm8に飛びます・・・
紛らわしくてすいません・・・ です・・・
>>610 そうなんですが、「翌年」を押した時、最初の一回目は347行も実行されるん
です。mmonth==0だからでしょう。その時におかしいのだと思います。
「翌年」を二回目以降押すと、ちゃんと1になっています。
>>609 すいませんでした。下の方に削除ボタンがあるのを見落としておりました。
ご迷惑をお掛け致しました。
>>611 ぐわぁ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
本当だぁ〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
完全なロジックミスと言う事だぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ
なんとなんと恥ずかしいぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃ
つまり、280行でImage21Click()を呼び出していますが、Image21Click()の 347行目でphensu=0のままForm8を表示してしまっています。
????????????????????????? あれ? 何にもしてねーのに拾うようになったぞ? 何かしたかな・・・ F9押してコンパイルはかけたが・・・ あれ?あれ?あれ?あれ?あれ? 何故? どうして?
とりあえず茶でも飲んで落ちつけ 旦~ 旦~ 旦~ ヽ )ノ ビュンビュン 旦~ ⌒(゚д゚)ノ 旦~ /. ( ヽ 旦~ 旦~ 旦~
とりあえず・・・ 落ち着きます・・・ ふぅ〜 ってよく見たら、347行目近辺をコメントしてしまっていた・・・ もうアフォかと・・・ 何やってんだか・・・ ってかこれって会社で出すゲームなんだよな・・・ やっちまった・・・
みなさん、いろいろとありがとうございます。
まぁ、自分がやっていた方法もBCBに
かぎっては(?)あながち間違いでも無いようですね。
ただ、正直なところexternの方法は知らなかった(恥)ので
ちゃんと勉強して使い分けられるようになりたいと思います。
>>510 色々大変そうだけど頑張ってくださいね。
おかげさまで、自分も勉強になりました。
(´・Д・`) b グッドラック
>608 その通り、Form1つにつき.h1つだけどさ、 Form1内でForm2を使う時はForm2.cppでForm1.hをincludeするでしょ。 もちろん、その逆も。 そういう部分(.h)にextern無しの変数を宣言するなんて信じられないね。
>>621 うーむ、確かにCやC++の基本に忠実に沿えば、その通りですね。
私は他のフォームからどこかのフォームのヘッダファイルをインクルード
するなんて事はしてませんでしたから、今まで問題なかったようです。
これから気をつけます。
> 私は他のフォームからどこかのフォームのヘッダファイルをインクルード > するなんて事はしてませんでしたから、今まで問題なかったようです。 これって、動的なフォーム生成すらやったことがないってことですね。
>>619 頑張ります・・・ こんな所でつまずいてばっかりですけど・・・
ギャグですね・・・ もはや・・
>>623 仕事で使ったことがないもんですから・・・・・・
まさにBCBは遊びのツール。でもC++は真面目に勉強してるぞーーー!!
どうもDelphiの快適さから抜け出すのに時間がかかりそうです。
>625 Delphiではusesに含めなくても他のフォーム(Unit)や そのUnitに含まれる関数・グローバル変数等を使えるのかい? てゆーかさ、Formに限らないけど、値の受け渡し等にinclude必須じゃん。 むしろ、includeしないで効率良くインスタンス間でデータが渡せるなら教わりたいよ。 (メッセージとかファイル/パイプ経由とかは無駄が多すぎ) これがコンパイルを遅くしてる大きな原因なんだから。
>includeしないで効率良くインスタンス間 コンポーネント型継承なら、実行型情報を使うといいよ 毎回検索したら遅いから、 メソッド名やプロパティ名は 最初に検索しておくといい
>>606 様
お礼を申し上げておりませんでした。ありがとうございました。
本日「は」快適に作業させて頂いています。
>>627 Delphiはヘッダーファイルという概念がないので uses文で取り込む
コンポーネント等を指定しますが、その癖が抜けてなかったのです。
C/C++のexternは概念的には理解しているのですが、やはり実際に
使わないと覚えられませんね。
>>628 dynamic_castを使うのですね。Senderを動的キャストして使わなけれ
ばならない場面がたくさんあり、Delphiの is や as と似ていると思いま
した。
>>629 いえいえこちらこそ大変勉強になりました。プロジェクトが無事完結す
るといいですね。
皆様、MDI子フォームをnewで生成させる時、コンストラクタへ渡すOwner引数には 何を渡しているでせうか? そのイベントハンドラを所有するフォームのOwnerプロパティ? Application変数?メインフォーム?それともNULL? その辺がまともな発想の範囲だと思いますが、 今回の仕事の前任者は、平気でMDI子フォームをOwnerに指定しまくっています。 個人的にはとっても気持ち悪いのですが、急ぎの仕事なので 明らかな弊害がなければ放置したいです。 とりあえず、「Owner消滅でそのフォームのOnCloseやOnDestroyが走らない事による弊害」 はないのが判明しているので、そういう甘えた気分でいるのですが・・・ 皆様のご意見をお待ちしております。
・・・簡単なサンプルを示しますと、こんな感じです。 TMainForm *MainForm; //メインフォーム に TFirstChildFormやTSecondChildForm等の子フォームクラスがあったとします。 んでもって、こんな感じです・・・ void __fastcall TFirstChildForm::Menu1Click(TObject *Sender) { TSecondChildForm *s = new TSecondChildForm(this); } これでいいのか〜?と思う次第であります。
フォルダのアイコンをドラッグして自作プログラムに受け入れさせたいのですが 方法がわかりません。 VCLコンポーネント同士ならいろいろできるのは分かっているんですが、、 受け入れる情報は元ファイルのフルのパス名だけで十分です。
うわ、どんぴっしゃりの例がでています。ありがとう >634
またまたまた教えてくらさい。 TreeViewの背後にBitmap等のイメージを貼り付けるのはどうやればいいん でしょ。背後が白ではちょっとみっともないので・・・
ヘルプのTCustomTreeView.OnCustomDrawの「例」
ありがとうございます。スグサマ試しました。 背景は確かに描画されましたが、Node回りが白くなってしまいます。 で、CustomDrawItemを調べたのですが、、、、 これがよくわからない・・・ HELPを見るに、自分で全て描画処理をしなければ行けないと言う事は理解出来た のですが・・・ こんな感じで訳分からん状態っす。 TRect NodeRect; DefaultDraw = false; NodeRect = Node->DisplayRect(true); TreeView1->Canvas->FillRect(NodeRect); NodeRect = Node->DisplayRect(true); TreeView1->Canvas->Brush->Style = bsClear; NodeRect.Left = NodeRect.Left + (Node->Level * TreeView1->Indent); TreeView1->Canvas->TextOutA(NodeRect.left,NodeRect.Top,Node->Text); やりたい事はアイテム回りが貼り付けた背景と同化したいと言う事っす・・・
しまつた。これがDraw関連のコードです・・・ void __fastcall TForm1::TreeView1CustomDraw(TCustomTreeView *Sender, const TRect &ARect, bool &DefaultDraw) { TCanvas *pCanvas = TreeView1->Canvas; pCanvas->StretchDraw(ARect, Image14->Picture->Bitmap); DefaultDraw = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::TreeView1CustomDrawItem(TCustomTreeView *Sender, TTreeNode *Node, TCustomDrawState State, bool &DefaultDraw) { TRect NodeRect; DefaultDraw = false; NodeRect = Node->DisplayRect(true); TreeView1->Canvas->FillRect(NodeRect); NodeRect = Node->DisplayRect(true); TreeView1->Canvas->Brush->Style = bsClear; NodeRect.Left = NodeRect.Left + (Node->Level * TreeView1->Indent); TreeView1->Canvas->TextOutA(NodeRect.left,NodeRect.Top,Node->Text); }
>>639 > TreeView1->Canvas->FillRect(NodeRect);
↑の代わりにCopyRectでビットマップを描画しないといけないのでは。
でも、TreeViewの背景にビットマップを表示するのはちょっと大変そう。
ヘルプにも
「背景ビットマップの描画は実際に CustomDraw によってサポートされていないため,〜」
って書いてるし。
>>640 何気に難しいんすよ・・・ 無地の白で行こうかなんて思ってたり・・・
でも画面のバランス的にはやっぱりまずいんですよね・・・
ってかずっとやってるのに未だに・・・
642 :
デフォルトの名無しさん :02/07/26 14:30
BCB6のStrUtilsを使うには何をincludeすればいいのでしょうか? VB6からの移植で、LeftStr等の関数を使うと対比・確認がやり易くなるかと思ったんですが、 コンパイル時に「E2268 未定義の関数 'LeftStr' を呼び出した」と言われました。
>>642 #include <StrUtils.hpp>
>>642 事故レス、スンマソン見つかりますた
#include <strutils.hpp>
でした。
回線切って(以下略
646 :
デフォルトの名無しさん :02/07/26 23:32
Personal版だと、シェアソフトとか作っちゃダメなのかな??? Professional版は、60000かぁ〜・・・ 高い・・・・俺には買えない・・・・
>>646 シェアウェア作って売れれば元なんてすぐ取れるんですけど・・・・
648 :
デフォルトの名無しさん :02/07/26 23:41
649 :
デフォルトの名無しさん :02/07/27 00:09
>>647 ベクターに登録後、DL件数550件余
未だに購入どころか要望やら批判やらも含めて何のメールも来ない。
きっと、シェアウェアとか言いながら、何の制限もかけてないせいだと思いたい。
>>649 それは寂しいね。あなたのソフトの質は高いのだと信じたいが、それに
しても冷たいユーザーだな。
何のメールも来ないってのは、ちょいさびしいな。
ワザと目に見えるバグを仕込む。これ最強。
653 :
デフォルトの名無しさん :02/07/29 05:02
すみません。Tableに手を出して行き詰まっています。 Delphiでは、DataSet.Fields[i].OnValidate という風に、入力値チェックの イベントを呼び出すことができました。 しかし、BCBでは、TFieldsオブジェクトにValidateメソッドはありません。 だから、 DataSet->Fields[i].Validate() と書くとコンパイルエラーに なってしまいます。これをどう解決したらよいのでしょうか? それから、Delphiでは、イベントハンドラの有無を Assigned関数でチェック できましたが、BCBでは同様のチェックをどのように行えばよいのでしょ うか? よろしくご指導のほどお願い致します。
TFieldsにはValidateメソッドはないが TField には Validateメソッドはある DataSet->Fields[i].Validate() は2つの間違い 1、DataSet->Fields[i] は参照ではなくポインタを返す 2、Validateには・・・ヘルプをみろ Assignedは、Delphiでは 引数無しのメソッドは () を付けないので if xx.Onxx=nil then のように書くとOnxxxメソッドが呼ばれてしまう場合があるから必要なんだけど C++では必要ない CのようにNULL と比較してもいいし 論理型にポインタ型が代入される時の仕掛けを利用してもいいし
655 :
デフォルトの名無しさん :02/07/29 14:10
>>654 レスありがとうございます。
結局、次のような方法で動くようです。
1.関数が登録されているかどうかチェック
if (&DataSet->Fields->Fields[i]->Validate)のように、関数のポインタ
のアドレスをチェックする。
2.OnValidateの呼び出し
DataSet->Fields->Fields[i]->Validate(reinterpret_cast<void *>(&DataSet->Fields[i]))
しかし、まだ疑問が残ります。
2.で、確実にValidateが呼び出されているのかどうか、それから、実際の
フィールドにフォーカスを当てても、変更不可能となっていることなどです。
ここら辺の情報について、ヘルプでは情報不足で、BCB関連の書籍もない
ので、迷っています。
656 :
デフォルトの名無しさん :02/07/29 17:48
>>655 また間違えてました。
1.関数が登録されているかどうかチェック
if (DataSet->Fields->Fields[i]->OnValidate)のように、関数のポインタ
のアドレスをチェックする。
でした。Validate()は必ず存在しているので、この関数のアドレスをテスト
するのは無意味でした。
しかしこれも合っているのかどうか怪しいです。
>>655 2,は関数呼び出しスタイルになっているので 確実に関数が呼ばれます
658 :
デフォルトの名無しさん :02/08/01 20:12
>>657 亀レススマソ。
Validate()が void * を受け取る仕様になっているため、確実に実行
されているかどうか確かめるすべがないのです。
DelphiをC++に移植する時点で生じた食い違いだと思いますが、
だましだまし使っていこうと思います。
それにしても、マニュアルなりヘルプなりにValidate()の詳しい説明
があってもいいのに( ´Д⊂ヽ。
> 確実に実行されているかどうか確かめるすべ というのは、Delphiで言うとどんなコード? Delphiのコードで説明しても結構ここの人はわかるかもよ。
660 :
デフォルトの名無しさん :02/08/01 23:46
>>659 ありがとうございます。
実はDelphiオフィシャルコースウェア基礎編P276のコードをBCBに移植して
いてつまづいたものです。
元のコードは、
if Assigned(DataSet.Fields[i].OnValidate) then
try
DataSet.Fields[i].OnValidate(DataSet.Fields[i]);
except
DataSet.Fields[i].FocusControl;
raise;
end;
というものです。DelphiではOnValidateという述語にいろんな意味が持たせて
あるようですが、BCBでは厳密になっており、このような書き方はできません
でした。
もしわかりましたらご指導の程宜しくお願い致します。
こうだろうか。 if (DataSet->Fields[i]->OnValidate) { try { DataSet->Fields[i]->OnValidate(DataSet->Fields[i]); } catch (...) { DataSet->Fields[i]->FocusControl(); throw; } }
if (DataSet->Fields->Fields[i]->OnValidate /* != NULL */) でないかな。
>>661 私も最初はそのように書いたのですが、BCBのFields[]はTFields*型で
あって、TField*型でない(非常に紛らわしい)ので、OnValidate()メソッド・
イベントはメンバにないのです。
なぜこのような仕様になっているのかわかりません。
DataSet->Fields->Fields[i]のようにするとTField*型になってうまく行く
ようです。これで少し試してみます。どうもありがとうございました。
>>662 あっ、答えてくださっていたのですね。ありがとうございます!
TStringsやTxxxItemsなんかも、 同じようにStrings->String[i]や、Items->Item[i]で参照する。 Delphiのpropertyが、沿え字つきの間接参照を 一段省略出来る構文になっているんだと思う。
Σ(゚д゚ |||)ガーン
>>662-663 そうなんだ。
途中のバージョンで変わったみたいね・・・
(BCB3はTFields型がなくて
>>661 でOKだったの。)
>>665 なるほど、そういうふうに解釈すると筋が通りますね。
Delphiの参考書と首っ引きで悩んだ末に出した答えが偶然合って
いたのか・・・・これからは論理的に理解して書けます。嬉しいです。
>>666 昔はそうだったのですね。BCBは6から初めて使っているので、
まだ全然わからないのです。Delphiと、C++を頭の中で融合させる
のに必死になっています。
668 :
デフォルトの名無しさん :02/08/03 11:18
Canvas->TextOutと入力すると、コード補完でTextOutAと出る のですが、これは仕様でしょうか?
>>668 変だね TextOutA は WindowsAPIだと思うんだけど
>>669 そうですよね。で、TextOutAのままにしても、Aを削ってTextOutに
しても、どちらでもコンパイルは通って、実行も正常です。
たぶんwindows.h をインクルードすると WinGdi.hで #define TextOut TextOutA てな定義がされている為 TextOutAを定義していないというエラーが出るのを防ぐ為に どこかで誰かが TextOutAから TextOutへのJumpをさせてるのだと思うけど どこで誰がやってるのかが判らないな
>>671 検索で"TextOut"を探してみましたが、どうもよくわかりません。
Vclフォルダのどこかにあると思うのですが。
自動補完でそうなるということは、何か意味があるのでしょう。
どぉこかで〜 誰ぁれかがぁ きぃっと待ぁって いてくれる〜 雲は焼け 道は乾き 日はいつまでも沈まない 心は昔死んだ 微笑にはあった事も無い 昨日なんか知らない 今日は旅を一人 けれどもどこかでお前は待っていてくれる きっとお前は風の中で待っている どこかで誰かがきっと待っていてくれる 血は流れ 川は裂ける 痛みは生きている印だ いくつ峠を越えた どこにも故郷はない 泣くやつは誰だ このうえ何が欲しい けれどもどこかでお前は待っていてくれる きっとお前は風の中で待っている
SP1はいつでるんだろう・・・
>>675 8月は Kylix3 で忙しいから無理じゃないの?
今四半期(9月末まで)は Kylix3 なんでしょ?それともいっしょにパッチがでる?
lokiがBCCで使えるようになったとか聞いたけど 何処で落とせる???
678 :
デフォルトの名無しさん :02/08/07 08:28
おはようございます。 TFormコンストラクタのDFMリソースを必要としない形 TForm(Owner, int) を使って新規フォームを作成し、そこにいろんなコントロールを貼り付ける 実験を行っています。 ここで疑問なのですが、各コントロールも new で生成していますが、 各コントロールのParentプロパティに親フォームを指定しておけば、親フォー ムを delete した時に貼り付けた子コントロールも自動的に delete される のでしょうか?それとも、一個一個 delete しなければならないのでしょうか。 ご指導宜しくお願い致します。
>>678 TControlのParentと、TComponentのOwnerのヘルプ見て違いを叩き込め。
680 :
デフォルトの名無しさん :02/08/07 10:25
>>679 レスありがとうございます。早速ヘルプを見てみたら、Ownerプロパティに
「オーナーのメモリが解放されると,その所有コンポーネントのメモリも解放される。
したがって,フォームが破棄されると,そのフォーム上のすべてのコンポーネント
も破棄される」
とありましたので、TFormがOwnerであると、その上に配置されたコントロールの
破棄はTFormに任せてしまってよいようですね。
また一つ勉強になりました。
682 :
デフォルトの名無しさん :02/08/07 12:08
>>681 BCB5の時は一週間もかからなかったように記憶している。
BCB6で作成した実行ファイルって、 素のWin98だと「欠落エクスポート」ってエラー出て動かないんですけども、 SP1あてれば直りますかね? っていうか直ってくれないと使えないよ(泣
>>683 implibで該当DLLのインポートライブラリ作り直せば?
レスありがとうございます。 implibでoleaut32.dllのインポートライブラリを作ってリンクさせてみましたがダメですた。 おとなしくBCB5使ってます。。。(シクシク
>素のWin98だと「欠落エクスポート」 686 はガセ。 具体的な欠落しているエクスポート名は? 関連する情報をひとつ知っているけど Win95 の問題であって Win98 なら 出荷版から問題なかったはずなので。
素のWin98で起動すると以下のメッセージがあらわれます。 ********.EXE は 欠落エクスポート OLEAUT32.DLL:173 にリンクされています。 173は10進表記ですかね? だとすれば、VarRound だと思います。 Win98のOLEAUT32.DLLには存在しないです。
>>688 173 は VarNeg だぞ。俺のは 98 2nd edition だが.
こんな基本的なのが落ちている。ってことは
ないとおもうんだが。
失礼しますた。 VarNeg でした。 でもやっぱり Win98 の OLEAUT32.DLL には存在しません。 ちなみに dll のバージョンは 2.20.4122.1 です。
>>690 すまん。このスレ見落としてた。
俺のは
2.40.4518.0
だいぶ進んじゃってるね。コモンコントロールアップデートかけてみたら?
ん〜boost最新版のRegex使えないのは何故? BCCDevつかってBCC単品だけで使うのには大丈夫なのに・・・
693 :
デフォルトの名無しさん :02/08/12 10:10
ほんとだ。でも6もってないや ⊂⌒~⊃。Д。)⊃
あら?日本語版は1個も出てないのか どういうこっちゃ ⊂⌒~⊃。Д。)⊃
Borland Japanも盆休み。
699 :
デフォルトの名無しさん :02/08/12 11:45
Update1に不具合が見つかったので日本語版はより完全にしてから 出すんじゃない?ねえ某。
BCB7が出た後に提供いたします。
701 :
デフォルトの名無しさん :02/08/12 11:56
>>699 日本語 BCB6 は最初から Update1 の修正を反映しております。
が正解。US Update1 の日付、よく見てみ。
日本語 Update2 は盆明けの気がするよ....
>>692 Update2 で、コンパイラと STL が置き換わっている。
アップデートしてからやってみたら?
>702 日本語 Update2 は盆明けの気がするよ.... 関係者? 某はここ見てるからなぁー
Up2になったらregexとかもう一度ビルドしなおさなきゃいけないのかなぁ? (コンパイラいれかわってるなら
そのほうが安全だと思うけど?
>>707 そうですかぁ やりなおします
UP2でどれくらいの標準準拠度になるか楽しみ
完全準拠はBCB7でといってるから完全にはならないだろうけど…
709 :
デフォルトの名無しさん :02/08/16 03:10
Format関数で悩んでいます。 Delphiにはポインタ値という表現がありましたが、BCBで %p で表示 しようとすると、 「書式文字列 '%p' は正しくないか引数の型と一致しません」 というエラーダイアログが出てしまいます。 表示行は const AnsiString CR = "\x0d"; char buf1[256], *pbuf, buf2[256]; strcpy(buf1, "ABCDEFG"); pbuf = buf1; Label4->Caption = Format("buf1のアドレス = %p" + CR + "pbufから見た文字列の先頭アドレス = %p", ARRAYOFCONST((reinterpret_cast<int>(buf1), reinterpret_cast<int>(pbuf)))); と記述しています。書式文字列が "%.8x" だといいみたいなのですが、BCBでは ポインタ値を使えないのでしょうか。
BCBっつーかCの仕様にないでしょ。 あと、両方の値は同じになって正しい?
711 :
デフォルトの名無しさん :02/08/16 03:24
>>710 レスありがとうございます。
"%.8x" にすると、どちらも 0012FF80 と表示されます。
オープン配列の概念が今ひとつつかめないので、ポインタ値という
表現にとまどっているのです。
このARRAYOFCONSTというマクロもくせ者で、unsignedにキャスト
して渡すとエラーを起こします。それは今回はいいのですが。
ということは、BCBでは "%p" という形式文字列は無意味だと考えて
よいのですね。
んお、ちとまった。今ヘルプ見たら、確かに%pというのがあった。 とりあえず、ARRAYOFCONSTなるマクロを使わずに、そのままbuf1,pbufを渡してみ。
あー、ダメだ、俺。ごめん、もっと詳しい人来るまでまって(;´Д`)
どうやら自己解決しました。 Format関数にはTVarRec型のオブジェクトを渡してやる必要があるの ですが、このTVarRecの宣言が systvar.h 内でされていました。 このヘッダーファイルをじっくり読むと、Pointer型にキャストすれば いいようです。 ARRAYOFCONSTマクロは必要です。もしくは、TVarRec型の配列を 自分で作って渡す必要がありますが、どちらも同じことになります。 unsignedでうまくいかないのも、Integer型しか宣言されてないためでした。 下にうまく動いた記述を書いておきます。 Label4->Caption = Format("buf1のアドレス = %p" + CR + "pbufから見た文字列の先頭アドレス = %p", ARRAYOFCONST((reinterpret_cast<Pointer>(buf1), reinterpret_cast<Pointer>(pbuf))));
できました(;´Д`) const AnsiString CR = "\x0d"; char buf1[256], *pbuf, buf2[256]; strcpy(buf1, "ABCDEFG"); pbuf = buf1; TVarRec v[] = { (Pointer)buf1, (Pointer)pbuf }; Memo1->Text = Format("buf1のアドレス = %p" + CR + "pbufから見た文字列の先頭アドレス = %p", v, ARRAYSIZE(v) - 1 );
あら
>>716 すみませんわざわざありがとうございます。
ここの所VCL対応のソースを書くためにBCBを勉強しているのですが、
あちこちつぎはぎだらけという印象ですね。
C++だからなんとか格好はついたものの、ユーザーに負担を強いると
いう形になっているようです。
まあVCLはObject Pascalで呼び出されることを前提としているので、
全く他の言語であるC++から自由に呼び出せるという事自体驚異的な
事なのかもしれませんが。
Formatより個人的には AnsiString::sprintf/printfの方が好きかな Formatを使うのとどっちがいいのかなぁ? でも普段はstd::ostringstreamだからあんまり使わないけど・・
>>719 Delphiとの互換性を無視するなら、sprintf/printfの方が多機能で、C言語の
書式文字列にも準拠しているし、慣れていて使いやすいですね。
721 :
デフォルトの名無しさん :02/08/16 20:30
AnsiStringのdata()メソッドについて質問です。 次のようなプログラムを走らせると、Edit1->Textに2〜3文字しか入れて ないのに、無意味なデータを表示する巨大なメッセージボックスが現れて しまいます。 data()メソッドをc_str()メソッドに変えても同じです。何がいけないのでしょ うか。 LPCTSTR lpName; AnsiString ss; lpName = static_cast<const char *>(Edit1->Text.data()); for (const char *p = lpName; *p; p++) ss.cat_sprintf("%02x ", *p); ShowMessage(ss);
TEditのTextプロパティは、実際にはTControl::GetTextメソッドで実現されています。 で、GetTextがAnsiStringを返しますが、どこにも代入してないので すぐにデストラクタが呼ばれて実体はなくなります。 「data()で取得しているのは、まだ有効であった時代のアドレス値」であり、 実体が無効になった後には何が入っているかわかりません。
forで回してしまうとlpNameが保証されないんじゃないかなぁ? ShowMessage(lpName);を取得直後と最後に呼べば分かるけど。
724 :
デフォルトの名無しさん :02/08/16 21:05
>>722 なるほど。ということは、Textプロパティにdata()を使うのはいけないみたい
ですね。一度AnsiString型の変数にTextを代入して、それに対してdata()
を使ってみます。
実はあれからいろいろ試行錯誤して、GetTextBufというメソッドを使って
うまく行ったのですが、LPTCSTRが使えなくなり、あまり綺麗とは言えない
プログラムになっていました。
>>723 ちょっと意味がわからないのですが、lpNameは変化させてないので、
大丈夫じゃないでしょうか。
。|. | |。 |゚ y ゚| | |io i| 。| ゚i| 。i|,,ノ |i. i|゚ ||゚ /ii 。 ゚|i_/゚ `ヽoー|i;|y-ノ ,;:i´i;ノ , , 圜 ('';ii'' , , ’ ‘ ノii;;.i| ||\/|\/|\/|| ii\. ∧_∧ ||::::.|;;;;|:::::|;;;;;|::::|;;;;;|| ,;;iiiイ( ´∀`)δ....||:::::|;;;;|:::::|;;;;;|::::|;;;;;|| ;;:iiii+ii:( つ□つ┃ . ! ::;;|:::::|;;;;;|::::|;;;;;|| iiiイ+ ,,と_)__)、 旦~::;;|:::::|;;;;;|::::|;;;;;|| ⊂ニニニニニ⊃| ̄ ̄|::|:::::|;;;;;|::::|;;;;;|| | ̄ ̄|
726 :
デフォルトの名無しさん :02/08/17 23:23
点滅するカーソルをTCanvas上で実装するにはどうしたらいい? タイマーで処理?
727 :
デフォルトの名無しさん :02/08/18 00:39
オーナーのないインスタンスを動的に生成するには、コンストラクタの 引数に 0 を与えればいいんですか?
Applicationじゃダメなの?
729 :
デフォルトの名無しさん :02/08/18 01:05
>>728 実はDLLの中から生成するんです。こういう場合もApplicationで
よろしいですか?
>>729 ちなみに何のインスタンス?
もちろんVCLだよね?
>>730 ありがとうございます。TDataModuleです。引数無しでコンストラクタを
呼び出すとコンパイルエラーになります。
AnsiStringのメンバ関数であるsprintf()を生成時に使うには、 AnsiString().sprintf(...) のように書いてもよいでしょうか。
733 :
デフォルトの名無しさん :02/08/18 03:20
Win32の質問になるかもしれませんが・・・・・ BCBで作成したDLL内の関数をGetProcAddressで得ようとすると、 見つからないようなのです。 C++だから名前マングリングがなされているのでしょうか。
_____________ ∧,,∧ /Delphiで _ ミ,,゚Д゚彡_< DataModule1 := TDataModule1.Create(nil); .=| |==U==U=| |= \としても正常動作してますが、、、 | |@ミ ミ .| |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | ∪''∪ | | もちろんDLLからです。 | | | |
>>734 やっぱりDLLはApplicationオブジェクトがないので 0 もしくは nil とするしか
ないですよね。
733です。 いやーぐぐったら、GetProcAddressはC++の時は結構厄介ですね。 予想通り名前マングリングが起きて、関数名が化け化けになっていま すので、この「化け化け」を渡さなければなりません。 名前マングリングを避けるには、モジュール定義ファイルのEXPORTS セクションに生の名前を書かなければなりませんね。ちょっとしたDLL の実験の時はこういう面倒を避けたいのですがなかなか。
>>735 dllでもApplicationオブジェクトありますけど…。
Controls.pasのソース参照。dllだろうが何だろうが問答無用で作ってます。
ただし、dll側はハンドルを持たないので、*.exe側のApplication.Handleを
dll側のApplication.Handleに渡してやると、ダイアログなんかが協調動作してくれるみたいです。
(実験したことは無いですけどね)
今週中にSP出るかな〜期待
>>738 でない。
..実は英語版ではなく国際対応版で、パッチに日本語の Readme が入っていることは秘密にしておこう。
ゆっくり日本語のインストーラーがでるまで我慢しなさい > 738
740 :
デフォルトの名無しさん :02/08/22 02:21
AnsiStringの入出力で質問です。 dstring.h を include すれば、istreamとostreamの<<演算子と>>演算子に AnsiString型を適用できますが、ifstreamとofstreamはだめのようです。 ofstreamはc_str()メソッドを使うとして、ifstreamはやはりstringに一旦 代入しておいてからAnsiStringにコピーするしかないのでしょうか。
742 :
デフォルトの名無しさん :02/08/22 05:46
C++Builder5での質問です。 例えば、TRichEdit型のウィンドウに「aaababaabaaa」と描画し、 「b」だけを赤くすることはできますか? 巧いやり方が思いつかないので助けて頂けると嬉しいです。 どうか、よろしくお願いします m(--)m
>>742 RichEdit->Lines->Textを適当なAnsiStringの変数に入れる
AnsiString::Posメソッドを使って b を探す
見つかった位置の文字色を赤にする
(TRichEdit::SelStart,TRichEdit::SelLength,TRichEdit::SelAttributesあたりHelpで見ればわかる)
744 :
デフォルトの名無しさん :02/08/22 11:34
>>740 そう思ってdstring.hの中身を覗いてみましたが、やはりistream用と
ostream用の>>と<<しか定義されていません。
それから、AnsiString.operator=(std::string)も定義されてないので、
AnsiStrng = string; とすることもできない事がわかったので、仕方
なく char[] に代入しておいて AnsiString(char *); で作っています。
困りました。
>>744 ifstreamはistreamをofstreamはostreamを継承しているから
出来ないはずがない。ということ
もしコンパイラの不具合かなんかで出来ないならキャストしてみな
それからincludeする順番としてvcl.h(dstring.h)をincludeする前に
iostreamをincludeあるいはVCL_IOSTREAMを定義しないと
AnsiString用のoperator<<はコンパイルされなくなっているが
それは大丈夫か?
C++Builder5で map<AnsiString, AnsiString>にoperator[]を使って要素を追加しようとすると アクセス違反が発生してしまいます。 付属のSTLとSTLPortどちらも駄目でした。 C++Builder3では大丈夫なのですが。 これはバグなのでしょうか?
C++Builder6では特に問題ないなあ
>>745 レスありがとうございます。
うーんやっぱりだめのようです。
VCL_IOSTREAMを定義しても、dstring.hの前にiostreamやfstreamを
持って行っても、istreamとostreamはAnsiStringを受け付けますが、
ifstreamとofstreamは受け付けてくれません。
>>748 ではキャストするとどうなる?
std::ofstream ofs("hoge") ;
dynamic_cast<std::ostream&>(ofs) << "korededouda" ;
750 :
デフォルトの名無しさん :02/08/23 02:19
>>749 だめでした。「ostreamにはAnsiStringのための定義が存在しない」だそう
です。何か根本的に間違っているような・・・・
>>743 レスありがとうございます。
全部の色を変えるのは分かるんですけど、
任意の文字だけ変えることも可能なんでしょうか?
秀丸とかを見てると可能っぽいんですけど、
文字数が多くなっても処理が重くなりませんか?
>>751 ほとんどの高機能エディタはRichEdit等を使わず自前で描画してると思う。
753 :
デフォルトの名無しさん :02/08/23 10:05
TNMFTPで取得したリストに年が含まれていないのですが、 どうすれば年を取得する事ができるのでしょうか?
754 :
デフォルトの名無しさん :02/08/23 10:26
はじめまして Builderマスターのかたがた Builder好きですが 今度の仕事に使うか迷っています。 一番の イヤな部分は例外処理が自動的(?)に出る部分です。たとえば TNMFTPでConnectエラーで勝手にでるダイアログですが出ないように することはできるのでしょうか? Handled=trueにしても出てしまうです
755 :
デフォルトの名無しさん :02/08/23 10:47
>>754 こんにちは、ちょうどTNMFTPの話題をしているので
ちょっとお聞きしますが
>>753 ってわかりますか?
>>754 TNMFTPは使ったことないけど
ツール/デバッガオプション/言語固有の例外/Delphi言語の例外で停止 or C++言語の例外で停止
辺りかな?
757 :
デフォルトの名無しさん :02/08/23 10:59
>>756 ありがとうございます。
ただ、例外はとまりましたが ライブラリの親切ダイアログは
まだでるようです。TJpegだとJPEGエラーとか、TNMFtpだと
"530 login inc..."とかです。これらを消したいのですが
どのようにすればよいのでしょうか?
try...catchで囲んでればダイアログが出るのは デバッグ時だけだと思うんだけど(JPEGはそうでした) それも出したくないということかな
>>757 全然理解してなかった。
try〜catchで例外処理してしまうというのはどうかな?
Delphiですまんが、以下のようにしたらダイアログはでなかった。
procedure TForm8.Button1Click(Sender: TObject);
begin
try
NMFTP1.Connect;
except
end;
end;
うっ、かぶった・・・
761 :
デフォルトの名無しさん :02/08/23 11:32
おいおい、おまえら
>>753 誰かわかる奴いねーのかYO
つーか、
>>754 は聞くだけで、人の質問には答えねーのかYO
_________ /∴∵∴ヽ |∵∴∞ヽ| _____________ |∴/= ♀=| <使ったことねーからわかんねーよ! \| ▽/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄
763 :
デフォルトの名無しさん :02/08/23 11:39
そ、そうか・・・ んじゃーしょうがないな、
ありがとうございます。早速ためしてみます。
>>761 すみません CBuil初心者ですので。他のスレでわかる範囲で
質問には回答するようにしてます。
766 :
デフォルトの名無しさん :02/08/24 03:29
ァハ(*´Д`)DirectX使っている人います? SimpleX,UDX,DDDDなどが動かせるみたいだけど どれがイイんでしょうか。 いちお、SimpleXとUDXのサンプルを動かすことに 成功しやした。DDDDは本日中には・・・
767 :
デフォルトの名無しさん :02/08/24 07:27
Borland C++ オフィシャルコースウェアってバージョン4までしか出版してないな。 5を出版してくれないのか。
768 :
デフォルトの名無しさん :02/08/24 07:29
↑ Builderの誤りだった
______ /_ | /. \ ̄ ̄ ̄ ̄| / / ― ― | | / - - | ||| (6 > | | | | ┏━┓| / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | | | | ┃─┃| < DirectXは使ってるけど、正直そういうライブラリは未経験。 || | | | \ ┃ ┃/ \_________________________ | || | |  ̄  ̄|
C++Builder使おうか迷ってるんで質問させてください Q1 VC++と比べて「良いところ」と「悪いところ」は? Q2 C言語もコンパイルできますか? Q3 フリー版はありますか?(BorlandC++はフリーありますよね)
771 :
デフォルトの名無しさん :02/08/25 02:35
BCBしか使ってないので 両方使ってる人の意見をネットから適当に抜粋 > こうして並列して使っているとお互いが一長一短なのがよくわかる。 > エディタ、デバッカとしての使い勝手はVC++がはるかに上だが、 > BCBのGUIエディタを使った後ではVC++のリソースエディタとクラスウィザードはガキのおもちゃにしかみえぬ。 > でも、コンパイルはVC++の方が早いのだよなあ。 他にはこんな感じ > 本やネット上の情報量はVCのほうがずっと多い。 > 最適化はケースバイケースだが一般的にはVCが上。 > ANSI 準拠度はBCBのほうがだいぶ上。 と、やはり一長一短のようで。 (´-`).oO(そのうちVCも買お あとフリー版は無いけど、体験版(英語)アリ。
>>772 > でも、コンパイルはVC++の方が早いのだよなあ。
使うのやめます。(w
>あとフリー版は無いけど
試すのやめます。(w
そーそー。 C Builder なんかメリット無いんだから使うのやめな。
Delphiのほうがいいよ
>>770 C言語初心者ならBuilderはオスメス。
ツール類が恐ろしく簡単に出来ますYO!
(V)∧_∧(V) ヽ(・ω・)ノ フォッフォッフォッ . / / ノ ̄ゝ . (V)∧_∧(V) ヽ( )ノ フォッフォッフォッフォッ . / / .......... ノ ̄ゝ
BCB5&Win2000(SP2)使ってます Cマガジン9月号の記事を見てタスクトレイにアイコンを 表示することに挑戦しています。 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //コンストラクタ部分でタスクトレイにアイコンを表示させる NOTIFYICONDATA icn; icn.cbSize = sizeof(NOTIFYICONDATA); icn.hWnd = Handle; icn.uID = 100; icn.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; icn.uCallbackMessage = WM_USER + 1; lstrcpy(icn.szTip,"デスクトップメモ"); Shell_NotifyIcon(NIM_ADD, &icn); } 雑誌の記事を読む限り、これだけを書いてアプリを実行すれば タスクトレイにアイコンが表示されそうなんですが、実際は 何も表示されません。コンパイル&リンクもエラーなく出来ています。 何が悪いんでしょうか?
icn.hIcon = Application->Icon->Handle; が足りないかも
>>779 おっしゃるとおりでした・・・・
本では
icn.hIcon = Icon->Handle;
となっていましたが。。。。。
Application->がなくても良いのはなぜなのか
疑問なんですが、これはもうちょい自力で考えてみます。
ああ、Application->Icon->Handle; は自分のアプリがそうなってたから(w 本のほうはフォームのIconプロパティのを使ってるんだろうけど、 要はアイコンのハンドル(HICON)を渡せばOK。
782 :
デフォルトの名無しさん :02/08/27 15:28
画像のコントラストを変換するプログラムを組みたいのですが、 どうしたらいいでしょうか?
そろそろ卒研の中間発表でつねw
785 :
デフォルトの名無しさん :02/08/27 23:17
>>782 ちょっとだけマジレスするが、コントラスト変換のアルゴリズムがわからないのか、
それともBCBで画像を扱う方法がわからないのか、どっちだ?
両方って答えは許さないぞ。それなら宿題スレに行け。
アルゴリズムがわからないなら画像処理スレに行け。
BCBがわからないなら、アルゴリズムを書いて改めて質問しろ。ココでいいぞ。
786 :
デフォルトの名無しさん :02/08/28 04:04
すみません、質問させてください。 ものすごく、基本的な事なのですが・・・ C言語を使ってBCBでソフト開発ってできますか? また、C言語でソフト開発ができるなら、C++覚える必要ないですか?
んー、むしろBCBを使ってC言語の開発ができる。 でも、BCBを使わないでもBCCでもgccでもC言語の開発はできる。 C++覚える必要は、用途による。 Cの処理系で簡単にGUIアプリを作りたいなら、BCBを使いながらC++を覚えるのがよさげ。
>>787 えっと、GUIアプリを作りたいのですが・・・
やっぱり、GUIアプリ作りたかったらC++覚える必要ありますか・・・?
GUIを作りたいだけなら、C++っつーかBCBにこだわる必要はないよ。 DelphiでもVCでもVBでもHSPでもなんでも、選択肢は沢山ある。 >Cの処理系で簡単にGUIアプリを作りたいなら、BCBを使いながらC++を覚えるのがよさげ。 っつーことですわ。BCBでCだけでGUIを作るのは、ちとキツイ。
>>788 MFCとかVCLはC++のクラスを使っているので、C++を覚えた方が幸せ。
特にBCBはVCLにアクセスするために、複雑怪奇な方法を取っており、
それはC++からでないと使えないものが多い。
ひとつ、注意点としては
>>790 が書いてるようなMFCやVCLから始めてしまうと、
C++のキホソみたいなのが身につきにくいかも。
GUIアプリがそれっぽく動けばいいやー、ってなら気にする必要はないけど、
ちゃんとC++のキホソを覚えたいなら、MFCを使わないVCがいいかもね。
ただ、道のりは長いけど。
>>789-791 レスありがとうございます。
う〜ん、どの道通ってもC++は覚えないとだめなんですね〜・・・
BCB買ってきて、触りながらC++覚えることにします。
本当、長い道のりっぽいですね〜・・・(汗
がんばってみます!
>>792 CがわかってるならC++のさわりは難しくない。
とりあえずアプリできました程度なら簡単。
Delphi、VBやAppleScriptを新規に学ぶわけではないから最初の敷居は低い。
ガンバレ!
>>792 とりあえずクラスについて勉強して
VCLのコンポーネントはクラスだと思って使う程度で
いいと思ふ
すみません! C++Builder、通販とかで売ってるサイトってありませんか? 俺ん所田舎で、VCしかないっす・・・・・ アマゾンにもないし、アマゾンしか知らないし・・・・・ どこか、信用の置ける通販サイトないですか・・・・・? 情けない質問で申し訳ないっす。
>>792 継承と多態をきちんと理解できればVCLを使うのは難しくない。
継承と多態をきちんと理解できている人でないと(VCLを使うのは)難しい。
使うのは難しくないが使いこなすのは難しい、ではないのか? 800オメ
BCB買うなら 技術評論社「すぐわかるC++Builder」塚越一雄著 と合わせて勉強すると1週間くらいでBCB使いになれるよ。 (BCB使い=BCBに使われている段階を越えた状態)
>>792 VCL の場合だと IDE でフォームを作成し、イベントハンドラを生成してコードを
書くだけだと VB の C言語版のような感じで使えると思う。
ヘルプでコンポーネントの使い方を調べながら小規模なプログラムを作るぐらい
なら C++ の勉強をそれほどしなくても使える程度にはなると思う。
MFC の場合だとビュークラスとかドキュメントクラスを派生して作ることが
前提になっていて C++ の知識が(VCLより多く)いるし、フレームワークとしての
決まりごとも多く、勉強に要する時間が長くなる。
804 :
デフォルトの名無しさん :02/08/28 15:31
私がVCからBCCに乗り換えた訳 同じソースをコンパイルしてみて、BCCの方が3%ほど実行速度が速かったから。 最適化については、はいろいろ試行錯誤して最善値の比較です。
805 :
デフォルトの名無しさん :02/08/28 15:51
>>751 サンプルプログラムの、TextEdit とか RichEditをみなはれ。
SelAttributes
えーと、すみません質問変えます。 BCBでの画像の濃度値の取り出し方を教えて下さい。
Graphics::TBitmap型の bgについて TColor c=bg->Canvas->Pixels[x][y]; で(x,y)座標のピクセルの色を取り出せる。 もっと高速に処理したいなら以下の方法を使う。 void f(Graphics::TBitmap* bg) { for(int k=0;k<bg->Height;k++) { Byte* line=(Byte*)bg->ScanLine[k]; int i,j; for(i=0;i<bg->Width;i++) { j=i*3; Byte blue=line[j]; Byte green=line[j+1]; Byte red=line[j+2]; } } } この例はビットマップの形式に依存するので注意 Graphics::TBitmap* bg=new Graphics::TBitmap(); bg->HandleType=bmDIB; bg->PixelFormat=pf24bit;
TChartの使い方を解説したHPは無いものかと・・・
>>808 弊社サポートまでどうぞ
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( ) トウゼン 有償サポートダカラナ
| 某|
(__)_)
フォームのデストラクタってどう書けばよいのでしょうか? 対象フォームのcppファイルに __fastcall TForm1::~TForm1() { //処理 }; と書いたら、 [C エラー] Form.cpp(42): E2171 関数 '_fastcall TForm1::~TForm1()' の本体はすでに定義されている と怒られたので、ヘッダーファイルに class TForm1 : public TForm { public:// ユーザー宣言 __fastcall TForm1(TComponent* Owner); __fastcall ~TForm1(); }; と1行付け加えたら無事コンパイルも通りました。 しかし、どうも処理が行われていないようなので ブレイクポイントを仕掛けてもとまってくれません。 他の部分(コンストラクタとか)ではブレイクポイントが きちんと動作しているので、何がなんだかさっぱりわかりません。
うちはちゃんと止まるけどな。。。
>>811 スンマソン。実は自分
>>778 なんですが
アプリのメインフォームが非表示なやつなんで
Ctrl + F2で終了させてました。
これだとデストラクタの処理が走らないようです。
一時的にフォームを表示させて、右上×ボタンとかで
終了させたらきちんと動作していました。
#そーいうことはきちんと書いておけっ!!>Cマガ
>>812 そりゃたんにフォームのインスタンスが破棄されていないからデストラクタが実行されてないだけじゃ・・・
>#そーいうことはきちんと書いておけっ!!>Cマガ
強制的に終了するとデストラクタが走らないと書けと文句をいっているのか?そりゃさすがに酷かと.
CTRL+F2で終了してるってことはきちんと書いておけっ!!
>>812
815 :
デフォルトの名無しさん :02/08/29 21:54
すいません、質問があります。 エクスプローラーで実装されている右クリックによるドラッグアンドドロップを 私のアプリケーションで実装したいのですが、 builderのサンプルは左クリックを前提としたものが多く、 右クリックドラッグアンドドロップの定石がよくわかりません。 OnDown イベントハンドラで BeginDrag を記述すると、 (1)リストビューの項目の上で右クリックでポップアップメニューを出し (2)メニューを出したまま別の項目で右クリックによるドラッグ&ドロップ を行うと、(2) のドラッグ中のアイテムが選択状態になりません。 と、色々問題がありまして、もし定石がありましたら知りたいと思っております。 ご存知の方いらっしゃいましたら、よろしくお願いします。
>>813 >>814 いいんです、ほっといてください。
バカの遠吠えですから。。。。
こんなバカでも、プログラム書いてて楽しいっす!!
>>807 ありがとうございます。
自分へのレスだと気づかずお礼が遅れました。スミマセン(;´Д`)
あとは自力でなんとかしてみます。
818 :
デフォルトの名無しさん :02/08/31 00:10
俺はbcc32が好きで使ってるのですが、 どうしても、関数のリファレンスがないと不便です・・・。 そこで、C++Builderを買おうと思うのですが・・・ C++Builderのコンパイラは、bcc32と同じ関数が使えますか? それと、もし使えるならbcc32関数のリファレンスとかありますか?
>>818 Builderのコンパイラはbcc32そのもの、ライブラリも同じ
ただしBuilder6はbcc5.6でStlportを使っている。
5.5のRogue Waveも使えるし、基本的には何も違いはないが一応。
それから5.5のリファレンスだけなら英語版がUSサイトからダウンロードできる
>>819 そうですか!
では、C++Builderを買う事にします
ありがとうございました
これでbcc32ユーザがまた一人減った。
その代わりBCBユーザが増えた
823 :
デフォルトの名無しさん :02/08/31 01:45
大丈夫、BCB6ユーザな漏れもBCC32を使うことは有る。
というかbcc32.exe Ver5.6、信用ならないんですが‥‥ VCL使わないのは全部bcc 5.5.1でビルドしてたりする‥‥
826 :
デフォルトの名無しさん :02/09/02 17:59
つーかさ、SP1まだ?9月に入ったよ〜
>>826 C++Builder入れたら、bcc5.6にパスが通ってるよ。
コマンドラインなどで、bcc32とだけ打ってバージョンを確かめるがよろし。
5.6はBCB6付属だけど5.6.1はどこ?
@ECHO OFF SET PATH=D:\Developer\bcc55\bin\; %PATH% ECHO 環境変数をBCC5.5.1用に変更しますた(´-`)y~
>>831 え?それはなぜ?
5.6の方が良いのでは・・・?
そもそも、5.5からどう変わったのか分らない・・・
834 :
デフォルトの名無しさん :02/09/04 05:48
フレームワーク使わないで 分割ウインドウするにはどうすれば? 自分で分割すんの?
☆ チン マチクタビレタ〜 マチクタビレタ〜 ☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ヽ ___\(\・∀・) < SP1まだ〜? \_/⊂ ⊂_ ) \______ / ̄ ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄ ̄| | | 愛媛みかん |/
836 :
デフォルトの名無しさん :02/09/06 20:17
age
BCB6でQt使おうとしたんですが、Qt.hppで多くのインライン関数が inline QEventType __cdecl QEvent_type(QEventH* handle) { return QEvent_type(handle); } てな実装で無限ループに陥るんですけど、どう対処すれば良いのでしょう??
タスクバーのボタンを右クリックしたときのメニュを 変更する方法が分かりませぬ。 元のサイズ、最小化を無くしちゃいたいのだけど、どうすればいいのでしょう?
839 :
デフォルトの名無しさん :02/09/11 21:57
BCB6の最初から入っているindyを消して indyサイトから落としたやつを入れることはできるの?
>>839 できる。コンポーネントの追加/削除は自由にできる。
少々面倒臭いが。
スレ違いだけど、鱈セレ1.3G/768MからPen4 2.53/DDR1Gにしたらようやく BCBのコンパイルが軽快になった。 パソコンショップの店の人に「鱈セレで重いってどんなソフトですか?」と 質問されて、BCBだと答えたら知らないようだった。
844 :
デフォルトの名無しさん :02/09/12 11:55
BCB5で StringGrid を ダブルクリックした時に DrawCellイベントを呼びたいのですが、DrawCellイベントの下記の引数のうち (TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) TRect &Rect, TGridDrawState State の渡し方が分かりません。 どなたか分かられる方、教えて下さい。
DrawCell"イベント"は、描画が必要になった時に勝手に呼ばれるもので、 意図的に呼ぶようなものじゃ無いと思えるのですが、 (ダブルクリックした時だけ書き直しても、他のウィンドウが被さったら消えてしまう) 具体的に何がやりたいのか、書いていただけます?
Controlsプロパティについてわからないことがあります。 Controls[i]->Nameでコントロールの名前が取得できますが、Controls[i]->ClassName() ではオブジェクトインスタンスの型を表す文字列が取得できるはずなのに、実行すると AccessViolationとなってしまいます。 なぜだかご存じの方いらっしゃらないでしょうか?
846です。自己解決しました。 ClassName()はShortStringという、BCBではあまり使われない型で返して くるのが原因でした。 AnsiStringのコンストラクタで変換してやるとうまく動きました。
>>845 レスありがとうございます。
ダブルクリックしたセルの背景色を変更したいのです。
現在の状態は、 ダブルクリックしたセルにフラグをたてています。 そのフラグをみて背景色を決めるという処理を DrawCellの中に 書いているのですが、 ダブルクリック直後は、当然、 DrawCellイベントは発生せず、 セルを移動したら、ダブルクリックしたセルの背景色が変わるという 状態です。
Repaint?
Repaintって自分で呼ぶものなんだけど
あ、Invalidateの方がいいのかな? それかAPIのInvalidateRectかも
>>853 Repaint → ×
Invalidate → ×
でしたが、
InvalidateRect で変更されました!
ありがとうございました。
あれ、Repaint駄目かな? ハンドラの中で単にRepaint()とするとForm->Repaint()になっちゃうから、 Grid->Repaint()とすれば再描画してくれる(DrawCellが呼ばれる)はずだけど。 もちろん、この場合は一部を書きかえるだけだし、 Repaint()すると場合によってはGrid全体がちらつく(と思う)ので 範囲を指定してInvalidateRectでいいとは思う。
>>855 Grid->Repaint()でOKでした。Grid-> って書いてなかったです・・・
ごめんなさい、ごめんなさい、ごめんなさい。ひどいポカですね。
丁寧なレスありがとうございました。
857 :
デフォルトの名無しさん :02/09/13 03:35
AnsiStringとi(f)streamの関係でわからなくなっています。 istream、ifstreamからAnsiStringに文字列を読みとる時は、string型と 違い、CTRL+Zが押されるまで、改行コードも含めて読みとってしまい ます。 これを、改行までを一区切りとして読みとる方法はありますでしょうか?
858 :
デフォルトの名無しさん :02/09/15 17:05
BCB4です。 マウスカーソルをオリジナルのもの(16色程度の動かないやつ)に変更したいのですが、 用意されてるエディタだとモノクロしかありません。 どうしたら良いでしょうか? なにから手をつけていいやら、分かりません。
860 :
デフォルトの名無しさん :02/09/16 15:41
Turbo Debuggerでクラスのメンバ変数をWatchするにはどうしたらいいですか?
カーソルエディタを探してLoadCursorファイルなんちゃらを使ったらできました。 thx
無理なんでしょうか・・・
863 :
デフォルトの名無しさん :02/09/16 22:56
>863 誘導thxです
>>864 もう移動したかもしれんが、例えば class Aのメンバ変数 i を見たければ
インスタンスを A a; で生成したとすれば
add watch で a.i[enter] と入力すればよい。
privateとか関係ないから。
866 :
デフォルトの名無しさん :02/09/17 20:33
濃淡画像(グレイスケール)のBMPファイルの画素(8ビット)を 取り出すにはどうすればいいでしょうか?
BITMAPのフォーマット調べれば? ネットにもMSDNにもどこにでも転がってる。
>>867 すみません。。。見つけれなかったです。。。
>>866 TBitmap->Canvas->Pixels[int X][int Y]
870 :
デフォルトの名無しさん :02/09/18 17:45
TListView で ReadOnlyをfalseにして クリックするとアイテムの文字列編集できるようになりますが もっとレスポンス素早く(StringGridみたいに)やりたいのですが、 文字列編集モードに素早くするメソッドとかありますか?(EnterやF2ですぐにできるようにしたい) あと、 サブアイテムも編集したいのですが無理ですかね?
871 :
デフォルトの名無しさん :02/09/19 03:07
ListBoxに表示されているデータを右クリックで選択して、 ポップアップメニューだしたいんですが、 どのようにしたらいいのでしょうか。
ヘルプでTListBoxのプロパティを見ると、
873 :
デフォルトの名無しさん :02/09/22 15:21
すんませんが、教えてください。 C++Builder5 Pro/Win2000です。 HELPを見るときに、プロパティやメソッドが別ウインドで表示されますが、そのウインドのサイズと表示位置を変更 しても、記憶してくれずにデフォルトに戻ってしまいます。なのでとても使いにくいです。 表示位置とサイズを記憶させる方法はありませんか。 直接プログラミングの質問ではなくてすいませんが、よろしくおながいします。
874 :
デフォルトの名無しさん :02/09/23 00:53
C++ Builder6って「.NET」とやらに対応してますか? だったら買おうと思うんですが・・・ Builderってなんか評判悪いんで怖いんですよね・・・
対応してないよ > 評判悪いんで Σ(゚Д゚ )y-~~ マジか
876 :
デフォルトの名無しさん :02/09/23 01:08
>>875 >対応してないよ
Σ(゚Д゚ )y-~~ マジか
878 :
デフォルトの名無しさん :02/09/23 01:14
>>875 じゃあもうBuilderは買う価値がないということでしょうか?
Delphiは対応してましたよね、確か。
そりゃ.NETやりたい人には、 今のBCBは価値ないのでは。
Delphiも7でやっと.NETに対応します。 Delphi7が出たらBCB7も出るのでは。
.NETよりも素で最新のDirectXがコンパイルできるようにして欲しい。
BCB7は.netに対応しません。
>>882 関係者信用ならん。盆明けにSP2出るとか言っといて出なかったし。
/|
ヽ('A`)ノ (VS持ってるから、俺も
>>881 に同意しとこう・・・
( ) 〜bor.dll配るのなんかイヤだし。)
/ ̄くく ̄ ./|
/ ´´ / .|
| ̄ ̄~~ ̄|´ |
| . | ./
| . |/
 ̄ ̄ ̄ ̄
BCB6SP2出ないから英語版SP2入れたら メニューの一部が英語になった
>>873 だす
やっぱ誰も分からないってーことですか。
みなさん使いにくくありませんかぁ
確かに不便かもなあ、と思いつつ今見てみたら いつのまにか位置と大きさ記憶されるようになってた。プロパティ一覧とかの別ウィンドウも。 BCBだけじゃなくてあの形式のヘルプ全部のようなので、Windows自体にそういう機能がついたのだろか。 最近入れたのはWin2KSP3とIE6とVS.NETだけど、そのどれかのおかげかも。
>>886 ぜんぜん使いにくくない。
つか、慣れた。
ちょっと調べてみますた。 winhlp32.exeのバージョンは、5.00.2195.3649 タイムスタンプは2002/07/13 04:13 です。 XP Proでもやってみたのですが、現象はWin2000環境と全く同じで、ウインド状態を保存してくれませんでした。 また自分の環境は、win2000SP3でOSは最新状態です。IE6.0 VS.NETも入っています。 なので、winhlp32.exeのバージョンアップで改良された訳では無いみたいです。 とりあえず、ウインドーの位置とサイズを定期的にチェックして変更するプログラムをつくりました。 なんか違うなぁとは思うのですが、とりあえず便利です。 どこかのレジストリに書き込めばいいのかなという気はしますが・・・
俺のほうがちょっと新しいな 2002/07/22 12:05 バージョン5.0.2195.4751
で、位置と大きさが.GIDファイルに書き込んであった。
(´-`).oO(最近、
>>888 の他になにか入れたっけな・・・)
893 :
デフォルトの名無しさん :02/09/25 10:00
ソケット通信なんですが、 Java側で ObjectOutputStream oout = new ObjectOutputStream(socket.getOutputStream()); PrintWriter out = new PrintWriter(new OutputStreamWriter(oout, "SJIS")); out.println("hogehoge"); out.flush(); と送って来て、それを受信しているんですが、 文字化けしてしまいます。 unicode変換とかが必要なんでしょうか?
894 :
デフォルトの名無しさん :02/09/26 17:10
TADOQuery->SQL->Textに3000ByteほどのSQL句を代入したら、 AccessViolationでたんですが、 文字数の制限とかありましたっけ??? ちなみにC++Builder5です
>>893 なぜObjectOutputStreamをつかってるののだ?
ObjectOutputStreamはヘッダをつける(Javaのオブジェクトをシリアライズするためのもなんで)からばけてるのでは?
OutputStream out = socket.getOutputStream();
PrintWriter writer = new PrinterWriter( new OutputStreamWriter( out, "SJIS" ) );
writer.println( "hogehoge" );
writer.flush();
ではだめ?
Unicode -> SJISへの変換は OutputStreamWriter( out, "SJIS" ) でなされていると思われ.
896 :
デフォルトの名無しさん :02/10/01 15:59
C++Builder5 ProのTQoeryで質問 指定した日時のデータを取得するためにをSQLに select * from FastData where Dt=#09/30/2002# って書くとキーワードの使用が無効ってエラーがでます、 select * from FastData where Dt = cast( '"2002/07/07"' as DATE) ってやったらCASTはつかえませんってエラーがでます どうやったら日時でデータをゲットできるのでしょうか?
897 :
デフォルトの名無しさん :02/10/01 16:00
>>896 DBの名前とバージョンを書いたら親切な人が
教えてくれるかもしれないよ。
899 :
デフォルトの名無しさん :02/10/05 11:44
『インターネットプログラミングプログラミング入門 C++Builder』 って本のソースをVisual C++ 6.0でコンパイルしたいんですが、 C++BuilderのプログラムをVisual C++に移行するって可能でしょうか?
>>899 その本の中身は知らないけど、あなたのスキル次第。
コンパイルは、ソースそのままでは絶対通らないでしょう。
コピペで楽しようと思ってるならあきらめた方がいい。
よく見ると「プログラミング」が二重になってるね。
色々やって見たのですが前半の方はリソースとか自作してソース書き換えて 何とかコンパイル通るんですが、中盤移行はかなりきついです。。 vcl.h とかVC++にあるとありがたいんですが・・。 もう少しやってみて駄目っぽかったらあきらめようと思います。 >よく見ると「プログラミング」が二重になってるね。 書き換えた時重複したようです・・(お恥ずかしい。。
902 :
デフォルトの名無しさん :02/10/06 02:06
著しく場違いなこと(もしくは既出)かも知れないが、 内蔵のタコみたいなコードエディタは外部エディタに変更出来ないのですか? BCB5、BCB6
903 :
デフォルトの名無しさん :02/10/06 02:06
>>902 ツールでテキストエディタを登録してなんとかやりくりして下ちぃ。
905 :
デフォルトの名無しさん :02/10/06 23:26
906 :
デフォルトの名無しさん :02/10/06 23:54
TBitmapでグレイスケールのビットマップを扱うにはどのようにすればいいでしょか? パレットのいじり方がよくわからなくて困ってます。
908 :
デフォルトの名無しさん :02/10/07 00:12
名前にショートカットを付ければ((&A)とかする)少しはマシになる。 まぁ、使いにくいことには変わらないんだけど。 BCBのエディタは使いにくいは、定説ですなー。
ぜんぜん気にならん。慣れろ。 不器用な連中が多いな。
_____________ ,,,,,,,,,,,,,,,,∧,,∧ /$EDNAMEの前に$SAVEを付けたら 〜′,,,,,,,,,,ミ,,゚Д゚彡 < もっと便利 UU"""" U U \_____________
912 :
デフォルトの名無しさん :02/10/07 18:16
BCBでTCanvasの拡張をしたいのですが、できません。 例えば、 void Line(int x1,int,y1,int x2,int y2) というメソッド{座標(x1,y1)へ座標(x2,y2)へ線を引く}を作るときは どうすればいいのでしょうか?
>>912 MoveTo(x1,y1);
LineTo(x2,y2);
っていうことを聞いてるんじゃないんだろうなぁ・・・。
>>913 レスありがとうございます。それは、一例です。MoveTo LineToを一つにした
、新しいメンバ関数(Line)を作って、TCanvasを拡張したいっていう場合どうす
ればいいんでしょうか?っていう質問です。
普通なら
PaintBox1->Canvas->Move(X1,Y1)
PaintBox1->Canvas->LineTo(X2,Y2)
のところを
PaintBox1->Canvas->Line(X1,Y1,X2,Y2)
ってなかんじですね。やりたいことは別にあるんですけど、ここさえ解かれば問題
ないです。
>>914 それをやりたいなら PaintBox1をTPaintBox1から継承しなおして書き直すか
VCLソースを変更するしかないでしょう。
Line(PaintBox1->Canvas , X1,Y1,X2,Y2) で我慢したら?
どうしてもメソッド形式で呼び出したいのであれば、 C++のマジックとして、TCanvasから派生させたTMyCanvasを作り、 そこでnon-virtual関数だけ定義して、無理矢理キャストして使う荒技も… 激しく非推奨です。本当にやっちゃダメ(w
>>915 そ・・そうなんですよねぇ
Line(PaintBox1->Canvas , X1,Y1,X2,Y2)
ならできるんですけど、かっこ悪いから、嫌だったんですが・・・・。
てっきり簡単にできるもんだと思ってました。皆さんこれで、我慢してる
ようですね。親切なレスありがとうございます!
>>916 しょ・・・正直いって、ずぶの素人の俺にはなにをいってるかわかりません。も・・・もうしわけない。
918 :
デフォルトの名無しさん :02/10/08 16:49
BCBにはAssertみたいな関数はないのでしょうか?
Assertはないけどassertはあると思うよ。ヘルプで検索してみたら?
>>916 >>917 単に新しい関数をつくって呼べばいいだけなのでは?
void NewLine(int x1,int y1,int x2,int y2){
PaintBox1->Canvas->Move(x1,y1)
PaintBox1->Canvas->LineTo(x2,y2)
}
PaintBox1->Canvas->Line(x1,y1,x2,y2)
って呼びたいところを
NewLine(x1,y1,x2,y2);
これじゃあダメ?
>>920 今回は、私のクラスのお勉強なので・・・・
PaintBox2やPaintBox3になったら、引数として、あたえなくちゃいけなくなるので、
それは、ちとかっこ悪いかなぁ・・・と思いまして。できれば、別のアプローチで。
TCanvasを継承して 何も追加せずVMTが付かないようvirtualでないメソッドだけを追加して、無理やりキャストすれば (TMyCanvas *)(PaintBox1->Canvas)->Line(x1,y1,x2,y2) とは書けるけど、これはもっと格好悪いだろ? JavaScriptなら後からメソッドも追加出来るけどねえ
つ・・つまり、Cはメソッドの追加はできないんですか? TCanvasクラスが定義されている、ソースファイルを見つけて、Lineを追加するしかない ということでしょうか? この機能って絶対にあったほうがいいと思うのに・・・どうしてできないんだろう??
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,, ゚Д゚彡 < PaintBoxがTCanvas使っているからでは 〃つ_つ/  ̄ ̄ ̄/\_____________ 〜ミ,,, ,,|\ ./ レ ッ シ / '\/.======./  ̄ ̄ ̄ クラスライブラリがそういう目的を考慮して作られてれば いいんだけど、VCLはそうはなってないってことです。 それに、なんでも、継承で機能追加という 思想だと、階層が深くなりすぎてわけわかになるから TCanvasの処理くらいは関数レベルで対応するほうがいいですよ。
こういうのはだめなの? class MyTCanvas : public TCanvas { void MyLine(x1,y1,x2,y2){ MoveTo(x1,y1); LineTo(x2,y2); } }
>>925 それは、実際に使うときは
PaintBox1->Canvas->MyTCanvas->MyLine(10,10,20,20)
でやるんですか?それなら私的には全然OKですけど、うまくいきません・・・・。
実際に使う時は MyTCanvas *)(PaintBox1->Canvas)->MyLine(10,10,20,20) ただし、こんなクセ付けたらいけないよ
ども、916です。 後で思いついたのですが、奇麗に書きたければ、 *.hppだけ書き換えてインライン関数を追加する程度なら問題ないような。 …他人とソースコードの互換性は無くなりますが。 (そういう意味ではまだTMyCanvasの方がマシ。どちらも実際にはやらない方がいいけど)
まじめにやるなら、 TCanvas から TMyCanvas を作って、メンバ関数 Line を追加 TPaintBox から、TMyPaintBox を作って、プロパティ Canvas の型を TMyCanvas* に変更 PaintBox1 の型を TMyPaintBoxに ってとこかな。そこまでやれば、 PaintBox1->Canvas->Line(10,10,20,20) できる。 クラスの勉強としては、勧められることじゃないとは思うけど
皆様ありがとうございました。親切にしてくださったことを感謝審査宇。以外に大変だっていうことがわかりました。今回私は、TCanvasにメンバ関数DrawGraph( )という関数を追加したかったのですが、どうも既存のクラスにメンバ関数を追加する事はできないようですね。今回私は ヘッダ部 class DrawGraph { private: int tatehaba; int yokohaba; int number_of_block_y; int number_of_block_x; int x0; int y0; public: void __fastcall Execute(TPaintBox *PB); void __fastcall SetValue(int Height,int Width,int HeightBlockNumber,int WidthBlockNumberint,int DrawStartX,int DrawStartY); };
メイン部 void __fastcall TForm1::PaintBox1Paint(TObject *Sender) { DrawGraph *DG = new DrawGraph; DG->SetValue(50,50,10,10,10,10); DG->Execute(PaintBox1); } //--------------------------------------------------------------------------- void __fastcall DrawGraph::Execute(TPaintBox *PB) { for(int i=0;i<=number_of_block_x;i++) //横軸グラフ描写 { PB->Canvas->MoveTo(x0,y0+tatehaba*i); PB->Canvas->LineTo(x0+yokohaba*number_of_block_y,y0+tatehaba*i); } for(int i=0;i<=number_of_block_y;i++) //縦軸グラフ描写 { PB->Canvas->MoveTo(x0+yokohaba*i,y0); PB->Canvas->LineTo(x0+yokohaba*i,y0+tatehaba*number_of_block_x); } } //---------------------------------------------------------------------------
void __fastcall DrawGraph::SetValue(int Height,int Width,int HeightBlockNumber,int WidthBlockNumber,int DrawStartX,int DrawStartY) { tatehaba=Height; yokohaba=Width; number_of_block_y=HeightBlockNumber; number_of_block_x=WidthBlockNumber; x0=DrawStartX; y0=DrawStartY; } //--------------------------------------------------------------------------- というプログラムに落ち着きました。SetValueメソッドは、公開メンバ変数にして、直接代入してもよかったのですが、いちいちアロー演算子書くのが 面倒くさいので、こっちにしてみました。皆様の「継承もしてねぇし、クラスじゃなくていいじゃん!」という声が聞こえてきそうです。なにせ、厨房なもので・・・・。もっとかっこいい方法がありましたら、ご教授お願いいたします。 私から、話題に上っていたBuilder標準のエディタの使い勝手ですが、xkeymacsというソフトを使う事で、Emacsの操作性を補助に、結構使い勝手が向上します。ぜひ、トライしてみてください!
934 :
デフォルトの名無しさん :02/10/09 00:34
C++Bulderって、あの豊富なコンポーネントがおいしそうに見えてたまらん。 あのおいしそうな物を活用したいから、今この開発ツールを学習してるところだ。 実際に使ってる人に聞きたいが、やっぱりこれでWindowsアプリを作るのはおいしいかな。
935 :
デフォルトの名無しさん :02/10/09 00:44
せこいプログラムならMFCより10倍楽 本格的なプログラムならMFCの方が10倍情報量が豊富
さらに コンパイルはDelphiが10倍速い
938 :
デフォルトの名無しさん :02/10/11 14:37
zlib使ってるのだけど、GodeGuardに引っかかってしまいます。 同じアルゴリズムで初期化をinflateInitにしたときは問題ないのだけど、 inflateInit2にするとかなりリークが報告されます。 これってSTLの時みたいなCodeGuardの誤爆?
>>936 C++Builder常用のため、パソコンをCeleron 1GHzからPen4 2.53GHzに
グレードアップしました。
それでもまだコンパイル速度は遅いです。ちょっとコードを変更して
メイクする度に一瞬息をつきます。
コンパイルってコンピュータの一番重い処理の一つのようです。
CPUよりHDD早くするほうが効きそうだね。
>>939 そこまでくると、ディスクアクセスが遅いんじゃないの?
うげ、かぶった・・・
>>940 >>941 IBM Deskstar120GXP(AVVA120GB)使ってます。
これで遅いとなると、もうRAID組むしかないのでしょうか(;´д`)トホホ・・・
BCB MLが止まってて .∧∧ 再開したのに連絡もないぞゴルァ ,.、ミ,,゚Д゚彡 /i ;'`;、. :,.:∪`゙:゙:`''':,'.´ -‐i '、;:.: .、.:',.: .:: _;.;. :.‐'゙゙~  ̄ `` U U よく、こんなひどいML運営で 誰も文句いわないもんだ... 何?このDFreeって?
誰も文句を言わないMLをお前が作れ! 再登録ぐらいやってくれよとは思ったけどな。
∧ ∧ 言うだけ言って ミ ゚Д゚彡 そろ〜と、逃げてみますた。 ,," ⊃,,つ 〜(,,,"⌒ヽ ( ( )ノ' '`J
C++ Builder6買ったんだけど、参考書全然ないよ・・・ 初心者用のホームページもないし、泣きそう。 VC.NETの方がよかったのかなぁ。うわーん。
948 :
げるるん ◆UaSHERPAhE :02/10/13 17:52
949 :
bloom :02/10/13 17:55
>>944 ここら辺の考えがあっての事じゃないの?
おれは、所詮使わせてもらっている身という考えでいますんで
あんまり気にならないけど・・・・
−−−−−−−−−−−−−−−−−−−−
作業が終わって、登録できるようになりましたが、
DNSが行き渡っていないため、投稿できないので
ここのコメントにしておきます。m(__)m
#月曜日に発表かな?
#土曜日にDNS引けているかな?
>>948 カットシステムの本見てきました!すごくよさそうですた!
でも、激しく高いですね(;´Д`)vol.1だけで約5000ペソか〜
立ち読みしようかな・・・w
952 :
げるるん ◆UaSHERPAhE :02/10/14 14:48
____
/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | <
>>1 C Builderって何
\| \_/ / \_________________
\____/
______.ノ (⌒)
//::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::| /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄ `-Lλ_レ′
レ::::::::::::::::::|/::: ̄`ー‐---‐′
イマサラナニ?
>>953 そのままGoogleで検索してみろ、叔母加算。
956 :
デフォルトの名無しさん :02/10/14 18:09
DrawGridのマージってどうやったら良いのでしょうか?
957 :
デフォルトの名無しさん :02/10/14 18:20
C++Builder5 でIndy9のTIdIRC使ってるやついないかー? 鯖に接続した後でアプリを終了したら EIdNotConnectedクラスの例外かEIdClosedSocket例外が生成されるんだけどさ。 なんか解決方法ないっすか?
新スレは?
どっちもよく分かんねぇけど、 単純にCloseしたソケットになんか送ろうとしてんじゃねぇの?
新スレのタイトルにはプラプラを入れてほすぃ
CプラプラBuilder相談室 Part4
でもスレにはブラクラを置かないでホスィー
CブラクラBuilder相談室 Part4
964 :
デフォルトの名無しさん :02/10/20 14:14
すみませ〜ん。 質問させてください。 FindDialogを設置して、ダブルクリックでコードエディタを開くと本にあるんですが、 ダブルクリックすると、おもいっきり検索ウインドウが開きます・・・。 ダブルクリック以外に、コードエディタで開くにはどうすればいいですか?
Eventタブに切り替えてから、
>>965 ありがとうございます。
イベントタグに切り替えて、OnFindって所ダブルクリックしたら開けました。
かなり初歩な質問に答えてもらって、ありがとうございます。
SP1まだか・・・>>関係者様方
BCBは見捨てられたのだろうなぁ
969 :
デフォルトの名無しさん :02/10/24 13:59
C++でVCLを使いたい人にはBCBはうってつけだね。 俺もObject Pascalをいじくるのはどうも肌に合わなかった。 ただ、残念ながらVCLがC++で書かれてない事がひっかかる。
>>967 だから SP1 はないんだってば。
現在 SP3 作成中。今すぐ必要なら SP2 を使え。ってば。
971 :
デフォルトの名無しさん :02/10/25 14:48
教えてください。 TOpenDialogにて、表示メニューを詳細に設定するにはどうしたら良いのでしょうか。 TListViewなら、ViewStyle=vsReport;にすればOKでしたが、TOpenDialogにはViewStyleがありませんでした。 よろしくおねがいします。
ミ,,゚Д゚ミつ、あまり役に立たないかもですが見てみてください。 [Delphi:46188] Re: OpenDialog の状態設定
973 :
デフォルトの名無しさん :02/10/25 15:31
>>972 ありがとうございます。
簡単にはできないようですね。(涙
974 :
デフォルトの名無しさん :02/10/25 21:54
fstreamとTFileStreamはどのように使い分ければいいのでしょうか? どちらも似たようなメソッドがあるので、よくわかりません。
VCLと連動させたいなら(DBのBlobとかTPictureとか)TFileStream, そうじゃないならfstreamでいいんじゃない?
fstreamってC++標準ライブラリのですよね? 一方TFileStreamはVCL独自。 ですから、どちらでもいいときはfstreamを使っておけば後々他の環境に移行する時も楽と思います。 一方、コンポーネントをストリーミングしたり、TMemoryStreamなどとの間で中身をコピーするなど、 VCL特有の機能が必要な時は、TFileStreamを使うしかありません。
>>975 なるほど、VCLと連動させるかどうかがミソなのですね。今コンポーネント
のストリーミングという所を演習しているのですが、これはTFileStreamで
ないといかんみたいですね。
どうもありがとうございました。
>>976 そしたらこうします。
fstream(標準ライブラリ)で済ませられる所はfstreamで書く。それ以外の
VCL特有のファイルアクセスにはTFileStreamを使う。というように。
TCustonForm::OnDestroy()と、TForm::~TForm()は、どちらを使用すれば いいでしょうか? フォームのコンストラクタはOnCreate()ではなくTForm::TForm()を使用する ようにヘルプには書かれているのですが。
すみません TCustomForm::OnDestroy()の間違いでした。
981 :
デフォルトの名無しさん :02/10/25 23:22
ageますぅ
記念パピコV(^o^)V
983 :
デフォルトの名無しさん :02/10/26 02:17
BCBで.resファイルをリンクするには、プロジェクト→プロジェクトに追加 する以外に方法はありますでしょうか? Delphiの{$R resourcefile} のようなものがあればいいのですが。
983です。自己解決しました。 #pragma resource "resourcefile" とすれば、Delphiの$Rと同様の効果を 得ることができました。
>>970 ところで、BCB6のSP2ってのはどこにあるの?