C++Builder相談室 Part17
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/08(水) 02:01:27【前スレ】
C++Builder相談室 Part16
http://pc8.2ch.net/test/read.cgi/tech/1138766165/l50
過去スレ・関連サイトは>>2-7あたり。
※Borland C++ Compiler 5.5.1についての質問は以下のスレへ
タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/l50
※BDS(Borland Developer Studio)の総合スレはこちら
Borland Developer Studio 2006 No.10
http://pc8.2ch.net/test/read.cgi/tech/1162262669/l50
0148デフォルトの名無しさん
2007/02/27(火) 23:32:04そのサンプルはDelphi上でTStringGridを継承した新しいコンポーネントを作るというもの。
それで問題なければ新規ユニット(.pas)をそのままサンプルのとおりに作ってパッケージに組み込めばいい。
0149デフォルトの名無しさん
2007/02/28(水) 01:21:230150デフォルトの名無しさん
2007/03/02(金) 15:56:40FormのMouseDownイベントで
Formの上に他のコントロールがあるとイベントが取れないのでしょうか?
(やり方が悪いのか取れなかったです)
コントロールは動的?にプログラム上で書いた物なので
私の腕では其処からイベントを取るのは難しいです....orz
本当はそれが一番いいのでしょうが
もしコントロールが重なっていてもイベントが取れる方法があれば
宜しくお願いいたします。
0151デフォルトの名無しさん
2007/03/02(金) 16:45:17>私の腕では其処からイベントを取るのは難しいです....orz
そのコントロールのOnMouseDownにイベントハンドラを代入するだけ、じゃなくて?
0152デフォルトの名無しさん
2007/03/02(金) 17:29:34初心者のスレで自分のしたい事にバッチリ当てはまった
Parentを教えて頂いて
Image[i] = new TImage(this);
Image[i]->Parent = this;
こんな感じでプログラム上で複数作れるように
作ったのでどうやって
イベント付けるかわから無くって
腕不相応の事をしているので...orz
0153デフォルトの名無しさん
2007/03/02(金) 17:47:170154デフォルトの名無しさん
2007/03/02(金) 17:49:17はい
けど私の腕では出来ないと思うので
せめてX,Yの座標から割り出せたらなと
0155デフォルトの名無しさん
2007/03/02(金) 18:21:10TNotifyEvent EventHandler_OnClickImage; //イメージ用イベントハンドラ
};
TForm1::EventHandler_OnClickImage(TObject *Sender)
{
if (Sender == Image1) {
(略)
}
}
Image[i]->OnClick = EventHandler_OnClickImage; //イベントハンドラ(クラスメソッドのポインタ)
こんな感じじゃね?
0156デフォルトの名無しさん
2007/03/02(金) 18:28:33有り難う御座いますm(__)m
挑戦してみます
0157111
2007/03/05(月) 05:32:430158155
2007/03/05(月) 08:45:43↑
これはイメージのイベントハンドラを外から設定でしょ。
そのためには、イベントハンドラの実体を先に作っとかなければなりません。
先ず、TForm1にイベントハンドラを作っとくとして、イベントハンドラの宣言:
>class TForm1 (略) {
> TNotifyEvent EventHandler_OnClickImage; //イメージ用イベントハンドラ
>};
あ、ごめんなさい上記間違いでした。
正しくは、
class TForm1 (略) {
void __fastcall EventHandler_OnClickImage(TObject *Sender);
};
です。
次にイベントハンドラ実体:
TForm1::EventHandler_OnClickImage(TObject *Sender)
{
if (Sender == Image1) {
(略)
}
}
0159デフォルトの名無しさん
2007/03/05(月) 08:57:510160デフォルトの名無しさん
2007/03/05(月) 10:13:21ActionListで用意しておいてイベントハンドラにいれるとかどう?
0161111
2007/03/05(月) 17:39:150162デフォルトの名無しさん
2007/03/05(月) 19:09:19CreateDIBSection()で作った
HBITMAPをTBitmapに持っていく方法は無いでしょうか?
もしくはクリップボードに持って行ければいいんですが、
SetClipboardDataを使っても持って行けないです。
HP検索したんですが
同じ様な事で悩んで結局出来ない方もいらしたようで
それ以上載っていませんでした
宜しくお願いします
0163デフォルトの名無しさん
2007/03/05(月) 22:02:36リファレンス読もうよ‥‥(´・ω・`)
__property HBITMAP Handle = {read=GetHandle, write=SetHandle, nodefault};
0164デフォルトの名無しさん
2007/03/05(月) 22:27:01すいません
読んでHandle を渡したんですが
ヘッダー?大きさが取れたのですが
画像が取れなかったんです....orz
やり方が悪かったのかな
0165162
2007/03/05(月) 22:43:17BitBlt(hBitmap,0,0,WhidthTemp,HeightTemp,MeDC,0,0,SRCCOPY);
Graphics::TBitmap *BBitmap = new Graphics::TBitmap;
BBitmap->Handle = hBitmap;
MessageBox(NULL , IntToStr(BBitmap->Height).c_str() ,
"メッセージボックス" , MB_OK);
//これで大きさは合っているのデータは渡ってると思うのですが
//肝心な保存しようと思うとリソース?不足って出て来ます...orz
もう少しやってみます
0166デフォルトの名無しさん
2007/03/05(月) 23:09:11なんでBitBltのHDC型の第1引数にHBITMAP渡してるんだ?
あとそれなら
TBitmap* BBitmap = new TBitmap();
BBitmap->Width = WidthTemp;
BBitmap->Height = HeightTemp;
BitBlt(BBitmap->Canvas->Handle, 略);
でいいじゃない
0167162
2007/03/05(月) 23:34:47有り難う御座います
何処かのHPにこうやって載っていたもので
(これでもいけるのかと(^^;)
プログラム使わせて貰います
助かります
0168デフォルトの名無しさん
2007/03/07(水) 14:50:13int X, int Y)
{
Image1->Canvas->Font->Size = 20;
HDC hdc;
RECT MRect;
char str[] = "Draw\nText";
hdc = Image1->Canvas->Handle;
MRect.left = X;
MRect.top = Y;
MRect.right = Image1->Width;
MRect.bottom = Image1->Height;
DrawText(hdc,str,-1,&MRect,DT_WORDBREAK|DT_LEFT);
Repaint();
}
Image上で文字列 "Draw\nText"を二行に表示したものを
マウスを動かすことによって移動させたいのですが、Repa
int();を使って再描画すると、ちらつきがすごいのです。
何か言い方法ありませんか。
Repaint();しないと表示できないんですが。
0169デフォルトの名無しさん
2007/03/07(水) 15:16:56Form1->DoubleBuffered = true;
じゃだめなの?
0170168
2007/03/07(水) 15:48:20PaintBoxのOnPaintを使って
自己解決できました。
0171デフォルトの名無しさん
2007/03/08(木) 14:17:27関数が出来た時に
//---------------------------------------------------------
が自動でつくんですが、これをつけないように出来ませんでしょうか。
0172デフォルトの名無しさん
2007/03/08(木) 19:52:240173171
2007/03/09(金) 09:15:11どこで出来るんですかね。
0174デフォルトの名無しさん
2007/03/10(土) 20:35:51どこも取り寄せになってるけど・・・orz
0175デフォルトの名無しさん
2007/03/10(土) 20:40:33俺ならそうするけど
0176デフォルトの名無しさん
2007/03/10(土) 21:15:32↑これかなぁ?自信なし。
ちなみに当方BCB5です。
0177デフォルトの名無しさん
2007/03/10(土) 21:32:36TurboC++Explorer使うかC++Builder6か
0178デフォルトの名無しさん
2007/03/11(日) 01:12:440179デフォルトの名無しさん
2007/03/11(日) 02:12:18TurboExplorerは上が可能でコンポーネントをパレットに配置できない(コード上で動的生成のみ)
0180デフォルトの名無しさん
2007/03/11(日) 12:22:380181デフォルトの名無しさん
2007/03/11(日) 14:15:09Personalで十分ですじゃ
0182デフォルトの名無しさん
2007/03/11(日) 14:21:38初心者はソースを読んだほうがいい。というか2択なのか?両方でいいんじゃ?
0183デフォルトの名無しさん
2007/03/11(日) 14:26:550184デフォルトの名無しさん
2007/03/12(月) 11:29:26ライセンスなら購入できるはず。
パッケージは約億?
0185デフォルトの名無しさん
2007/03/12(月) 13:55:37ゲームとか作るなら知らんがアプリ程度ならソースなんか見なくたってできるし
手早く作るためのポトペタなんだからさ
0186デフォルトの名無しさん
2007/03/12(月) 13:56:08いやいや、BCB5の方が(笑
0187デフォルトの名無しさん
2007/03/12(月) 16:29:42他にもバグ色々あるけどサービスパック出たという話は聞かないしなぁ。
0188デフォルトの名無しさん
2007/03/12(月) 20:27:506よりさらに安定していないの?
0189デフォルトの名無しさん
2007/03/12(月) 21:15:480190デフォルトの名無しさん
2007/03/13(火) 05:24:010191デフォルトの名無しさん
2007/03/13(火) 11:16:43ボーランドのアイコンに変わってしまってました。
プロジェクトのオプションでアイコン指定して再構築してもアイコンが変わってくれなくなりました。
実行ファイルのサイズと関係ありますか?
ちなみにサイズは2,468MBです。
0192デフォルトの名無しさん
2007/03/13(火) 12:03:02悩むよりResourceHackerとかで書き換えた方が早くね?
0193デフォルトの名無しさん
2007/03/13(火) 13:40:41BCB1とかBCB3の時代にそんな問題にぶち当たったことがありますが、
そのときはウィンドウズ側のアイコンキャッシュに乗っちゃっている
状態で実際には変わっているのに表示は古いままという現象でした。
0194デフォルトの名無しさん
2007/03/13(火) 13:47:43そうなんですが、原因がわからないままだと同じ事の繰り返しになるから
>>193
PC再起動してもアイコンは変わらなかったんですよ。
数日まえまではなんとも無かったから実行ファイルのサイズがでかくなったのが
原因なのかなあとか、しかし仮にそれが原因だったとしてもそうなると対処のしようがなくなる・・・
0195デフォルトの名無しさん
2007/03/13(火) 13:56:51他のPCで確認して問題なければほっとくけど。
0196デフォルトの名無しさん
2007/03/13(火) 13:59:380197193
2007/03/13(火) 13:59:52まあ、たぶん違うんだろうと思うけど。
http://leed.issp.u-tokyo.ac.jp/~takeuchi/builder/browse.cgi?index=5422
で紹介されているツールでキャッシュをフラッシュしてみるとか。
あとは、*.res消してビルドしてみるとか、
というか、EXEに含まれているアイコンがちゃんと指定しているものなのかを確認するのが先かな。
0198デフォルトの名無しさん
2007/03/13(火) 14:07:270200デフォルトの名無しさん
2007/03/13(火) 14:34:17resファイルを削除してアイコン変更して再構築でもダメ
んで、デバッグ情報付加しコードガードONして再構築で何故かアイコン復活
更にリリースにしてコードガードオフして再構築してもアイコンがちゃんとしてた。
わけわからん
0201デフォルトの名無しさん
2007/03/13(火) 15:32:220202デフォルトの名無しさん
2007/03/13(火) 16:31:290203デフォルトの名無しさん
2007/03/13(火) 18:28:41結局、プロジェクト作り直したと思う
0204デフォルトの名無しさん
2007/03/13(火) 18:36:320205デフォルトの名無しさん
2007/03/14(水) 06:40:140206デフォルトの名無しさん
2007/03/14(水) 11:38:381.デバッグ情報付加して再構築でアイコンはOK
2.リリースして再構築でアイコンOK
3.更にリリースのまま再構築するとアイコンがあぼーん(一部のファイルのメイクならOK)
XPはアイコンキャッシュが少ない(デフォ)だとアイコンが腐るってバグがあるらしくて
とりあえずだめもとでキャッシュサイズを2048にしてやったけどやっぱダメ
まあ、出荷時には1,2をやると回避できるからいいんだけど・・・
0207デフォルトの名無しさん
2007/03/14(水) 22:32:16コンポーネントパレットに追加するにはどうしたらいいのでしょうか?
BCB6です。
0208デフォルトの名無しさん
2007/03/15(木) 13:47:45BCBのSTLはあんまり良くないんですか?(多分、自分が間違ってるとは思うんですが・・・
BCBでSTLを使う際、気をつけるべきことなどを教えてください。
0209デフォルトの名無しさん
2007/03/15(木) 13:54:57再現するソース見せて。
0210デフォルトの名無しさん
2007/03/15(木) 14:13:31評判の良いSTLがバンドルされてるわけですが、何か?
0211デフォルトの名無しさん
2007/03/15(木) 14:15:21イテレーターでレコードを参照する事。
それから、レコードのポインタは取った直後しか信用できないお。
0212デフォルトの名無しさん
2007/03/15(木) 14:34:35自分は正しいハズだ!バグだらけのSTLメ
>>?(多分、自分が間違ってるとは思うんですが・・・
叩かれたらイヤだから一応こう言っておこうか
結論::190% >>208のプログラムバグ
例外発生の呼び出し箇所をデバッガで見れば、普通なら一発で原因はわかる。
0213デフォルトの名無しさん
2007/03/15(木) 14:47:45スレ見てる人がSTLの正しい使い方と間違った使い方を理解できるんなら。
ソースキボン。
0214デフォルトの名無しさん
2007/03/15(木) 15:13:080215デフォルトの名無しさん
2007/03/15(木) 15:15:33数多くのレスでボコボコにされるのであった。
0216デフォルトの名無しさん
2007/03/15(木) 15:17:350217207
2007/03/15(木) 18:24:31BCB の方が作りやすいんですが表示できないんじゃしょうがない・・・
0218デフォルトの名無しさん
2007/03/15(木) 18:24:53STLとは相性悪いと思うよ
0219デフォルトの名無しさん
2007/03/16(金) 10:31:56俺のvector、今年ついにCodeGuardからエラーが出なくなった
BCB5w
0220デフォルトの名無しさん
2007/03/16(金) 11:07:580221デフォルトの名無しさん
2007/03/16(金) 20:50:510222デフォルトの名無しさん
2007/03/17(土) 00:10:52BCB5 = RW
BCB6 = STLPort
までは知ってる
0223デフォルトの名無しさん
2007/03/17(土) 10:29:410224デフォルトの名無しさん
2007/03/20(火) 22:28:20多国語対応するためBoland Developper Studio 2006(trial)をXPにインストール、TntWareDelphiUnicodeControlsSetup.exeをDLして実行。よくわからんがC:\Program Files\TntWare\Delphi Unicode Controls下のDesignとSourceをインクルードとライブラリのパスに追加。
TntLibR.bpkを開く。メッセージに[警告] 認識できないオプション : M (Pascal コンパイラ)が出る。
無視してプロジェクトマネージャのTntLibR.bplを右クリックしてインストールを選ぶ。
すると[Pascal 致命的エラー] TntWideStrings.pas(19): F1054 Do not refer to TntWideStrings.pas. It works correctly in Delphi 2006.というので、泣いてTntWideStrings.pasをプロジェクトから削除する。
さらにインストールすると、パッケージ:C:\Program Files\TntWare\Delphi Unicode Controls\CBuilder\TntLibR.bplを登録できませんでした。このパッケージはデザイン時には使えません。
となる。
どうやったら上手くいくですか?
0225デフォルトの名無しさん
2007/03/21(水) 22:45:48#include <iostream>
#include <fstream>
#include <string>
//...
int main(int argc, char* argv[])
{
std::ifstream ifs("C:\\boot.ini"); // 適当なテキストファイル
std::string s;
while (!ifs.eof())
{
std::getline(ifs, s);
std::cout << s << '\n';
}
return 0;
}
特に問題なく動いたんですが、CodeGuardをONにしてコンパイル・デバッグして実行すると、
CodeGuardが「関数に不正なファイル/パイプ ストリームが渡されました。」と言います。
どこか間違ってるでしょうか。ご指摘願います。
0226207
2007/03/21(水) 23:34:12当方 BCB6 ですが、いきなり最終手段を。
TntLibD.bpk を開いて TntLibR.bpi と書かれている部分を削除して
インストールしたところ登録されました。
で、実際の使用なんですが、ヘッダファイルがないと言われたので
hpp をプロジェクトフォルダにコピーしてソースの方も hpp に変更。
さらに TntWare\〜\Source 内の pas をプロジェクトに追加して構築したら通りました。
ええ、どう考えても間違ってます。
正しいインストール方法が知りたいですね・・・
0227デフォルトの名無しさん
2007/03/23(金) 08:52:56いきなり最終手段ですか。奥の手として頂戴しておきます。
大陸の掲示板を見ると記事がありますが・・・・読めん
とりあえず、ありがとうございます。
0228デフォルトの名無しさん
2007/03/23(金) 11:23:34getline()やってからifs.eof()をチェックする。順番が逆。
0229デフォルトの名無しさん
2007/03/24(土) 14:33:15A->Pictrure->Assign(B->Picture) ってやるのはどっちが速いですかね。
両方同じ画像形式だとして。
0230デフォルトの名無しさん
2007/03/24(土) 19:30:25procedure TImage.SetPicture(Value: TPicture);
begin
FPicture.Assign(Value);
end;
が呼ばれるので、効果は全く同じものだが、どっちが早いかといえば
その呼び出しのオーバーヘッドがあるとみればそりゃ下だわな
0231デフォルトの名無しさん
2007/03/24(土) 21:38:33IOエラーが出るのですがこれを回避できないでしょうか?
0232デフォルトの名無しさん
2007/03/25(日) 01:15:11SetErrorMode(SEM_NOOPENFILEERRORBOX)でどうでしょう?もとに戻すのを忘れずに。
0233デフォルトの名無しさん
2007/03/25(日) 01:44:34ありがとう御座います
調べてそれをしたのですが、
ディスクが有りませんというエラーは消えたのですが
どうもTurbo Cの方?
のI/Oエラーと出てくる方が消えなくて困っています
説明不足で済みません
0234デフォルトの名無しさん
2007/03/25(日) 01:52:380235デフォルトの名無しさん
2007/03/25(日) 04:40:33「直接利用せず 'system.hpp' をインクルードしてください。」が出ます。
#include <System.hpp>でしか駄目ですかね。
0236デフォルトの名無しさん
2007/03/27(火) 11:29:36BCB6を使ったアプリをVista対応したいのですが、
BDS2006(2007はDelphiしか出てないorz)等を使って、
うpグレードされたVCLでExeを作るべきなのでしょうか?
簡単にBCB6のままVista対応したいのですが、
既にVista対応された方はどうされたのでしょうか?
0237デフォルトの名無しさん
2007/03/27(火) 13:26:230238デフォルトの名無しさん
2007/03/27(火) 14:14:480239デフォルトの名無しさん
2007/03/27(火) 19:08:11俺は普通にBCB6で作ったアプリをVistaRC2で動作確認してVista対応としてるけど。
0240デフォルトの名無しさん
2007/03/27(火) 19:51:54対応方法教えて下さい。
こちらは未だVi$ta用PC見積もり中orz
0241デフォルトの名無しさん
2007/03/28(水) 00:35:5764ビットに対応した↓これと同じ事をBCB6で行うにはどうすれば良いのでしょうか?
sscanf( str, "-D%lx", &Wd );
0242デフォルトの名無しさん
2007/03/28(水) 06:44:14scanf系は知らね
0243デフォルトの名無しさん
2007/03/28(水) 20:01:08プロジェクト Project1.exe が EAccessViolation クラスの例外を生成しました。
という例外が出てしまいます。
どうしてこんな例外が出てしまうのでしょうか?同じことを体験した方はいませんか?
実行環境はWinXp, C++Builder6Proです。
あるコンポーネントとは、TRichEditやTCppWebBrowserやTDdeServerConv...等です。
BCB6を削除したあと、インストールし直してみましたがダメでした。
TRichEditやTCppWebBrowser等が使用するシステムファイルがぶっ壊れているのかもと考えましたが
怖くなったのですぐにその考えは頭から消し去りました。
原因か解決策があれば教えてください…よろしくお願いします。
0244デフォルトの名無しさん
2007/03/28(水) 22:49:020245デフォルトの名無しさん
2007/03/29(木) 00:08:42フォームに設置するのみで起こるのか?
0246デフォルトの名無しさん
2007/03/29(木) 09:51:10過疎または隔離スレで誰も見に来ないのか、それとも質問が幼稚過ぎなのか・・不安なので
よろしくです。
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/22-23
0247デフォルトの名無しさん
2007/03/29(木) 12:30:34手順の説明が足りませんでした。すみません。
BCB起動→新規作成→アプリケーション→あるコンポーネントをフォームに配置→実行→何もせず終了
で、終了時にEAccessViolationが投げられてしまうんです。
TButton, TEdit, TMemo等を配置しても、この例外は投げられませんでした。
0248デフォルトの名無しさん
2007/03/29(木) 12:34:37CodeGuardつけてみたら?
■ このスレッドは過去ログ倉庫に格納されています