1 :
デフォルトの名無しさん :
2006/04/06(木) 16:33:24
3 :
デフォルトの名無しさん :2006/04/07(金) 23:12:38
産
4 :
デフォルトの名無しさん :2006/04/08(土) 07:23:58
声
5 :
デフォルトの名無しさん :2006/04/08(土) 16:27:13
色
6 :
デフォルトの名無しさん :2006/04/09(日) 00:58:05
調
オhルスレ
8 :
デフォルトの名無しさん :2006/04/12(水) 11:04:57
保守点検
9 :
デフォルトの名無しさん :2006/04/12(水) 18:10:01
入力の画面で全角の文字がかけません、コンパイラーの設定を間違えたのでしょうか?教えてください。
せめてどのクラスを使っているかぐらい書け
11 :
なにゃ :2006/04/14(金) 02:55:29
コンパイラーをダウンロードしたのですがコンパイル出来ないのは何でですか?
12 :
SOURCE ◆tAo.kQ2STk :2006/04/14(金) 02:58:23
ソースが悪いからか、あるいは環境が整ってなくてコンパイルに必要な条件がそろってないからだと思います。
>>11 よかったら、ソースファイルと何をするソフトか(大まかに)を教えてください。
2chのみんなが訂正してくれると思います。
PorlandのC++で5.5のフリーのコンパーラーをダウンロードしたんですが ソフトを解凍してから先が、説明を読んでも分かりません・・・ 教えてください・・・
どうもすみませんでした・・・
16 :
デフォルトの名無しさん :2006/04/18(火) 09:49:29
ADOQueryを使ってDBGridに表示させています。(BDSを使っています) で、DBGridに表示している情報をexcel形式にエクスポートしたいのです。 とりあえず1つのテーブルをエクスポートしてみましたがうまくいきません。 あるDelphiの本を参考にしてみたのですが・・ DataModule1->ADOConnection1->Execute('SELECT * INTO SEEK_01 ' + ' IN "顧客.xls" "Excel 8.0;" FROM T_顧客売掛 '); これで [C++ エラー] Unit1.cpp(954): E2129 文字列定数が長すぎるか、または長さが0 というエラーが出ます。 なにがいけないのでしょう? ちなみに参考にしたDelphiの本はDelphi6用のもので ADOConnection1->Execute('SELECT * INTO CUSTOMERS ' + 'IN "Northwind.xls" "Excel 8.0;" 得意先'); となっていました。
17 :
16 :2006/04/18(火) 09:54:21
すいません。 ADOQueryを使ってといいながら、別な例を書いてしまいました。Orz ADOQuery1->Connection->Execute(・・・・以下同じ) でも、全く同じエラーメッセージが出てしまいます。
19 :
デフォルトの名無しさん :2006/04/19(水) 19:10:46
自分はフリーソフトのCPadを使ってC言語を独習してみようと思っているのですが、 Borlandのサイトからダウンロードするのは上から三番目のCompilerでいいのでしょうか? また、ダウンロードの前にユーザー登録のような画面で住所や電話番号などの記入を 要求されるようなのですがこれはきちんと書くべきですか?
>>19 3番目と4番目を落としとけ。
何年も前に登録したが今までトラブルには遭ってない。
>>18 機械翻訳
-------
導入
インストーラアーカイブを実行することによって、 BorCVS のバイナリのバージョンはインストールされます。
それはインストレーションのために Microsoft Windows Installer を使います。
後に BorCVS フォルダーで見いだされた setup.exe プログラムを使うことによって、あなたは種々の開発環境から plugin をインストールするか、あるいは取り去ることができます。
手作業でそれをインストールすることは同じく可能です。
最初 BorCVS.dll ファイルはいずれかのディレクトリにコピーされるべきです。
それから、 CVS バイナリが必要とされます。
インストーラは CVS NT1.11.1を含みます、しかしもしあなたがすでに1つを
インストールしたなら、あなたはそれを使うことが可能であるべきです。
しかしながら、 BorCVS に付いて来る CVS バイナリを使うことは推奨されます。
ただパスをプリファランスダイアログに入力してください。
最終のステップはボーランド IDE で plugin を登録することです、そしてそれは、レジストリにキーを加えることによって、なされます。
添付されるアプリケーション(setup.exe)を使うか、あるいはレジストリエディタを使って、キー Software\Borland\_IDE_\5.0\Experts (_IDE_ は C++Builder あるいは Delphi のどこか)に行って、そして BorCVS という名前のストリング値を加えてください。
その項目の値は BorCVS.dll ファイルのフルパスであるべきです。
もしあなたがDelphiを使うなら、そしてもし C++ Builderがそのマシンの上にインストールされていないなら、あなたは同じく DLL CC3250MT.DLL を必要とします。
それはインストーラによってシステムディレクトリにコピーされます。
次のスタートにおいて IDE は BorCVS コマンドを含む "CVS" と呼ばれる新しいメニュー項目を示すべきです。
もしあなたがすでに BorCVS の前バージョンがあなたのシステムでインストールされるようにするなら、この新しいバージョンのインストレーションの前にそれを削除することは推奨されます。
----------
レス有難うございます。 レスを参考に手動でインストールしようとしましたが、どうやらExpertsのエントリが無いようです。 日本語のBuilderには対応して無いのか、、、、あきらめます。 有難うございました。
>>22 俺の環境にはある。
HKEY_CURRENT_USER\Software\Borland\C++Builder\6.0\Experts
中身はデモ用の設定のみ。
Expertsキーが無いなら作っても問題無いと思う。
>>18 最新のはうまくいかなかったから、BorCVSの最新リポジトリを落としてインストーラー込みでビルドしたらうまくいった。
手元にBCB6でビルドした奴があるけど必要だったら、うpするよ。
有難うございます!バッチリです(*´д`*) これで二度とプロジェクト落とさないですむようになりました。本当にありがとう!!
29 :
デフォルトの名無しさん :2006/04/22(土) 20:35:28
ひょっとして Canvas->PenPosに負の座標を代入したら最低0にフィックスされちゃいますか?
されない
31 :
質問 :2006/04/27(木) 19:18:38
mdbファイルとやり取りするには、 どのコンポーネントが楽ですか? 1レコード500バイト位で、 行って2000件程度な予定なんで、 それ程速度は求めません。 スタンドアロン環境で使用します。 蔵書管理程度と思っていただければいいかと。 宜しく御願いします
32 :
デフォルトの名無しさん :2006/04/27(木) 19:19:54
api
33 :
デフォルトの名無しさん :2006/04/27(木) 22:11:47
TToolBarで ToolBar1->DrawingStyle=dsGradient; と指定すると [C++ エラー] ToolBar.cpp(106): E2015 'dsGradient' と 'Extctrls::dsGradient' の区別が曖昧 というエラーが出ます。 このエラーをとるにはどうすればいいでしょうか。 enum TTBDrawingStyle { dsNormal, dsGradient }; と定義されているのですが、列挙型を明示的に指定する方法があるのでしょうか。
>>33 ToolBar1->DrawingStyle = Comctrls::dsGradient;
古いバージョン(BCB4)を持っていて そろそろ新しいのを買おうと思ってるんですが 最近のバージョンではアクティベーションがあるのですか?
38 :
デフォルトの名無しさん :2006/04/29(土) 09:03:30
TextOutしてて思ったのですが、でかい文字は勿論のこと、 小さ過ぎる文字も描画時間かかるんですね
39 :
デフォルトの名無しさん :2006/05/01(月) 09:04:46
AnsiStringのToInt()について 1000000000000000000000とかに対してこのメンバ関数を呼ぶとどうなりますか? 不具合が起こる場合、対処法を教えて下さい。
>>39 EConvertError例外
IDE外では"は整数ではありません"ダイアログ。
41 :
デフォルトの名無しさん :2006/05/01(月) 09:42:22
あり^^
42 :
デフォルトの名無しさん :2006/05/01(月) 13:52:44
RS232Cを扱うには、どのライブラリが良いでつか?
API直接が一番使い易いよ
44 :
デフォルトの名無しさん :2006/05/01(月) 18:21:11
Excelファイルの読み書きはどのようにすれば? ヒントやキーワードをプリーズ
>>44 Borland Answers C++Builder Q&A をGoogleに突っ込め
46 :
デフォルトの名無しさん :2006/05/02(火) 07:31:33
47 :
デフォルトの名無しさん :2006/05/02(火) 11:50:53
48 :
デフォルトの名無しさん :2006/05/02(火) 13:43:55
CreateFile
ここできいていいのかな BDS2006買ってC++Builder6の本見ながら勉強してます クラスエクスプローラの画面がどうやったらでてくるかわかりません 変わってしまったんですね それにしてもヘルプが見にくい。。。。
51 :
デフォルトの名無しさん :2006/05/02(火) 21:11:20
>>49 C++Builder6のクラスエクスプローラは、BDS2006の構造ペインに相当するのでは?
でもBDS2006の構造ペインで出来ることはC++Builderのクラスエクスプローラに比べて
少ないような気がする。
52 :
デフォルトの名無しさん :2006/05/02(火) 23:43:15
JETサイコー、DAOバンザイ、
TFormなどの頭のTはThreadの文字の略ですか?
Type あるいは(もともとPascalはドイツ生まれなので)Typ
分かりました。 有難うございました。
56 :
デフォルトの名無しさん :2006/05/12(金) 16:08:46
メイクとビルドの違いが分かりません
57 :
デフォルトの名無しさん :2006/05/12(金) 17:38:55
名句は作るんです! ビルドは再作るんです!
58 :
デフォルトの名無しさん :2006/05/12(金) 18:00:45
>>53 Turbo C++, Turbo Pascalからの伝統。
MSにCFormとか取られちゃったからね。
>MSにCFormとか取られちゃったからね。 あ、そいういうことか。 自分的には安易な「C」より某のライブラリって分かりやすいから重宝。
60 :
デフォルトの名無しさん :2006/05/19(金) 21:13:25
AnsiString AnsiPosとPosではPosの方が高速動作しますか?
機能が違うんだから速度比較しても意味なし
62 :
デフォルトの名無しさん :2006/05/19(金) 21:36:56
どちらを使ってもいい場合、どちらを使うべきですか?
63 :
デフォルトの名無しさん :2006/05/19(金) 22:47:18
僕は的外れな質問をしたのですか? マルチバイト文字においてはPosで1バイト文字を検索してはいけませんか?
> マルチバイト文字においてはPosで1バイト文字を検索してはいけませんか? 一般にはダメ。2バイト文字の2バイト目と誤認する可能性があるから。 AnsiPos() はそこら辺をうまくやってくれる。対象文字列が2バイト文字を 含まない、と確信できるときだけ Pos() を使うことが出来る。
65 :
デフォルトの名無しさん :2006/05/20(土) 02:01:54
ではシングルバイト文字と確信できる時は AnsiPosよりPosの方が高速動作が期待できますか?
期待できるね、真相はしらんけど
>>58-59 TurboC++にはTxxxというclass名のついたライブラリが付いてたでしょ。
で、その当時はMSはC++処理系を発表して無かったよ。
あと、当時のCマガだかの記事で、 先頭のTはTurboのTではなくTypeのTだと Borlandの人が言明している。
Delphi ユーザにはそれ常識
Metroworks とか Symbian とかも Thogehoge だしね。
71 :
デフォルトの名無しさん :2006/05/23(火) 21:56:23
Canvasにrectangleなどで描画した後に、それを消去したい場合はどうすればよいのですか? onpaintイベントに書き込むと残ってしまうのですが・・・
XOR演算で書いたものを再度XORで書くといった手法はあるけど 消去する事は一般的には出来ない だから、再度全部描くというのが普通
C++ Builder 6 を使用して Window XP でプログラムを 作成しています。 質問なんですが、画像(bitmap)を描画したフォーム上にリストビューを配置、 そのリストビューの背景を半透明(または完全に透明)にしたいのですがどうしたらいいのでしょうか? フォームのcanvasをコピーしてリストビューの背景色と ごにょごにょやればできるかと思い、OwnerDrawプロパティをtrueにして CustomDrawイベントで、 void __fastcall TfrMain::ListView1CustomDraw(TCustomListView *Sender,const TRect &ARect, bool &DefaultDraw) { Sender->Canvas->Brush->Style = bsClear; Sender->Canvas->CopyMode = cmSrcAnd; Sender->Canvas->CopyRect(ARect,this->Canvas,this->GetClientRect()); DefaultDraw = false; } のようなことをやってみたのですが、さっぱりです… しかも自分でもなんだかトンチンカンなことをやっているような気がしてならないのです。 ヒントだけでも教えていただければ嬉しいです… よろしくお願いします。
フォームのCanvasからリストビューの下のフォームに描かれてる絵を取得するのは無理。というか描かれていない。 考え方としては、フォームに描画してるBitmapをうまく位置を合わせてリストビューにも描くって感じ。
>74 ありがとうございます! 位置を合わせて書くとは思いもよりませんでした… さっそく試してみます。
ADOConnection+ADODataSet+DBGridでアプリを作成しています。 SQLでの検索、フィルタを使った絞込みなど、うまくうごいているのですが、 検索結果、またはフィルタリング結果が1回でも0件が出た時、FormCloseすると 「リソースリーク・・・メモリブロック(xxxxxx)が開放されていません」と表示されます(デバッグ時) 検索・フィルタリング結果が0件ではなかった時は特に問題なく終了します。 ちなみに、日付項目が空欄だった場合はADODataSetのOnGetTextイベントで無理やり" − − −"を 表示するようにしています。 回避策をご存知の方いらっしゃいましたら、ご教授ねがいたいのですがよろしくお願いいたします。
77 :
77 :2006/05/29(月) 09:27:53
あ、バージョン書き忘れましたがBDSでBuilder使用しています。(OSはXP SP2)
78 :
76 :2006/05/29(月) 09:28:59
スイマセン・・77は76の誤りです。orz
78は77じゃないのか
BCB6Proです。 HWND hWnd=FindWindow(NULL,"これが親窓"); で得られた親窓の子ウインドウをEnumChildWindowsで列挙したいのですが、 具体的サンプルソースのあるサイトを教示願いたく。 まんまのサンプルソースを提示していただければなおありがたく。
>>80 代わりにFindChildWindowにすれば?
>>80 EnumWindowsなりでぐぐれば出てくるだろ
ちなみに自アプリならTWinControl::Controlsプロパティに子ウィンドウが格納されてる。
84 :
81 :2006/06/01(木) 14:39:45
>>82 あるか?
俺は見つけられなかったんで代替案を提示したんだが。
多分ぐぐるくらいはしていると思われ。
EnumChildWindows の検索結果のうち 日本語のページ 約 548 件中 1 - 10 件目 (0.23 秒) 大量に出てきたぞ。 いっぱい例付きがあるじゃん。 まったく自分では調べていないクレクレ君だな。
86 :
81 :2006/06/01(木) 16:29:36
そりゃ出るφやぶいびぃだろ
87 :
81 :2006/06/01(木) 16:31:57
くだスレに書くような初心者が他言語読めるとは、 到底思えんかったがな
88 :
81 :2006/06/01(木) 16:32:51
くだスレに書くような初心者が他言語読めるとは、 到底思えんがな
C++って多言語なのかよ。 あふぉかよ
グーグルダンスを想定できない池沼は 逝ってかまわない
キモい展開だな
93 :
80 :2006/06/02(金) 01:23:04
すいません、結局よくわからなくて、 FindWindowEx で用が足りました。 ありがとうございました。
BCB6のスレッドとグローバル変数について質問です common.hにて HWND hWnd,hcWnd1,hcWnd2,hcWnd3,hcWnd4; を宣言してあって、これらの値をメモに書き出そうとしています。 hcWnd1〜hcWnd4はhWndの子窓のハンドルです。 メインスレッドからは //--------------------------------------------------------------------------- void __fastcall TForm1::reme() { Memo1->Lines->Add((long)hcWnd1); Memo1->Lines->Add((long)hcWnd2); Memo1->Lines->Add((long)hcWnd3); Memo1->Lines->Add((long)hcWnd4); } //--------------------------------------------------------------------------- とすればメモに書き出せるのですが スレッドから下記コードで書き出だそうとすると、0が並びます。 //--------------------------------------------------------------------------- void __fastcall Tdash::reme() { Form1->Memo1->Lines->Add((long)hcWnd1); Form1->Memo1->Lines->Add((long)hcWnd2); Form1->Memo1->Lines->Add((long)hcWnd3); Form1->Memo1->Lines->Add((long)hcWnd4); } //--------------------------------------------------------------------------- ツールチップ式評価では"(long)hcWnd1=853578"とか表示されるのですが、 なぜですか どうすれば意図したように動きますか
95 :
94 :2006/06/03(土) 14:15:44
上記はスレッドのUnit2.cpp内で long l1,l2,l3,l4; l1 = (long)hcWnd1; l2 = (long)hcWnd2; l3 = (long)hcWnd3; l4 = (long)hcWnd4; と書いても、l1〜l4には0しか代入されませんでした。 ツールチップ式評価では"(long)hcWnd1=853578"と表示されますが、 代入先は"l1=0"にしかなりませんでした。
>>94 TdashクラスのhcWnd1〜hcWnd4にはちゃんと値を代入しているの?
97 :
94 :2006/06/03(土) 15:54:55
>>96 へ? すいません
common.hをインクルードしてあって、
その中でHWND hWnd,hcWnd1,hcWnd2,hcWnd3,hcWnd4;としてあって、
Unit1.cppで代入してあり、
Unit2.cppでツールチップ式評価に値が出ていますが、
それでもダメなん?
98 :
94 :2006/06/03(土) 17:13:33
言葉(説明)足りないことに気付きました、すいません common.hはグローバル変数宣言所として使っています。 HWND hWnd,hcWnd1,hcWnd2,hcWnd3,hcWnd4; はグローバル変数のつもりです。 それぞれはメインスレッド(Unit1.cpp)の中で代入しています。 それをUnit2.cppで使用しようとしています。 Unit1とUnit2のそれぞれでcommon.hをインクルードしています。 当然、Unit1はUnit2を、Unit2はUnit1をインクルードしています。
99 :
デフォルトの名無しさん :2006/06/03(土) 23:22:36
100 :
デフォルトの名無しさん :2006/06/03(土) 23:25:11
>>98 HWND hWnd, …
ってcommon.hに書いてる内容そのまま?
ちゃんとextern付けて実体は1箇所で作ってる?
102 :
94 :2006/06/04(日) 01:21:43
>>101 レスありがとうございます。
common.hの内容そのままです。
exturn つけていませんでした。
とりあえずそれつけてコンパイルしたら
[リンカ エラー] 外部シンボル '_hcWnd1' が未解決(D:\〜\UNIT1.OBJ が参照)
が出てしまいました。
103 :
94 :2006/06/04(日) 01:32:57
恥ずかしながら、↓がcommon.hの全文です //--------------------------------------------------------------------------- #ifndef commonh #define commonh //--------------------------------------------------------------------------- //共通 extern HWND hWnd,hcWnd1,hcWnd2,hcWnd3,hcWnd4; //--------------------------------------------------------------------------- #endif
104 :
94 :2006/06/04(日) 01:38:23
externつけてるとコンパイル通らない為、externを外しました。 あいかわらず代入できない… 不思議不思議、なんでだろ…
おまえ、externが必要な理由がわからないなら 宣言と定義についてまず勉強しろよ。 コンパイルエラーだから外しましたってなんだよ一体。
それと
>>101 が書いてくれた文章を、ちゃんと一字一句理解しろよ。
108 :
デフォルトの名無しさん :2006/06/04(日) 20:17:59
>>106 宣言してるのは間違いなくコモンの中の一カ所だけですが
何かいけないでしょうか
Unit1とUnit2の#includeの位置にcommon.hコピペしてみ?#includeと同じ事だから。 Unit1とUnit2に同じ名前のグローバル変数が存在するべ?
TFormで質問です。 似たような処理をするフォームを複数使うので、TForm にメソッドを追加した派生クラスを作りたいのです。 ヘルプには 「TCustomFormから派生させる」とあるのですが、手順がわかりません。 そうやって作ったFormをフォームデザイナ上で使いたいのですが。
元になるフォームを作ったら、フォームを右クリックして「リポジトリに追加」するだけだよ。 そしたら、新規作成→その他→フォームにそれが追加されてる。
>>112 早速の回答ありがとうございます。
それはフォームテンプレートですよね?
メソッドを修正するときなどに親クラスを修正すれば派生クラスも修正される、
みたいにやりたかったのですが、IDE上での扱いが難しいのでしょうか。
作成したフォームを無理やり継承させてみた(TMyFormを作成し、TForm1::TForm1():TMyForm()とか)のですが、
ActiveXをはりつけるときにエラーが出たりするので正式なやりかたはないのかと思いました。
ん?リポジトリからフォーム選択するとき、継承を選んだ状態は望みの動作じゃないの? 元のフォームのメソッドを修正すれば、(もちろん子も再構築し直すけど)子も影響受けるよ?
>>114 >継承を選んだ状態
ぎゃー!ラジオボタンがまったく見えてませんでした。
こんなに簡単だったとは・・・。ありがとうございました。
すごく初歩的な質問なんですが、 Form2で選択した値をForm1で使用したいのですが どのようにすればよいのでしょう? Cではexternで値を共有してたんですが、BCB的というかC++的には どういう風にするのが一般的なのでしょうか? BCB6を使っています。
●Form1とForm2を分離しなくて良い場合 Form1にForm2をexternさせる。 で、Form1のコードで、 >String Value = Form2->getValue(); とかする。 ここで、 >String Value = Form2->Text1; なんてすると後でForm2のコンポーネント張替えしたときに困ることになる。
●Form1とForm2を分離しなければならない場合 Form1とForm2のオブジェクトを既に生成してあるメインルーチンがあるとする。 Form2にOnValueChangedイベントハンドラを持たせ、Form2の値が変わると自分でコールする Form2->OnValueChanged = Event_ValueChanged; //イベントハンドラを外から渡す Event_ValueChangedイベントの中で、 >Form1->setValue(Form2->getValue); してやると、Form1とForm2が完全分離。 しかし初心者は、イベントハンドラを自分で呼ぶ、イベントハンドラの型定義、イベントハンドラの実体定義が無理だろうからあきらめなさい。
単に Form1からForm2の値を参照するときは Form2->xxxxx Form2からForm1の値を参照するときは Form1->xxxxx じゃダメなの?
ヒント:OOP、抽象化
121 :
116 :2006/06/09(金) 12:56:44
>117-118 レスありがとうございます。 説明不足でしたがForm2には実行ボタンがあって それを押すとForm2は消滅するうごきとなっています。 で、Form1からForm2をShowModalすると戻り値にintを返すことが わかりましたので、Form2でその戻り値の中に選択した内容をビットに 意味づけして返してやる方向で作成中です。 (多分、これでやりたいことはできるとおもうのですが・・) レスいただいた内容も今後使うことがあると思いますが、 説明不足、深く謝罪いたします。ゴメンナサイ。 (Form2を表示しておいて、Form1から値が取れるとは、思いもよらなかった・・バカな制御系プログラマでして・・)
>わかりましたので、Form2でその戻り値の中に選択した内容をビットに >意味づけして返してやる方向で作成中です。 ほんとバカな制御系プログラマだぜ。 Form2をdeleteするまでは、Form2は普通に扱えるんだから、 Form2クラスに各種プロパティを付けるべきだお。
C++の基本的なことを理解していないんでしょ。 関数の結果は戻り値でしか返せないと思っているのだから。 おそらく、Win/C++系はまったくの初心者なのだろう。
>バカな制御系プログラマ
2ちゃんも初心者の単発質問厨でもう帰って来ない悪寒。
だから、
>>122-123 も読まずに終了。
TMemo にはじめからあるショートカットで 「すべて選択」のショートカット(Ctrl+A)はもともとなかったでしょうか。 昔はあったような気がしたのですが今実行したら効きませんでした。 コピーとか貼り付けは普通にショートカットで実行できます。 BCB3です。
126 :
デフォルトの名無しさん :2006/06/14(水) 00:54:58
Builder6です。 デバッグとリリースでリンクするライブラリを変更したいのですが、 どのように設定すればいいでしょうか。 とりあえずプログラム作成途中なので、デバッグ用のライブラリを プロジェクトマネージャに追加してビルドしています。
$(BCB)\lib\Debugにデバッグ用、 $(BCB)\lib\Releaseにリリース用のライブラリを置く。 リンクするライブラリを指定する。 #pragma link "hoge.lib" プロジェクトオプションの「リンカ」ページの 「デバッグライブラリを使う」のON/OFFでどちらを使うかを切り替えられる。
128 :
デフォルトの名無しさん :2006/06/14(水) 02:03:15
C言語をやろうと思い導入しました ですがうまくいきません ------ ビルド開始: プロジェクト: C, 構成: Debug Win32 ------ コンパイルしています... Cプラス.cpp .\Cプラス.cpp(4) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ビルドログは "file://d:\My document\Visual Studio 2005\Projects\C\C\Debug\BuildLog.htm" に保存されました。 C - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== となってエラーになります
>>127 うまくリンクできました。
ありがとうございます。
吊るすのかよ
‖ ('A`) | ( ) | | | | / ̄ ̄ ̄ ̄
イ`
y = ax(x=0〜30,a=0〜10)を1セットとして y = ax^2,y=ax^3…y=ax^n(nは任意の数) 作成し、折れ線グラフを作成しChart1にセットごとに色を変えて表示します。 質問としては第一にChartの色指定をプログラム上でできないか?ということと Chart1->Series[count]->AddXY(x,y,"",clRed); (色指定はclRedしか分からずHTMLみたいに#FFFFFFみたいに色指定したい) もう一つは 各セットごとにグラフの表示/非表示を選択できるようにしたいのですが RadioGroupでは複数選択ができず、CheckBoxを任意の位置に表示する方法がわからないため うまくできません。 以上教えていただけませんでしょうか?よろしくお願いいたします。
CppWebBrowserでブラウザの機能を実現しようとしているのですが、 Navigateしてから表示されるまでに時間がかかります。 ちなみにDelphiのTWebBrowserで同じように作ったものでは直ぐに表示されます。 [Delphi]表示されるまで2秒 WebBrowser.Navigate(Edit1.Text); [C++Builder]表示されるまで10秒 WideString tmp; BSTR url; tmp = Edit1->Text; url = BSTR(tmp); CppWebBrowser->Navigate(url); C++の方では CppWebBrowser->Navigate(Edit1.Text); だとコンパイル出来ませんでした。
>>136 つまり君は自分が阿呆だと言いたい訳か?
tmp = Edit1->Text;
CppWebBrowser->Navigate(Edit1.Text);
だとコンパイル出来ませんでした。
だとコンパイル出来ませんでした。
だとコンパイル出来ませんでした。
だとコンパイル出来ませんでした。
だとコンパイル出来ませんでした。
だとコンパイル出来ませんでした。
138 :
136 :2006/06/21(水) 02:47:30
ミス CppWebBrowser->Navigate(Edit1.Text); ↓ CppWebBrowser->Navigate(url); つまらん煽りはいらん。
139 :
136 :2006/06/21(水) 02:54:56
何か勘違いしてた CppWebBrowser->Navigate(Edit1->Text); >つまり君は自分が阿呆だと言いたい訳か? >tmp = Edit1->Text; >CppWebBrowser->Navigate(Edit1.Text); tmpは関係ないだろ。 読解力の無いアホめ。
>>139 おまい相当知能指数が低いな。
Edit1->Text;
Edit1.Text
と並べて間違いをおまいにも理解できるようにしてやったってこともわからんのか。
141 :
136 :2006/06/21(水) 03:42:41
だったら最初からそう書けよ。 回答者は誰でも分かる様な分かりやすい書き方を心がけろ。 ちなみに自己解決したからもうどうでもいい。
プログラムの話ではないんですが BDS2006に付属のBCBは 「BCB7」になるんすかね? それとも「BCB2006」ですか? そんなこと考えてたら仕事になりません。
143 :
デフォルトの名無しさん :2006/06/22(木) 00:59:00
>>142 Borland(R) C++Builder(R) for Microsoft(R) WindowsTM Version 10.0
144 :
142 :2006/06/22(木) 07:03:46
>143 長すぎね? もちっと短く出来ぬか?
Borland® C++Builder® for Microsoft® Windows™ Version 10.0 マジレスしとくと対応するDelphiと同じバージョンになる。 Del6 = BCB6 Del7 = なし Del8 = なし BDS2005(Del9) = なし BDS2006(Del10) = BDS2006(BCB10(製品名としてはBCB2006))
ttp://delphi.sakura.vg/lesson25.html を参考にしながらC++Builderでタブブラウザ作りに挑戦しているのですが・・
var
Child:TIEWindow;
:
:
Child := TIEWindow(TabControl1.Tabs.Objects[i]);
を
TIEWindow *Child;
:
:
Child = new TIEWindow(TabControl1->Tabs->Objects[i]);
としても
[C++ エラー] : E2285 'TIEWindow::TIEWindow(TObject *)' に一致するものが見つからない
と言われます。
何がいけないのでしょうか・・
そこnewじゃなくてキャストだべ
キャストって型変換ですか? new付けずにコンパイルした時 [C++ エラー] : E2459 Delphi 形式のクラスは演算子 new で構築しなければならない と言われたものですから・・
キャストのしかた間違ってんだべ
150 :
146 :2006/06/25(日) 10:58:08
申し訳ないですがさっぱりです・・ 諦めてシングルウィンドウで頑張りますorz
TIEWindowっていうフォーム名にしていないに1ペリカ
TIE-Windowと脳内解釈してTIE-Fighterの新種かとオモタ
153 :
146 :2006/06/25(日) 17:08:46
MDI子ウィンドウのNameはIEWindowにしてありますよ
Child = new TIEWindow; よく分からんがこれだけでいいとか
元コードと違うだろw
ただのキャストだって
Child = (TIEWindow*)TabControl1->Tabs->Objects[i]);
>>148 はエラーメッセージからして、一時オブジェクト作るコード書いてたんだろ
Child = TIEWindow(TabControl1->Tabs->Objects[i]);
156 :
デフォルトの名無しさん :2006/06/27(火) 11:00:12
Builder6.0で親フォームのメニューから何かを押した際に、 別なフォームを出したいと思うんですがどうすればいいんでしょうか? 今、Form1(親画面)Form2(別に構成している画面)を準備しています。 Form1のMENUの関数にどう記述すればいいんでしょうか? それとも何か設定が必要ですか? すみませんが教えてください。。。」
TForm2 *Form2; Form2 = new TForm2(this); // Form2->init(???); //form2に渡すものがあれば渡しておく Form2->ShowModal(); delete Form2;
158 :
デフォルトの名無しさん :2006/06/27(火) 12:46:46
>>157 ありがとうございます。
助かりました。
で、もう1つだけ聞きたいんですが
そのウィンドウを親の中心にくるようにしたいんですが
どうすればいいんでしょうか?
たびたびすみません。
TForm2 *Form2; Form2 = new TForm2(this); // Form2->init(???); //form2に渡すものがあれば渡しておく Form2->Position = poMainFormCenter; Form2->ShowModal(); delete Form2;
160 :
156 :2006/06/27(火) 21:22:37
>>159 ほんとありがとうございます。
大変助かりました。
感謝します。
一定時間置きにスクリプトを自動的に実行させたいのですが、 所定の時刻になるまでプロセスをスリープさせておく関数ってありますか?
Sleep
タスクスケジューラが出てきたのでついでにクレクレしちゃいますが… CORBAのサーバアプリケーションを作ったのですが、 コイツを通常に起動する分には全く問題ないのですが、 タスクの「システム起動時」だとうんともすんともいわないのです。 ログを取るとコンストラクタすら走ってません。 「ユーザログオン時」も、ログオン後数秒のタイマをかませないとダメなんです。 何をどう調べればいいのか、ヒントだけでもお願いできないでしょうか?
165 :
sage :2006/06/29(木) 17:48:41
コンパイルの質問です。 bcc32とコマンドプロンプトでソースファイルをコンパイルする時 エラー E2194: ファイル 'test.c' が見つからない と表示されます。検索してみたらディレクトリが関係してあるそうなのですが コンパイルするときソースがあるディレクトリに移動してコンパイルしなければいけないのでしょうか? さっきソースのあるディレクトリで試してみたら成功したのですが、これはC++Builderのパスがしっかり通ってないということでしょうか?
すみません、間違えて名前欄にサゲ記入してしまいました...
168 :
デフォルトの名無しさん :2006/06/29(木) 22:13:41
Canvas->LineTo(x,y)で書いた線を、消す方法って何がありますか?
書く前の状態を保存しておくとか、XOR で書いて XOR で消すとか。
>>168 ・背景色でもう一度LineTo
・描画前の画像を保存しておいて、その保存画像をもういちど描画
171 :
デフォルトの名無しさん :2006/06/29(木) 23:25:48
172 :
デフォルトの名無しさん :2006/07/05(水) 17:49:02
BCB6において、 ------------------------------------------------------- #include <FileCtrl.hpp> AnsiString Directory; SelectDirectory("フォルダを選択してください","\\",Directory); ------------------------------------------------------- を"実行時パッケージを使って構築(&B)"のチェックを外してコンパイルすると [リンカ エラー] 外部シンボル '__fastcall Filectrl::SelectDirectory(const System::AnsiString, const System::WideString, System::AnsiString&)' が未解決(C:\DOCUMENTS AND SETTINGS\hoge\UNIT1.OBJ が参照) が出てコンパイルできません。 何が原因で、どう対策すればコンパイルが通るようになるか 御教示願います。
173 :
172 :2006/07/05(水) 18:34:48
とりあえず解決しました プロジェクトにvclx.libを追加してエラーが出なくなりました このやり方で正しいのでしょうか?
別にいいんでない? ただうちはFileCtrl.hppをインクルードするだけで、勝手にbprファイルのライブラリのとこにvclx.libが追加されるけどね。
175 :
172 :2006/07/05(水) 19:52:07
>>174 うん、それが不思議
今までこんなこと無かったんだけどな…
Perlを一通り勉強し終わって、 c++勉強したいと思ってます。 C++ builder6かVC++ 開発環境どうしようか考えています。 本屋とネットでどちらが勉強しようか調べてみたら Builderの方がドキュメント少ないように思いました。 近所の結構大きい本屋では、VC++の本はたくさんあったんですが、 Builderの本は一冊もありませんでした。(ちょっとびっくり) VC++の方が初心者にとっては勉強しやすいでしょうか?
builderやるなら本なんて要らない
Builderはしばらくver up止まってたから
> VC++の方が初心者にとっては勉強しやすいでしょうか? それはそうですね。本もその他の情報も圧倒的に VC++ が有利。 ユーザもいっぱいいるからいろいろ教えてもらえる。 BCB が便利なのは、簡単に GUI を作れることだけ。 ま、これがけっこう大きなメリットだが。
てか開発環境依存の本はいらない気がするが‥‥ C++の学習に必要なのはVC++やBCBの本じゃなくてC++の本。 あとBCB標準のフレームワークのVCLについてはDelphi用の書籍で事足りるし。
181 :
デフォルトの名無しさん :2006/07/09(日) 10:59:33
C/C++をまったく知らないのなら、GUI設計とかは当面関係ないだろうから VC++で決まり。情報量がまったく違うから。無料版があるしね。 Borlandにも無料のC++はあるけど。 現時点で、わざわざ金だしてBuilderを購入する必要性は皆無。 C++を理解してMFCとGUI設計に怒りを感じたら、Builder(Borland Developer Studio)を検討すればいい。
C++Builderで携帯アプリを作るのは可能でしょうか?
183 :
デフォルトの名無しさん :2006/07/09(日) 12:58:54
点を左から右に移動させるだけの簡単なプログラムの作り方教えてください
BCBスレでVC勧めるのもどうかと思うがなあ 俺が使い始めたBCB1当時はVCがかなり使いにくかったのでBCBは直感的に分かってすんなり使うことができたけどね
C++Builderで携帯アプリを作るのは可能でしょうか?
でもC++初学者にBCB薦めるのはなぁ‥‥ 言語の独自拡張積極的に使うことになるしあまり‥‥
イベントハンドラ作ろうとすると いきなり__fastcallとか出てくるし 文字列はAnsiStringだしね。
呼び出し規約はどうでもいいけど__closureは。
>>183 ファイル->新規作成->アプリケーションして
フォームをダブルクリックして
double px,py,vx,vy;
int x,y;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
py=Height/2;
px=10;vx=3;vy=-0.5;
x=-1;
}
タイマーを配置、Interval を20とかに変更 。そのタイマーをダブルクリックして
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
px+=vx;
py+=vy;
if(px>=Width-10 ||px<10) {vx=-vx;px+=vx;};
if(py>=Height-10||py<10) {vy=-vy;py+=vy;};
Canvas->Pen->Mode=pmNot;
if(x>0) Canvas->Ellipse(x-5,y-5,x+5,y+5);
x=px;
y=py;
Canvas->Ellipse(x-5,y-5,x+5,y+5);
vy+=0.02;
}
>>186 AnsiStringは便利ですよ
俺なんてAnsiStringとTStringListがなかったら何もできないよ(つД`)
VC++にはそういう拡張ってないんですか?
VCにはCStringとCStringListがあるぞ。 CStringはLPCTSTRのキャストオペレータがあるから、VCに慣れると.c_str()と書くのが非常に面倒になる。
まずはC言語を勉強しようと思ってるんですが、C++BuilderでC言語で書いたコードをコンパイルできるでしょうか?
すみませんC++Builder Personalです
できる
>>191 俺の場合文字列周りはほとんどAnsiStringで固めちゃってるから.c_str()使うのは珍しいAPI使うときくらいだな
builder か VCで迷ってたものなんですが、builderにしました。 その節はお世話になりました。 で、入門書一冊読み終わって、次に「猫でもわかるネットワーク・・・」 買ってきたんですが、わからないクラス?が 出てきてちんぷんかんぷんです。 なんかいきなりいろいろincludeして、 なにやら使っているっぽいです。 猫でもわかるのかと思って買ったんですが、 入門書一冊だけで歯が立ちません。 猫以下の知識みたいでs listen,connectまでは、大体同じパターンなのかなぁ。 ぐらいの感覚で、正直細かいところが全然です。 途方にくれているところなんですが、 わからない関数とか一つずつbuilderのヘルプや ネットで調べていくしかないんでしょうか。 全部調べても次々と忘れていきそうです。 ネットワークプログラミングは、パターンが決まっていて、 コピペして、それを改造していくぐらいで大体のものは できるんでしょうか? なにかアドバイスお願いします。;;
indy使えばイインジャネーノ?
>>195 ロジックまわりはstd::stringやstd::wstring使ってるな。
>>196 初心者でいきなりネットワークですか
まあ簡単なやつならコピペできると思うが
>>199 今の現状ですが、
「マスタリングTCP/IP」の書籍
といろんなサイトを見て、
ネットマスクのAND計算、パケットの仕組み、
どんな風に届けられるのかなど勉強しました。
とりあえずどうしていいかわからないので、
シンプルなチャットのクライアント/サーバの
サンプルプログラムをいろいろ探してます。
何種類かダウンロードしてみて、
どんなコンポーネント使ってるとか
コードのパターンが見えてくれば、
コツがつかめるような気がしてます。
もし、ほかのお勧めの勉強方法や
先に勉強したほうが良い順番が
あればアドバイスお願いします。
Winsock2.0プログラミング読んで ネットワークプログラミングスレのリンクに目を通して TClientSocketがWSAAsyncSelectを使ったソケットをラップしたものだとわかってれば 普通に何でも出来るよ。 httpとかのおしゃべりをするだけなら Indyとかの出来合いのものを使ったほうがよっぽど楽だけどね。
c++.netのご相談をさせて頂いてもよろしいでしょうか? どこで質問していいのかも分からない内容なのですが
>>201 「Winsock2プログラミング」
アマゾンでレビュー見るとよさそうな本ですね。
ちょっと値段が高いので、ネットワークスレのリンクから
勉強したいと思います。
>TClientSocketがWSAAsyncSelectを使ったソケットをラップしたもの
具体的なアドバイスすごい助かります。早速調べてみます。
ありがとうございました。
>>202 どこで質問していいかは俺もわからないけど、ここはスレ違い。
205 :
デフォルトの名無しさん :2006/07/13(木) 16:07:44
Indyってバグだらけじゃん
魔宮の伝説
C言語で作ったソースのコンパイル方法をご教示ください
Indy って便利だけど、バージョン間でのコード互換性が微妙
>>207 プロジェクトにソースを追加してメニューからメイクする。
211 :
デフォルトの名無しさん :2006/07/13(木) 21:08:32
バグのないプログラムなど無い。 ソースが公開されているから自己解決できる。 情報もそれなりにある。
Vistaのベータも普通にダウンロードできるようになったみたいだし、 段々MSDNサブスクリプションに入っている意味が無くなっていくな・・・
>>208 それはある!なんでわざわざプロパティ変えるかなーとかね。
215 :
デフォルトの名無しさん :2006/07/24(月) 20:28:08
今、スレッドを学習しているのですが 宣言から、フォーム閉じるで終了まで以下で正しいでしょうか? 何か足りなければ教えてください。 また、 MyThread = new TMyThread(true);で宣言したスレッドのThreadIDを 得るのはどうしたらいいでしょうか? PostThreadMessageを使いたいのでThreadIDが必要なんです。 TMyThread *MyThread; void __fastcall TForm1::FormCreate(TObject *Sender) { MyThread = new TMyThread(true); } void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { if(MyThread->Suspended == true) MyThread->Resume(); MyThread->Terminate(); } void __fastcall TForm1::FormDestroy(TObject *Sender) { MyThread->WaitFor(); delete MyThread; }
>>215 スレッドIDならそのまんまのがメンバ変数にあるだろ
217 :
215 :2006/07/25(火) 21:23:13
>>216 すみませんがそれが分からないのです。
HELPを見たら
__property int ThreadID = {read=FThreadID, nodefault};
ってあったんですがこれを宣言するとThreadIDとして使えるって事ですか?
クラスに宣言しても、Cソースに宣言してもだめでした。
>>217 プロパティは外からはメンバ変数として扱えるからMyThread->ThreadIDで普通に読み出せるはずだが。
219 :
215 :2006/07/25(火) 21:58:30
>>218 PostThreadMessage(MyThread->ThreadID,メッセージ,(WPARAM)NULL,(LPARAM)NULL);
作ったスレッドに↑でメッセージを送ろうとしていたのですが
何度やってもエラーで戻ってくるのでThreadIdが無効なのか?と思ってましたが
これではだめでしょうか?
The thread to which the message is posted must have created a message queue, or else the call to PostThreadMessage fails. そのスレッド Window をつくってメッセージループ動かしてる? そもそも、普通のワーカスレッドでどうやってメッセージを受け取るつもり?
221 :
215 :2006/07/25(火) 22:48:48
>>220 void __fastcall TMyThread::Execute()
の中でGetMessageループで受け取ろうかと思っています。
これじゃだめですか?
CreateThread()でID得て関数指定してやると出来るんですが
Builderではどう実現すればいいのでしょうか?
スレッドを作る→メッセージ渡す→受け取る→関数に飛ぶ
みたいな流れを作りたいんです。
ウィンドウ作らないとメッセージキューができないのでは? よくしらんが。
そんなことはない
そうなの?
1回空打ちすればOK
Eclipseのがどんなんか知らないけど、表示→デバッグ→呼び出し履歴でたどれる。
228 :
デフォルトの名無しさん :2006/08/07(月) 21:41:34
BCB6 TCppWebBrowserで開いたウィンドウのハンドラってどうやって取得するのでしょうか。 TCppWebBrowserそのもののハンドラはTCppWebBrowser->Handleでとれるんですが、 どうも表示しているHTMLは制御できないようで・・・ TCppWebBrowserはPageControlの中に置いています。 よろしくお願いします。
HWND hwnd; hwnd = FindWindowEx(CppWebBrowser1->Handle, NULL, "Shell DocObject View", NULL); hwnd = FindWindowEx(hwnd, NULL, "Internet Explorer_Server", NULL);
C++Builderのショートカット一覧みたいなのって無いですか?
231 :
デフォルトの名無しさん :2006/08/08(火) 12:48:27
超初心者です。lsコマンドみたいなことしようと 思っているんですがわからないことがあります。 TSearchRec SearchRec; if( FindFirst( "C:\\hoge\\*.*",faAnyFile,SearchRec)==0 ){ printf("FileName=(%s) FileCapacty=(%d) Attr=(%d)\n",SearchRec.Name.c_str(),SearchRec.Size,SearchRec.Attr); while(FindNext(SearchRec)==0){ printf("FileName=(%s) FileCapacty=(%d) Attr=(%d)\n",SearchRec.Name.c_str(),SearchRec.Size,SearchRec.Attr); } }else{ printf("エラーだよ\n"); } --出力-- FileName=(.) FileCapacty=(0) Attr=(16)//16はfaDirectory(ディレクトリファイル) FileName=(..) FileCapacty=(0) Attr=(16) FileName=(hoge1) FileCapacty=(0) Attr=(32)//32はfaArchive(アーカイブ) FileName=(hoge2) FileCapacty=(0) Attr=(32) ・・・ --おわり-- @FileName=(.)、FileName=(..) この2つってなんのことでしょうか? 自分と自分より上のディレクトリのことかと思ったのですがなんでしょう。 検索するpathを"c:\\*.*"にしたら無くなりました。 Aディレクトリのファイルの検索だけしたかったら faArchiveにすればよいでしょうか。 よろしくお願いします。
232です。 コードすごく見づらくなってました。 ごめんなさい。
オブジェクトを返す関数Xで取得したオブジェクトをTListにAddしたいのですが、 TListはポインタしか引数に持てません。 取得したオブジェクトからポインタを取得するにはどういう記述をすればよいのでしょうか? 関数Xは、あくまでもオブジェクトしか返さない(ポインタは返さない)という前提です。
>>234 参照演算子。てかstd::vector使えと。
>>232 自分自身と親ディレクトリ
ルートディレクトリは自分に名前付いてないし親ディレクトリも存在しない。
そしてヘルプのfaArchiveの上の行嫁
236 :
234 :2006/08/12(土) 20:02:57
>>235 TList *list = new TList();
list->Add(&getHogeObj());
こんな感じでしょうか?
>>236 std::vector<Hoge> list;
list.push_back(getHogeObj());
238 :
デフォルトの名無しさん :2006/08/13(日) 04:05:11
既に配置したコンポーネントを、コンポーネント内包可能なコンポーネントにつっこみたい時はどうしますか? 既に配置した奴はデリートして一からですか?
240 :
デフォルトの名無しさん :2006/08/13(日) 07:56:54
>>237 vector にこだわる理由ってなに?
tlist でも十分じゃね?
いちいちnewで作るとか、取り出すのにキャスト必要とかダサー
>>243 ナルヘソ。
そんなあなたにお伺いしたい。
文字列系のライブラリは何を使ってますか?AnsiStringじゃないことだけは確かだが。
やっぱりstring?
>>244 > AnsiStringじゃないことだけは確かだが。
なぜ?AnsiStringを受け取る便利関数が多いし、コンポとのやり取りにも必要だから使ってるけど。
TListみたくvectorから乗り換える必要性を感じられないものとは違う。
仕事でLinuxとの共用ソース書かくときなんかはstd::string使うけどさ。
246 :
デフォルトの名無しさん :2006/08/15(火) 07:46:38
BCDEMOSのbiolife.dbをSQL Explorerで開いて、 フィールド Length (cm) についてSQLでSELECTしようとしたらエラーが出ます。 どういう事でしょうか
247 :
デフォルトの名無しさん :2006/08/16(水) 12:35:00
248 :
デフォルトの名無しさん :2006/08/16(水) 14:13:56
SELECT 'Length (cm)' FROM biolife; エラーじゃないですが、数値を表示してくれません><
じゃぁ,何を表示するの?
250 :
デフォルトの名無しさん :2006/08/18(金) 04:42:05
数値です><
251 :
デフォルトの名無しさん :2006/08/18(金) 04:43:13
Length (cm) という文字列がずらーっと表示されます><
252 :
デフォルトの名無しさん :2006/08/18(金) 04:45:29
IDE起動する度にダミーみたいなフォームが出て来るのをやめさせたいのですが。
255 :
デフォルトの名無しさん :2006/08/18(金) 14:26:23
InterBaseのDate型は年月日は格納できますが、 時分秒もできますか?
257 :
255 :2006/08/18(金) 15:59:56
258 :
デフォルトの名無しさん :2006/08/18(金) 17:29:06
paradox7 フィールド名は日本語より英語を使った方が望ましいですか?
日本語で使ってるがそれが原因と思われる問題には遭遇したことがない でも英語の方が無難かもしれない
260 :
デフォルトの名無しさん :2006/08/19(土) 06:51:44
あり^^
261 :
デフォルトの名無しさん :2006/08/19(土) 08:16:35
DBGridって他のコンポにフォーカス遷せないの? 一旦フォーカス入ったらマウス使わないと抜け出せない気がします マウスフリーアプリ開発のためにもこれは死活問題です><
Tabで抜け出せないって事? DBGridのoptionsにTabの設定が在るからから確認してみたら?
263 :
デフォルトの名無しさん :2006/08/19(土) 16:56:49
C++Builderをはじめて使う・・・・といより windowsでプログラムを初めてコンパイルしようとしてるのですが libのddrawが開かないと出てコンパイルできません 何が問題なのでしょうか?
264 :
デフォルトの名無しさん :2006/08/22(火) 11:34:45
ビシブローカーってなんですか?
ループ使うとき for で i++な回し方してる? それともiterator使ってる?
266 :
デフォルトの名無しさん :2006/08/23(水) 07:20:27
while使ってる
goto使ってる
根性で書いてる
269 :
デフォルトの名無しさん :2006/08/23(水) 20:06:04
UpDownコンポーネントをEditにAssociateして数値をアップダウン させたいのですが インクリメント設定は小数ではできないのでしょうか? できれば0.1ずつインクリメントしたいんですが 整数ではないとのエラーが出てしまいます。 0.1ずつのUpDownできる方法あたら教えてください。
270 :
デフォルトの名無しさん :2006/08/24(木) 09:22:31
アソシエートしないで、 アップダウン→ポジションを十で割ってエディットに入れれば? イベントはアップダウンのチェンジかクリックでいいっしょ
>>265 イテレータでイレースだっけ? やってもサイズは減るけどメモリは減らないのね
それで微妙なバグでた
もう for(int i=o; i<v.size(); i++) でいいと思う
front() + i かな? 先頭イテレータに+5すれば5番目だ、問題ない
>>271 >イテレータでイレースだっけ? やってもサイズは減るけどメモリは減らないのね
STLの仕様でつ。
メモリを開放するには、Effective STL 第17項に載ってるswap技法を使うらしい。
274 :
デフォルトの名無しさん :2006/08/25(金) 11:10:34
これまでVB6でプログラムを作成して来たのですが、C++に移行したいと考えています。 一応、C、C++の文法的な部分は参考書等で理解しているつもりです。 で、VCにすべきか、C++Builderにすべきか迷っています。 VCだとMFCを理解しないと使い物にならないという話を聞いた事があるのですが、 どちらの方が簡単に移行出来るか教えて下さい。
>これまでVB6でプログラムを作成して来たのですが、C++に移行したいと考えています。 そりゃ、コンポーネントを画面にベタベタするのはBCBしか無いお。 体験版落として起動した瞬間に分かる。 >VCだとMFCを理解しないと使い物にならないという話を聞いた事があるのですが、 ウィザードでMFCアプリケーションを生成してソース開いた瞬間にコケル。 生成されたソースからしてC++的に超汚い。
>これまでVB6でプログラムを作成して来たのですが、C++に移行したいと考えています。 もう一つ書いとくと、BCBのVCLにVB的な文字列ユニットが用意されている。 BCBで画面にペタペタ貼った後はVBコードみたいなの書いても高速安定動作するお。 C++の勉強はBCBに移行してから少しづつやれば良い。
OOP理解してないとあっという間にメンテ不能のスパゲッティが完成するけどな
>>274 C++Builderまじおすすめ。
ドラッグアンドドロップで、ポトペタできる。
VBからなら、Delphiの方が入りやすいかもしれない。
>>278 MFCだとベタベタな書き方とかWin32APIコールしまくりしか出来ない上、
トリッキーなことしないとやりたいことが出来ない仕掛けだからもっと恐ろしいお。
MFCプログラムを初めて見た人は泣きたくなると思う。
いちいち線を描画するのにCPenを宣言して、HDCを取得してして… MoveToでLineToしたあと、CPenとかHDCとかObjectの解放とか そんな事を全部自分でやらないといけないよ。MFCは。 VCLのTCanvasサイコー!!
MFCサイアクなのは、ダイアログが1リソースファイルに入っちゃって、 プロジェクトを超えてダイアログを使いまわしできない。
283 :
274 :2006/08/25(金) 18:15:43
皆さんレスどうも有難う御座います。 早速、C++Builderの体験版を入れてみました。 VBだとマニュアルなんて読まなくても、簡単な物なら即興で作れたのに、 C++Builderは、マニュアルが無いとサッパリ??? 早速、本屋に走りましたが、田舎なものでC++Builderの参考書は一冊もなかったです。 VCなら2、3冊はあるのに・・・(T_T) アマゾンで購入しようと思うので、お勧めの参考書があれば教えて下さい。
うちにはこの本があるようだ。 >C++Builder 6コンポーネント活用ガイド&実践プログラミング (Vol.1) >C++Builder6 コンポーネント活用ガイド&実践プログラミング〈Vol.2〉実践テクニック編 自分はDelphi→BCBに入ったので本読まなかった。
>>283 VBに似てると評判なんだけど...
コンポーネントも多くて便利じゃない?
まさか、「Borland C++ 2005」(←GUIライブラリが無い)と間違えてないおね...
287 :
デフォルトの名無しさん :2006/08/25(金) 20:33:42
コンポの作り方が良く分かりません><
ビルダー初めてなら C>プログラムファイル>ビルダー>サンプル ってフォルダがあるから、コピーしていじりまくればいいお サンプル100個ぐらいはいってなかったけ
>>283 漏れは無敵のC++Builderって本でほぼマスターできたよ
C++builderってさ、指定したメソッドが参照されてる場所をリストで表示してくれる機能ってないの? やっぱりファイル検索しかない?あれだと余計なのもヒットするからイマイチなんですよね
291 :
デフォルトの名無しさん :2006/08/26(土) 11:44:14
paradoxのフィールド型の、カウンタ型ってなんですか? シリアルに使うんですか? INTEGERより適してるとかですか?
>>290 漏れはあったらあったでウザイけどな
Ctrl+Fのプロジェクト内検索でいいんでね? あとブレークポイントで中はいるか
コード補完系って時間かかるから全部切ってるしね
んなことよりターボ君はまだか ヽ(`Д´)ノ
293 :
デフォルトの名無しさん :2006/08/26(土) 21:06:00
RADツールで開発したアプリを商品として売り出してバグが出たとする RADのあるコンポーネントのバグが重大な原因となっていると判明した場合 RADメーカーに損害賠償請求ってできるの?
294 :
デフォルトの名無しさん :2006/08/26(土) 21:18:09
paradoxのメモ型データは検索してもらえないのですか?
>>293 使用契約よく嫁。そういう保証は一切ないはず。
>>293 その辺もフォローするのがプロってもんでしょ
>>293 こんな安い開発環境でガタガタ抜かすな。
Ent版だとしたら、自分の金じゃなくて会社の金だろうし。
>293の言うようなことは殆ど無いから。 もし標準コンポ使ってそう言うバグが出たら知識スキルがなかった293が悪いと思います。 例えばTMemoやTRichEditのバグとか知ってるの?
>>293 (´・ω・`)カワイソス。ボロクソに罵られてるなw
>>293 ツールのコンポーネントが気にくわないなら、
作れるんだから自分で作ればいいんじゃね?
301 :
デフォルトの名無しさん :2006/08/27(日) 05:04:14
>>293 レベルの質問をするってことは、夏休みの学生だろ。
仕事でプログラミングしている奴だとしたら底抜け馬鹿レベルだ。
302 :
デフォルトの名無しさん :2006/08/27(日) 06:04:45
303 :
293 :2006/08/27(日) 10:13:38
俺(′・ω・)カワイソス
医療用の機器とか航空機に入ってるプログラムは、どんなコンパイラを 使ってるんだろうな。人命に関わるミッションに対する耐性を持つコンパイラ なんて存在するんだろうか?
>>304 さん
∧,,∧ / 図書館いって
ミ,,゚Д゚彡 < 歴史をひもといて
ミ つ旦)~~ \ みるのもいいかも
@ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪''∪
おもしろい発見あるかもよ。
アポロ13とか、飛行機事故とか。
医療用機器は、人命に関わる部分は
制御系のお仕事だね。
306 :
デフォルトの名無しさん :2006/08/27(日) 11:44:02
ハーバードやMITやカルテック主席卒の奴らが アセンブリ言語直打
首席
308 :
デフォルトの名無しさん :2006/08/27(日) 12:45:14
(///)
医療機器なんて最悪の場合停止したら再起動でしょ。結構PC用Winが使われてたりする。 本当の意味で再起動が許されないのは莫大な資金で打ち上げたロケットとかじゃね? それらの制御系の応答時間はリアルタイムOSが保障。
310 :
デフォルトの名無しさん :2006/08/27(日) 21:45:01
いわゆる落ちることが許されないシステムは、 落ちたらバックアップのシステムが支えるようになってるのが普通だろ。 ミスをしない人間などいないからな。 肝心のバックアップシステムがちゃんと動作しなくて、銀行のオンラインが停止したなんてことが 最近起こっている訳だけどね。 ロケットなんかは、リセットが許されるシステムだろう。 リセットして正常になるならリセットだろ。 ロケットのシステムをリセットしても、慣性飛行しているときには影響ないし。
312 :
デフォルトの名無しさん :2006/08/28(月) 00:40:11
ステータスバーコンポーネントって縦書きできないの?
オーナドローにすると画像でもなんでも表示できる。だから、自力で縦書きするといい。
314 :
デフォルトの名無しさん :2006/08/28(月) 03:23:29
paradoxの(MEMO)データって検索できないの?
315 :
デフォルトの名無しさん :2006/08/28(月) 06:16:19
paradoxの BLOBのテキストデータからも検索したい場合 どのような手法がポピュラーと思われますか?
>>292 プロジェクト内検索ってw
チミは規模の大きいシステム開発をしたことないんだね
317 :
デフォルトの名無しさん :2006/08/28(月) 21:13:29
延べ人数300人予算55億円のシステム開発くらいしかしたことないな。
小さすぎ
>>316 プロジェクト分割しろよwww
w ∧_∧ w
ヽ( )ノ
. / /
ノ ̄ゝ,,,.,.,,.,.,,,.,.,,.,,,.,.,,.,.,,,.,.,,.,,,.,.,,.,.,,,.,.,,
てかBCBでそんな規模の開発すること自体がナンセンス
321 :
デフォルトの名無しさん :2006/08/29(火) 02:33:20
BLOBテキストデータを検索対象にしたい時はどうしますか?
エクスプローラからファイル名をDnDで取得するのにDragAcceptFilesの方法は判るのですが、 フォーム上に複数のコントロールがあって、それぞれにDnDしたい場合はどうすればいいのでしょうか?
>>322 それぞれのコントロールのウィンドウハンドルで、
DragAcceptFilesすればいいじゃまいか。
eclipse覚えたらC++Builderがウンチに思えてきますた 今後のCDTの完成度に期待したい。
スクリプトGUIが増えればな〜 エンジン部分の言語とGUIを分離できればいいかもしれん
326 :
322 :2006/08/30(水) 13:44:19
>>323 DragAcceptFilesにはFormのHandleを渡さないとダメみたいなんですけど…。
そんなことはない
>>326 コントロールのウィンドウハンドルを渡すとそのコントロールのウィンドウプロシージャにメッセージが飛んでくるんだぞ?
329 :
デフォルトの名無しさん :2006/08/31(木) 04:03:36
DBGridコンポーネントはViewを表示できないのですか?
bcc5.5.1を使ってるんですが、 今、bcc32の5.6.4を入手しようとしたら、どこから入手できますか? buiderXのpersonalとかいうのは、もう落とせないみたいだし…。 期限付きのトライアルに含まれていたりします?
331 :
330 :2006/08/31(木) 18:51:22
すみません、微妙に自己解決しました。 turboC++のフリー版が出るのを待つ方がいいのかも、 という程度ですが…。
333 :
デフォルトの名無しさん :2006/09/01(金) 09:29:27
Listboxに曲名を表示してそれをダブルクリックすると再生 一曲演奏終了するとListBoxの次の曲を再生という風にしたいのですが void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender) { ListBox1->ItemIndex=ListBox1->ItemIndex+1; Play(); } //---------------------------------------------------- void __fastcall TForm1::Play() { TIniFile *ini; ini = new TIniFile(ChangeFileExt(Application->ExeName, ".ini")); tora=ListBox1->ItemIndex+1; MediaPlayer1->FileName = ini->ReadString("a",tora,"hoge"); Label2->Caption=MediaPlayer1->FileName; Label2->Hint=MediaPlayer1->FileName; MediaPlayer1->FileName=CDirectoryOutline1->Directory+"\\"+MediaPlayer1->FileName; delete ini; MediaPlayer1->Close(); MediaPlayer1->Open(); MediaPlayer1->Play(); } この状態だと最初に何か曲名をダブルクリックしてその曲の演奏が終了したあと次の曲は再生されるのですが、演奏中に別な曲名をダブルクリックするとエラーが帰ってきます。 演奏中に他の曲をダブルクックしたらその曲を演奏して、またその曲の演奏が終了したら次の曲を演奏という風にしたいのですが…どこをどう直せばいいのでしょうか。 詳しい方教えてくださいm(__)m
BCBは、C++記述で動くDELPHIエミュレーター。 なので、全てが重い。
>>335 ワロタ
確かにVCL部分に話を限ればそうだな。
すげー勘違いだな。別に何かラップしてるわけじゃないのに。
BDSのお試し版でいろいろやってます。 DELPHIで作ったコンポーネントをBCBでも試そうと 思ったんですが、いちいちクラス名変えないとダメなんですかねぇ。 その場はいいんだけど、改めて起動すると既にありますとか 言われちゃうんだけど。
>>337 勘違い?
回りくどいことしてるのには変わりないだろ。
>>339 Delphi型クラスとC++クラス両方を扱えるC++コンパイラ。
実行はDelphi/C++ともにネイティブコード。
342 :
339 :2006/09/02(土) 00:23:40
>>340 VCL。
頭がよければ、こんだけでわかんだろ。
>>341 馬鹿だな。コンパイラの仕事は多くなり、コンパイルは実際遅いが、
それは生成された実行ファイルの速度とは別の話だろ。
>>342 VCLがなしたって?VCL自体はDelphiでコンパイルされるが、
だからって、C++からVCLを利用するのに特別遅くなるようなコードは生成されないだろ。
マシン語レベルで見れば、例えば、関数やメソッドの呼び出しなんか、引数のPUSHとCALLだ。
DelphiだろうとC++だろうと、同じようなコードが生成される。
コード書く人は楽だけど、コンパイラの手数は増えるってことで、 画面操作とかはpDCとか触ったほうがコードは少なくてすむ。 さらにインラインでレジスタだけ渡せばもっとコンパクトになる。 それをC++記述にしたりVCLに任せるのですら、回りくどいことを しているという人もいるけど、そんな煩わしさを無視できるからこそ BCBの良いところだとも思う。原因不明の暴走とかのほうが煩わしい。 今はマシンパワーあるからBCBやDELPHIで充分だとも思う。
346 :
343 :2006/09/02(土) 00:37:50
あーごめん。341は340にレスしてると見まちがえた。 341の内容を理由に重いと言ってるのかと思った。すまん。
347 :
345 :2006/09/02(土) 00:38:35
>>341 >>343 本当ですか?
なんとなくBCBはDELPHIより遅い気がするのは俺だけ?
特にマルチスレッドとか。吐くコードが明らかに違うような気がするんですが。
>>347 >>344 で言ってるコードは、VCLの提供する変数や関数へアクセスする際のコードの話。
そして関数の中に入ってしまえば、当然同じコードが走るのでDelphiとC++の差は無い。
(だからVCLがなした?と。)
それ以外の部分は、当然差はあるよ?どちらも得手不得手あるだろうし、
DelphiとC++はどちらが速いかなんて不毛な議論はするつもりはないけれど。
>>348 コンパイラ、リンカは双方の差はない。
VCLは全く同じ仕組みということで良いのでしょうか。
ならばC++を使う分には絶対にVC++使いますけどね。
DELPHIもVC++も使えるので、BCB使う理由がないですよね。
>>347 馬鹿はすぐになんとなく遅いとか言い出す。
そして測定すると逆の結果だったりする。
あるいは、Builderの方だけ最適化がデフォだったりとかな。
気がするとか無意味で間抜けなこと言っている暇があるなら測定すれ。奴阿呆。
>>349 そりゃ別にいいよ。そう思うなら好きにすればいい。
352 :
デフォルトの名無しさん :2006/09/02(土) 02:18:44
ポトペタは急ぎの用事の時重宝
その通り。DelとVC++を使いたいならそうしなさい。 自分的にはVCLとSTLの両方が使えるBCB最強。
BCBを使ってQtとかwx開発してる人っている? おれはVCLの変な仕様が気に食わないのでそうしてるんだが。
>>349 BCBとVC++ではBCBのほうがVBに近い感覚でポトペタプログラムが作れるから
ずっと楽だよ。
なので客先からVC++を指定されない限りBCBで開発してる。
流れぶった切って質問を・・ NMUDPで文字列の送受信を自身に対して行いたいのですが どうにも受信出来ません。 ヘルプを参考に記述し、SendBufferに関する公式FAQも参照しました。 void __fastcall TForm1::BSendClick(TObject *Sender) { char buff[10]; strcpy(buff, "hoge"); NMUDP1->RemoteHost = "127.0.0.1"; NMUDP1->ReportLevel = Status_Basic; NMUDP1->LocalPort = 7743; NMUDP1->RemotePort = 7743; NMUDP1->SendBuffer(buff, sizeof(buff), strlen(buff)+1); } void __fastcall TForm1::NMUDP1DataReceived(TComponent *Sender, int NumberBytes, AnsiString FromIP, int Port) { char buff[10]; int i; if(NumberBytes <= 10){ NMUDP1->ReadBuffer(buff, sizeof(buff), i); Memo1->Lines->Add(*buff+": received "+IntToStr(i)+" bytes from " +FromIP+" on port "+IntToStr(Port)); }else{ Memo1->Lines->Add(IntToStr(i)+" bytes incoming, buffer too small"); } }
357 :
デフォルトの名無しさん :2006/09/02(土) 20:51:42
人間ってのは、はじめて触れた物が当たり前で、それ以外は変なものと思いこむクセがある。
大人になっていく過程で、世の中の多様性に触れて学習していく。
つまり
>>354 は、まだまだお子ちゃまってことだ。
359 :
デフォルトの名無しさん :2006/09/02(土) 23:22:47
Personal版は配布などに関して、非営利であることが要件でしたっけ?
360 :
デフォルトの名無しさん :2006/09/03(日) 00:39:12
非営利目的ですごいフリーソフト作って 解説本で収益を得るのはおk?
361 :
356 :2006/09/03(日) 03:34:26
自己解決しました。 しかし機能してませんねこのスレ
全部俺一人のせい
363 :
デフォルトの名無しさん :2006/09/03(日) 08:22:29
DBGridコンポーネントで論理型をフィールドとして表示する場合、 True/Falseで表示されるわけですが、 これをカスタマイズして例えばTrueなら"True"という文字列ではなく、 代わりに"○"を表示したい場合どうすれば良いですか?
>>361 機能していないのではない。
君自身のせいだろ。
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
それと自己解決したら、どうやって解決したかを書くのが礼儀だ。
君は、スレ違いの上に、ただのクレクレ君だ。
もう少し自分自身を顧みなさい。
365 :
356 :2006/09/03(日) 13:28:14
くだらねー質問スレでしょ? むしろ雑談してる奴がスレタイ嫁って感じだ
夏休みは終わったのに
>>356 みたいな馬鹿が湧いているようですね。
>356 名前:デフォルトの名無しさん 投稿日:2006/09/02(土) 20:12:44
>361 名前:356 投稿日:2006/09/03(日) 03:34:26
質問した時間帯とか考えれば、レスが付かないのは不思議ではありませんねぇ。
ここは
>>356 専用のなんでも相談室ではありませんよ。
質問するくらいならプログラムなんてやめちまえ!
このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
369 :
356 :2006/09/03(日) 17:26:28
Delphiくだスレのほうが圧倒的に雰囲気いいですね^^;;;;;;
370 :
363 :2006/09/03(日) 19:14:17
それで…その…教えて下さいませんか?
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
372 :
デフォルトの名無しさん :2006/09/03(日) 22:08:43
勇気を持って書き込んだのに酷い><
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
TTable、TQueryに計算フィールドを作り、 論理型フィールドの状態によってOnCalcFields内で○か×を文字として代入。
375 :
デフォルトの名無しさん :2006/09/04(月) 00:30:47
Shift+Del の検知法が分かりません>< あとTShiftStateの扱いもちんぷんかんぷんです。 解説お願いします。
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
377 :
デフォルトの名無しさん :2006/09/04(月) 07:49:33
勇気を持って書き込んだのに酷い><
if (Key == VK_DELETE) if (Shift.Contains(ssShift)) ShowMessage("Shift+Delete");
Osiri->Koumon->Unko->Sizeを AAA->SizeというようにUnkoまでをAAAに置き換えて 省略する方法があったような気がしますが忘れてしまいました。 どなたか教えていただけないでしょうか? ソースが横に長くなりすぎて辛いです。
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
>>381 申し訳ないです。C++の質問スレッドを探します。
Builderユーザーなのですが基本からやり直そうと思います(つд`)
単に一時変数に代入するだけだろ。 Unko_Type *unko = Osiri->Koumon->Unko; 荒らしてる356とその騙りは無視しとけ。
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
勇気を持って書き込んだのに酷い><
つまんねって。
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
このスレって超初心者用だからポインタ禁止。 new deleteも禁止。 データベース禁止。
オーバライドもオーバーロードも禁止。 newできなかったらTStringListが使えないと言う場合は TMemo->Lines推薦。TMemoポトペタVisible=falseでよろしく。
391 :
デフォルトの名無しさん :2006/09/04(月) 14:34:57
質問させてください。 下の様なプロジェクトがあり、 Project1.Unit1からProject2.Unit2を呼び出す場合(.Show)、どの様なコードを書けばよいのでしょうか? #include "Unit3.h"をしただけでは「未解決の外部参照'_Form2'がC:\\~~から参照されました。」とエラーが出てしまいます。 ProjectGroup1 +-Project1.exe |├Project1.cpp |├Project1.res |+-Unit1.cpp |├Unit1.cpp |├Unit1.dfm |└Unit1.h +-Project2.exe ├Project2.cpp ├Project2.res +-Unit2.cpp ├Unit2.cpp ├Unit2.dfm └Unit2.h
超初心者相手なので簡単に言ってしまうとできない。 超初心者には無理。 別の高度なスレで質問すれば可能になる。 ヒント:プロセス。フック。メッセージ。
393 :
391 :2006/09/04(月) 15:10:03
394 :
333 :2006/09/04(月) 18:15:47
>>334 なんとか解決できました。ありがとうございました。
395 :
デフォルトの名無しさん :2006/09/04(月) 19:37:29
>>374 DBGrid->Columnsでフォントカラーを背景と同じ色にして文字を特大にして、
さらにTrueの場合はDBGridのOnDrawColumnCellイベントで
ハンドラとしてColumn->CanvasにTextRectで描きたいマークを上塗りする事により解決しました。
その際、フォントとキャラセットを正しく設定しないとマルチバイト文字は化けてしまう事が分かりました。
以上報告まで。
ありがとうございました。
396 :
デフォルトの名無しさん :2006/09/04(月) 19:38:45
まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。 まずは、スレタイトルをよく嫁。はっきり言ってスレ違いだろ。
398 :
デフォルトの名無しさん :2006/09/04(月) 20:19:09
弁護士が社会に必要な事がよくわかる。 法規があっても、それが解釈の余地があるなら、 弁護人によっていかようにも解釈できてしまうからだ。
399 :
デフォルトの名無しさん :2006/09/05(火) 11:13:39
TChartについての質問はここでも大丈夫かな・・・ TCartをフォームに配置して、適当な棒グラフを追加。 次にTChartコンポーネント上にTButtonを配置 それで実行したらTChart上でマウスホイールをぐるぐる回すと回した方向に棒グラフが上下するんです。 TChartコンポーネントの上にボタンをおかなければ起きなかったんですが、 何か知ってる方いませんか?
400 :
399 :2006/09/05(火) 11:16:35
すみません、環境忘れていました。 BDS2006なのでBCB10、TChartはPro7.07 TComboboxでも動きました。 TLabelやTpanelでは動きません。
自分や子にフォーカスがあると、WM_MOUSEWHEELに反応して スクロールするようだけど。
402 :
399 :2006/09/05(火) 13:41:29
スクロールさせたくないのです。 自分か子にフォーカスがある場合、スクロール無効な処理をいれれば解決しそうですが・・・?
フォーカスもらわない SpeedButton するといいのでは
404 :
デフォルトの名無しさん :2006/09/05(火) 15:05:17
BCB6のOpenDialogについて質問します。 OpenDialogで一度に取得できるファイルの数に制限があるのでしょうか OpenDialog->Files->Countが1540にしかなりません。 また、コンポーネントの制限に関する記述はヘルプのどこを見れば出てきますか BCB4では"制限""TMemo"といったキーワードで出てきたと思うのですが。 どうかよろしくお願いします。
OS による制限 MSDN GetOpenFileName Function より Note, when selecting multiple files, the total character limit for the file names depends on the operating system and the version of the function. Windows 95/98/Me: (only ANSI is supported) no restriction Microsoft Windows NT4 and earlier: 32k limit Windows 2000/XP: (ANSI) 32k limit, (Unicode) no restriction いまどきなら Windows 2000/XP: (ANSI) 32k limit これにひっかかりそう
406 :
デフォルトの名無しさん :2006/09/05(火) 16:10:49
VCLのソースコードを見ると、OPENFILENAME構造体のnMaxFileメンバが MultiSelectBufferSize = High(Word) - 16; ... ... nMaxFile := MultiSelectBufferSize else と書かれているので、この辺りに上限があるのでは?
407 :
404 :2006/09/05(火) 16:25:26
>>405 ,406
早速ありがとうございます。
StringListの32kB制限って、OSから来ていたんですか! 知りませんでした。
となればOpenDialog->Filesがその影響下にあるので、当然そのような制限があるということですね。
ありがとうございました。
ヘルプにはその辺の理由は無くとも、制限が如何程のものか明示して欲しいところだと思いました。
日本語と併せて勉強してきます。
DelphiとかBuilderのMLって死んだの?
>>402 TApplication::OnMessageで、WM_MOUSEWHEELを監視して、
Chart1に来たらHandled=trueにすればいい。
410 :
デフォルトの名無しさん :2006/09/06(水) 00:02:05
イベントハンドラのSenderってTObjectで宣言されてますが あれって要するに、C++のポリモーフィズムによって いかようにも(その子孫達に)化けて渡せるって事ですか?
そのとおり
412 :
410 :2006/09/06(水) 02:32:30
また電波かって言われると思ってた 久しぶりに勘が当たりました あり^^
やるじゃん
414 :
399 :2006/09/06(水) 14:11:43
>>409 言われたとおり、ApplicationEvents1Message内に以下を書いたのですが、
Chartの上に配置したボタンにフォーカスがあるとうまくいきません。
GetClassNameはフォーカスのあるコントロール名が返ってくるようなので、
Chartから見た「子」全て識別する必要があるのでしょうか・・・?
AnsiString w_char = "";
char w_ccc[100];
if (Msg.message == WM_MOUSEWHEEL) {
GetClassName(Msg.hwnd,w_ccc,100);
for (int i = 0; i <= 99; i++) {
w_char = w_char + w_ccc[i];
}
this->Caption = w_char;
if (w_char == "TChart"){
this->Caption = "チャートキター";
Handled = true;
}
}
>>414 void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_MOUSEWHEEL && Msg.hwnd == Chart1->Handle)
Handled = true;
}
416 :
399 :2006/09/06(水) 17:58:40
>>415 ありがとうございます。
超スマートになりました・・・。
しかし、チャートはフォーカスを持つ事がない様なので一生走りそうにありません。
Msg.hwndにはTChartの子コントロールとなっているボタンのハンドルが入ってきます。
子コントロール全てを対象にする方法は、
「指定のスレッドに関連する子ウィンドウをリストアップする」
WindowsAPIのEnumChildWindowsで、TChartを指定して〜というかんじだと思うのですが、
EnumChildWindowsのコールバックというのが意味不明です。
わかりやすく言うとどういうことですか?
>>416 if (Msg.message == WM_MOUSEWHEEL) {
HWND hwnd = Msg.hwnd;
do {
if (hwnd == Chart1->Handle)
Handled = true;
} while ((hwnd = GetParent(hwnd)) != NULL);
}
子→親と辿った方が楽。
Turbo C++入れてみたんですけど VCLフォームアプリケーションとSDI・MDIフォームアプリケーションの違いって何ですか?
SDIとMDIはそれぞれコンポーネント配置済みの定型フォームが作成されるだけ。 VCLフォームに全部自分でポトペタ、プロパティ設定すれば何の違いもない。
ひょんなことからDELPHI5からBDS2006に変えたのですが、 昔のようにブ厚いマニュアルが付いてないし、ヘルプは大雑把だし、 ネットで見てもユーザーが少なくて参考にならない等、苦労してます。 試行錯誤でいろいろ自力で解決しましたが、いまだに解らないのか、 イメージエディタってやっぱり昔のをコピろってことなんでしょうか? まぁ、ファイル3つ移植するだけで済むんですけどね。
421 :
420 :2006/09/06(水) 22:09:24
あと、起動までにイライラするのはやっぱし我慢あるのみ? アドビが可愛く見えるっす。
苦労してください。
_________
∧,,∧ /
>>420 ミ,,゚Д゚彡< XN Resource Editor
ミ つ□) \
〜ミ ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪''∪
BDS2006を買って思いました BCB6使いやすすぎ
>>420 分厚いマニュアルは、リアル紙では付属していないけど、
ちゃんとヘルプの中に入っている。
>>425 SP1とSP2の中にな。
しかも、紙をペラペラめくる感覚でいかんだろ。
427 :
420 :2006/09/07(木) 02:31:29
>>422 お返事ありがとうございます。
苦労したおかげで、今では充分に理解していますよ。
リソースなんていくらでも編集する手段ありますし。
ただ、製品としてツールがあるのかどうかが知りたかっただけ
なんですけどね。マニュアル嫁とでも?
>>425 DELPHI(WIN32)部分じゃ全く苦労してないです。
ずっと5を駆使してきたから。
初めて使ったとして、あのあらずじしか書いてないヘルプじゃ
いきなり理解できないですよね。
関数やらを調べるのにしてもF1とかCTRLで使うとしても、
英文でしかもサンプルの無いページに飛ばされるわけですよ。
(それでも拙い読解力で頑張って読んでますけどね)
まぁ、5の分厚い日本語マニュアルでもワケがわかなかったけど...。
428 :
デフォルトの名無しさん :2006/09/07(木) 05:49:46
>427 同感です。 「Delphi6 プログラミングバイブル」という良本があるが、 これを商品に標準で付ければ、開発ツールとしての価値は 断然上がると思う。 Turboシリーズの日本語化の際には、ぜひ考えてほしい。 商品価格は上がってもいいから。 >ボー様
反対。毎回付けるのは無駄。その分、価格が上がるのは許せない。 本屋で買うかどうか決められる方がいい。
ヒント:標準添付なら著者が儲かる
ヒント:ドキュメント不足を本がないことのせいにするな
432 :
デフォルトの名無しさん :2006/09/07(木) 13:52:21
TWebBrowserについて質問
表示したサイトに付いているボタン押下判定がしたいのですが、
TApplicationEventsを使って出来ますか?
例
WebBrowser1->Navigate("
http://www.google.co.jp ")
で、Googleの検索ボタンを押した!というのをフックしたいの。
TWebBrowserで表示したサイト内のコントロール全てが子ウィンドなんてことはないでしょうか
WebBrowser内のコントロール(エレメント)は、ウィンドウじゃないので、 コントロールのメッセージの監視というのは無理。
>>432 TApplicationEventsでは無理。
DOM使うのがノーマルなやり方だろな。
435 :
デフォルトの名無しさん :2006/09/07(木) 14:53:25
>>433 ,434
無理ですか
DOOM?(´・ω・`)
DOMについて調べてみます。
ありがとうございました。
436 :
デフォルトの名無しさん :2006/09/07(木) 18:33:15
TEditからテキストエディタ(メモ帳等)に値をドラッグ可能にしたいのですが、 TEditのOnDragOverイベントを使うのでしょうか?
>>435 具体的にはIHTMLDocument2インタフェース
JavascriptでHTMLドキュメント内の要素を自在に操作できるスキルあるなら簡単。
>>431 クソドキュメントのせいじゃないとしたら、
普及してないせいだね。
昔、DLLやパッケージで何を配布すればよいのかを、 試すだけでも半日掛かった。 まさか、マニュアルに書いてあるとでも?
そんな簡単なことは書いてないだろ
>>439 なになにが足りませんとか言われるからそれを持ってくるだけですよ。
>>440 口ばかり達者なのはミエミエだから黙ってろ。
超初心者用スレなので。
>>439 =441はBCBの初心者なのはまぁスレ的にいいとしても
自演の初心者なのが痛々しくて、そっちはどうにも見てらんない。
BCBには、DelphiのProfessional版以上についてくる、 ショートカットキーのCtrl + Shift + Cによるクラスのコード補完みたいなのはないんでしょうか?
ある
>>445 すみません、質問が悪かったです。
そのショートカットキーを教えて下さいorz
>>446 キーはない。
しばらく待つだけ。
設定はツール→エディタプロパティ→支援機能
449 :
デフォルトの名無しさん :2006/09/08(金) 11:19:10
作ったdllを静的リンクさせる方法を教えてください。 ダイナミックリンクライブラリプロジェクトをつくり、1つ適当な関数 extern "C" __declspec(dllexport) int hogehoge() { return 666; } をつくり、メイクを実行してdll,libが出来ました。 次にVCLフォームアプリケーションプロジェクトをつくり、 先ほどつくったlibファイルを追加したのですが、hogehoge関数が呼び出せません。 何が足りないのでしょうか・・・。
>>449 呼び出し側でそのhogehogeを宣言してあるか?
451 :
449 :2006/09/08(金) 13:42:52
xxx.hに以下のようにかいてあります extern "C" __declspec(dllimport) int __stdcall hogehoge(); 場所は「extern PACKAGE TForm2 *Form2;」の下です。 こうではないですか?
>>451 それでいいはず。
tpりあえずエラーメッセージ晒してみ?
っとヘッダのほうもexport
454 :
449 :2006/09/08(金) 17:52:48
>>452 __declspec(dllexport)へ変えました。
が、以下のエラーがやはり出ます。
↓出ているエラー
[リンカ エラー] Error: 未解決の外部参照 'hogehoge()' が C:\BORLAND STUDIO PROJECTS\テストDLLPJ\DEBUG_BUILD\TESTPJ.OBJ から参照されました
しかし、__stdcall を消したら実行できました・・・。
ヘルプを引いてみると、
↓↓
_stdcall と __stdcall キーワードを使うと,コンパイラは標準の呼び出し規約を使って関数呼び出しを生成します。ただし,C とは違って,関数は正しい数と型の引数を渡さなければなりません。通常,C では関数の引数の数が可変でもかまいません。
このような関数は,WIN32 の引数渡しの標準規則に従います。
↑↑
と書いてありますが、さっぱりわかりません・・・。
どなたか簡単に解説していただければ幸いです。
とりあえずありがとうございました。
455 :
449 :2006/09/08(金) 18:22:10
違う問題が出てきたので質問します。 引数が無いhogehoge関数は正常に値が帰ってくるのですが、 新たに以下の様な関数をDLLに追加しました。 >>DLL extern "C" __declspec(dllexport) int ShowMessageExclamationYesNo(char msg,char caption) { char w_msg = w_msg; char w_caption = caption; int w_flags = MB_ICONEXCLAMATION | MB_YESNO; int w_int; w_int = Application->MessageBox(PChar(w_msg),PChar(w_caption),w_flags); return w_int; } これをDLLを呼んでいるtestpj.hに extern "C" __declspec(dllexport) int ShowMessageExclamationYesNo(char msg,char caption); でプロトタイプ宣言?し、testpj.cppのbutton2clickイベントで呼ばせる様、以下のようにコーディングしたのですが・・・ void __fastcall TForm2::Button2Click(TObject *Sender) { char ww_msg[5] = {'1','5','3','6','9'}; char ww_caption[6] = {'a','b','c','d','e','f'}; ShowMessageExclamationYesNo(ww_msg,ww_caption); } コンパイルは通り、いざボタン2を押すと 「モジュール'USER32.dll'のアドレス77D0204Fでアドレス00000010に対する読み込み違反がおきました。」 と、エラーが出てしまいます。 何がおかしいのでしょうか?
とりあえず引数の型がめちゃくちゃだな
よくコンパイルが通ったもんだ。 ついでにDLLからexe側のオブジェクト呼び出しってできたっけ・・
できない。
>>440 =443
正解ですな。
でも442も同じヤシなのは見抜けなかったというか、
手のひらの上で踊らされてますね。
ということにしたいのですね。 442なんてどうでもいいレスじゃん。
今C環境に移行させようと、今まで作ってきたものをDELPHIから Cに移植してます。 ハードウェアの制御をスレッド作って裏でやらせてるんですが、 コントロールでHintを表示させると一瞬スレッドが停止しているように 見えます。 DELPHIでは今までそんなことは起きてませんでした。 ハードのほうは特に問題なく動いてるんですが、信頼性の面で心配です。 これはメインフォームでの見かけ上の問題なのでしょうか、 それとも本当に止まってしまっているんでしょうか。 同じような経験をされた方はいらっしゃいますでしょうか?
462 :
460 :2006/09/08(金) 22:31:03
そんなことどうでもいいじゃん。 初心者相手にしてたら本当に疲れるよな。 死ねばいいのに。
何で俺を騙ってんだろこのバカw
>>Hintを表示させると... 一瞬固まることがあります。 ちょっと手間は掛かるけど、ラベルなどで代用したらどうでしょう。 普段はVisible=falseにしといて、イベントかマウス座標で、trueにするとか。 もっと簡単な方法はあるかもしれませんが。
>>461 多分、「いわゆるメインフォーム」の見掛け上の問題かと。
今試したら、スレッドの無限ループ数をカウントしてメインに
表示させたらガクンと数字が上がったので。
そもそも俺はハード使うんだったらNT系のWINはおすすめしませんけど。
>>460 >>463 もうバカは放っておけやw
バカ相手だと疲れるだからすルーしとけやw
ここは超初心者がくるようなところじゃないんだからw
Turbo C++を入れてみたが、、、Rave Reportsの日本語解説書って 無いのかな。前世代のQuick Reportまではヘルプも日本語だったのに・・・
冷静になってみるとリポートツールなんて不要だよね
>>469 すまんが「ビジネス向けの出力」の定義が分からん
>>470 HISAGOの帳票に出力するときとか。
>>471 QReportなどはドットインパクトプリンタ対応してるから楽ってこと?
>>468 >>470 明細票など帳票の類なんだけど。
まさかWin32 APIのGDI、DCでもって描画するなんて(ry
ビジネス系のC++開発で某の出る幕ってあるのか?
>>473 MS-DOSみたいにプリンタに直接コマンド送りたいってこと?
はっきりしりねーな
>473 普通は自前でこの辺をライブラリ化しておくだろ、ってことでは。 うちではコンポーネントにしてる。DBものをやらないんで QuickReportとかRaveみたいに凝った機能が必要ないってこともあるけど。
帳票に反応ですが、 みんな送り状の印刷どうしてます? まさか手書き? 例えばドットプリンタって、まだ普及してるのかな?
PrintTool32はもう無いもんなぁ。
送り状の印刷をプログラム組んでやっている馬鹿はいないだろ。
>>477 まだドットプリンタの需要はあるよ。
スーパーなどへの納品伝票などは複写紙伝票だったりするしね。
EOS化で昔ほどの印刷量ではないけど。
481 :
デフォルトの名無しさん :2006/09/10(日) 12:02:32
つまらない質問で申し訳ないのですが、C++Builder と Turbo C++ って、どう違うんでしょう?
482 :
デフォルトの名無しさん :2006/09/10(日) 12:03:58
483 :
デフォルトの名無しさん :2006/09/10(日) 13:08:25
>>482 新ブランドではなかったな orz 復活したんだから・・
新製品というべきだった
485 :
デフォルトの名無しさん :2006/09/10(日) 16:20:05
>>479 昔の国民機などでやってたものをXPで使いたいときなんか困るよって話。
データベースからの帳票印刷をしたい時に、インターフェース部分を
自分で作らなきゃならないんだけど、メーカーが潰れてて資料が無かったりする。
新しいの買えと言われればそれまでの話です。
送り状だろうがなんだろうがTPrinter使えば印刷できるわけだが。 国民機の出力と完全に同じ汁!というおバカな要望でもない限り。
>>487 自分で出す分には妥協すればいい話だが、
企業にはとんでもないアホ上司も居るわけだw
イミフメ。TPrinter でできないことないよ。
>489 まぁ確かにTPrinterでできない(けれどもほかの方法ではできるような)ことは ないけど、PC-98時代のラインプリント主体の制御方法のままでの印刷ってのは それなりに面倒なところがあるからね。
>>487 >>488 だんだんスレ違いになってきたのでこれ以上はやめときます。
プログラマとして皆さんどうしてるんだろうという、
素朴な疑問だったんですが、自分の今の環境がBCBなんで、
参考になるかなと思った次第です。しかも辞めた人のお下がり。
指摘されるまでもなく同感なんですよ。
簡単におっしゃるが、凄く根っこが深いんでね。
使用者(おっさん&おばちゃん)とか、インフラ全体とか全て
考えなければならなくて、どうしたものか。
それを含めて上からGOサインが出れば苦労しないんですよ。
TPrinterいいなぁ、ブツブツ...
結局、愚痴言いたかっただけか
先日、C++Builder6を購入しました。 初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
>>492 まぁ、あなたに理解できるのはそのパートだけだったということでw
先日、C++Builder4を購入しました。 初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
ネタはネタすれでやれ
単位をMM_TWIPSにすれば国民機の 1/6インチ改行(だっけ?)とかにも対応できる品
8年前、C++Builderを購入しました。 初心者にでもわかりやすい説明サイトを紹介していただけないでしょうか?
500 :
デフォルトの名無しさん :2006/09/11(月) 23:14:46
音量の調整をするためには何からいじればいいんでしょうか。 tmediaplayerには音量を調整するような所は無いのでしょうか。
502 :
274 :2006/09/13(水) 12:56:29
以前、VCかC++Builderかで質問させてもらった者です。 その節はお世話になりました。 取り合えず、 C++Builder Personal C++Builder6コンポーネント活用ガイド&実践プログラミング (Vol.1) C++Builder6 コンポーネント活用ガイド&実践プログラミング(Vol.2) を買って、勉強中です。 そこで、質問があるのですが、 文字のバイト数を気にせずにプログラミング出来るように、文字列に WideString を用いている のですが、実行速度が目茶苦茶遅いのです。 試しに同じ物をVBで作ると半分以下の速度で実行出来ます。 やはり、WideString なんて使っては駄目なのですか? 速度を優先するなら、やはり文字は Char型 で扱うべきなのでしょうか?
WideStringで何をしようとしているのかくらい書けよ それはともかく、WideStringは、参照カウントを持たず、 コピーすると実体を必ず複製するので、WideStringでの代入をしまくるとそりゃ遅い。 ちなみにAnsiStringは、参照カウントを持っている。
504 :
デフォルトの名無しさん :2006/09/13(水) 13:43:29
とあるコントロールのKeyDownイベントで Key == "C" ↑と書いたらコンパイルで「'unsigned short' 型は 'char *' 型に変換できない」といわれ Key == 'C' ↑と書いたらコンパイルが通りました。 "と'の違いを教えてください。
"XXX" ・・・ 文字列の先頭ポインタ 'X'・・・文字の値
"n"は文字列 'n'は文字
507 :
500 :2006/09/13(水) 13:52:26
>>501 ありがとうございます。m(__)m
ググってもなかなか分からなかったので助かりました。
508 :
デフォルトの名無しさん :2006/09/13(水) 14:01:08
>>503 > WideStringで何をしようとしているのかくらい書けよ
どうも失礼しました。
今は、お勉強中で何を作るというのも無いのですが、
試しに、TMemo オブジェクトMemo1にかなり長い文章貼り付け、その文字列をWideString型の変数T1
に代入し、T1から一文字ずつ取り出し、「文字コードに変換し、それをまた、文字に変換し」、
WideString型の変数T2に代入して行き、最後に、T2をMemo2に表示するという単純なものです。
Memo2->Text = Memo1->Text;
では、あまりにも味気ないので、VBとの速さを試す為に作ったのですが遅さに愕然としました。
509 :
504 :2006/09/13(水) 14:18:25
>>505-506 ありがとうございます。
IF文で文字列を判定する場合は'xxx'でいいと思いますが、
""はどういった時に使うものなのですか?
>IF文で文字列を判定する場合は'xxx'でいいと思いますが ?
>>509 おまいさんは根本的にC言語から勉強し直せ
BCBを使うどころではない。
>>509 Pascalと勘違いしてない?
'xxx'とはかけないはず
513 :
504 :2006/09/13(水) 17:59:12
あれ!?(・ω・;) Cもあまり判っていません・・。 *はポインタ &はポインタの値 WORD &Key 'a' == Key 値 == ?!?!?!? どういうことですか
>Cもあまり判っていません・・。 うん、それはわざわざ言わなくても解るよ。w >どういうことですか 何が言いたいのやらさっぱりだw
>>513 その辺がわからんかったらしんどいよ
やはり基本はきちんと勉強せんと
>504氏 'X'は文字リテラル サイズは1バイト "X"文字列リテラル 文字列リテラルの末尾には自動的に'\0'が 挿入されるのでサイズは2バイト 注意が必要なのはこれらが式の中に現れた場合。 文字リテラルはそのまま文字として評価されるが、 文字列リテラルはその先頭文字へのポインタとして評価される。 char chr = 'X'; //chrの値は'X' const char* ptr = "X" //ptrの値は"X"の先頭アドレス んで、 if ( chr == 'X' ) ... ; // true if ( ptr == 'X' ) ... ; // 文字とポインタの比較 不可 if ( ptr == "X" ) ... ; // ポインタ同士の比較なのでコンパイルエラーにはならない // しかしtrueとなることは保証されていない
<つづき> 最後の例が引っかかりやすいところ。 const char* ptr1 = "X"; const char* ptr2 = "X"; ptr1とptr2が同値となる(同じアドレスが格納されている)かどうかは 仕様上は保証されていない コンパイラの仕事次第で同値のときもあればそうでないときもある まぁ、この辺の話が良くわからなかったらきちんとしたC/C++の入門書を読んで 勉強したほうがいい。ネットで断片的な情報を集めるだけだと中々きちんとした 理解には到達できないよ。
if ("abc" == "abc") printf("true"); else printf("false");
char a[] = "abc"; char b[] = "abc"; if(a == b) printf("true"); else printf("false");
char *a = "abc"; char *b = "abc"; if(a == b) printf("true"); else printf("false");
>>518 と
>>520 は実質同じで無保証
>>519 がfalseなのは保証される、というかaとbで別に領域取ってるんだからあたりまえ
なお、C++を使う以上、文字列リテラルを差すポインタはちゃんとconstにすべし
>>518 がtrueにならないのは違和感ありますね
524 :
デフォルトの名無しさん :2006/09/14(木) 06:39:43
>>520 がFalseになると思ってた僕にオヌヌメの本を教えて下さい。
>>518 のは重複文字列の単一化ってオプションで、どっちにも出来る。
527 :
デフォルトの名無しさん :2006/09/14(木) 11:43:38
ちょっと質問ですが フォームを開く際に同じフォームを複数ひらかないために以下のように呼び出し if( !Form2 ) Form2 = new TForm2(this); Form2->Show( ); Form2のDestroyで以下のようにForm2変数をNULLにしています void __fastcall TForm2::Form2Destroy(TObject *Sender) { Form2 = NULL; } これを複数開けるように呼び出し側で Form2 = new TForm2(this); Form2->Show( ); としてForm2DestroyでForm2 = NULL;をしても 複数開いて閉じたりしても特に普通に動作するのですが・・・ 例えば、3つ開いてそのうち1つを閉じた時にForm2の値はNULLになるので 残りの2つのフォームに影響でないのでしょうか??
>>527 Form2がグローバル変数なら問題出る気がす
529 :
デフォルトの名無しさん :2006/09/14(木) 13:09:59
ifstreamをつかってバイナリファイルを読み込んでいます。 ファイルの末尾からある一定の間隔を持ちながら後ろにさかのぼる様なプログラムを書きたいです。 例えば次のようなプログラムです。うしろからdeltaバイトずつスキップしながらデータをとっていきます。 while( 1 ) { fin.seekg(-i*delta , ios::end); if (終了条件) { break; } fin.read((char*)&data,sizeof(int)); 処理 ++i; } ファイルの「終了条件」を先頭にきたときとしたいのですが、 どうしたらいいでしょうか?
C++スレと間違えました・・・スミマセン
531 :
デフォルトの名無しさん :2006/09/14(木) 13:28:45
>>528 Form2はTForm2で定義されているグローバルです。
確かに問題ありそうなんだけど、何で普通に開いたり閉じたりできるのか・・
ちなみにそれを、Form2のグローバルを使わずにForm1のprivateとかに
TForm2 frm[10];
などと、定義して、最大10フォーム各々の配列で開いたとき
frm[cnt ++] = new TForm2(this);
frm[n]が開いてるか閉じてるかはどうやってみればいいでしょうか?
>>531 Form2Destroyは本当に呼ばれてる?
533 :
デフォルトの名無しさん :2006/09/14(木) 13:38:32
>>532 呼ばれてますよー
Form2を呼ぶときに↓でForm2が閉じられない限り新たに作られてないですから
if( !Form2 ) Form2 = new TForm2(this);
Form2->Show( );
>533 そのコードからは呼ばれてなくても正しく動くとしかいえないじゃん。 ブレークポイントしかけて確かめてみろ
何が疑問なのかよく分からんのだけども。 Form2をNULLにしたのに、それまで作成したフォームが普通に動くのが不思議なの? インスタンスとポインタの区別がついてないのかな?
536 :
デフォルトの名無しさん :2006/09/14(木) 14:08:21
質問する時間帯がまずかったか・・
一部のコードだけ見せられてエスパーしてやってんのになんだそのいいぐさわ
ああ、そっかw すでに生成したウインドウはForm2とは個別にインスタンスを持っている。 しかし、Form2はポインタで、Form2に何を代入しようが既存のウインドウは変化しないわけだ
フォームが既にあるか無いかの識別は?
管理指定なら、インスタンスを宙ぶらりんにせずに、 配列か、ヴェクターかしらんが、ポインタに入れとくべきだな。
Screen->Forms
>>542 それはTForm2クラスが存在するかどうかはわかるけど
違う変数で作成したときに区別がつかないとおもう。
フォームありなしなら
try{
frm->Show( );
}
catch(...){
frm = new TForm2l(this);
frm->Show( ); // ←MDIコフォームならいらない
}
どう?
区別したいならちゃんと変数をどこかに保持しておくべきで、 frm->Showの例外を期待するようなプログラムなんて普通しない。
if (frm = nil) then frm := TForm2.Create(self); frm->Show( );
あ、やべ、Delスレと間違えた。 if (frm == NULL) frm = new TForm2(this); frm->Show( );
>>549 そのfrmはどこでNULL入れてんの?
まさかそれグローバルでForm2で入れてるって落ちじゃないよね?
別にForm2のインスタンスが削除されても一緒に消えなけりゃ グローバル変数でも他のクラスのメンバでも何でもいいだろ。
>>551 いやいやそれじゃーどうやって
if (frm == NULL)
を、判断させるの?
これってどこかでfrmにNULLを入れないと、1回開いて閉じたら二度と開けなくなるよ
>>562 いや、だから、フォーム削除したときにNULL入れりゃいいじゃん。
何を悩んでるのかさっぱり伝わってこない。
今時MDIかよ
>>553 んじゃ君が言うfrmはグローバルでForm2のDestroyやデストラクタでNULLを入れるってことかい?
それならTForm2のソースに定義してあるForm2を使うのと全然変わらん。
んで、それを違う名前や配列でfrm2、frm3やfrm[n]として複数開く場合は
同じようにForm2のDestroyに全部記述するのかい?
>>555 > それならTForm2のソースに定義してあるForm2を使うのと全然変わらん。
だから
>>551 で変数なんか何でもいいって言ってるだろ。
> んで、それを違う名前や配列でfrm2、frm3やfrm[n]として複数開く場合は
> 同じようにForm2のDestroyに全部記述するのかい?
全部記述ってのがわからんが、配列から自分を参照してる変数見つけてNULLにすりゃいいだろ。
>>556 まあ、変数が何でもいいはおいとくとして
配列なら確かにforで回してアドレスが一致した奴をNULLでOKですね。
でも、各画面で個別にprivate等で宣言してるTForm2の変数で
Form2を作成するとForm2でNULLを入れることができなくなるけど
フォームを扱う場合はそういう使い方はしないのかな?
別にprivateでも、Form2が削除された事を通知してもらうpublicメソッドなりメッセージなり用意して、 Form2のデストラクタで呼んでもらえばいいし、そんななんとでも出来る事で何を悩むのか本当に不思議だ。
複数同時表示させたくないときはNULL入れりゃいいし、それ以外のときは関係ない話じゃないのか?
誰がフォームの存在を管理しているのか、 その管理順位の考察が甘いから混乱する。 管理すべきクラスが、ちゃんと管理するようにしろ。 破棄するならそいつに知らせる。 生成するなら、そいつにインスタンスを生成させて、 インスタンスアドレスを貰う。 ちゃんと管理主体を明確にすれば、何も混乱する必要などない。 >各画面で個別にprivate等で宣言してるTForm2の変数で アホか。 個別に適当にprivateに宣言すんな。 管理したいなら、ちゃんと管理しろ。 頭悪すぎだぞ。
Turbo C++ なんですが、新しいプロジェクトを作成しても 前回作成したプロジェクトと一緒になってしまうのですが どうすれば新しいプロジェクトを作成できますか? 例えば、project1がすでにあるとして、project2を新たに新規作成し VCLフォームアプリケーションで始めるとForm2,Unit2となって 前回のプロジェクトの続きになってしまうのです。
>>558 君が考えてることはとっくにわかってるんだけど、そんなめんどーな方法以外にはないの?
>>559 複数で別フォームから呼ぶ話しかしてないよ
>>560 private宣言したらダメな意味がわからない。なんで?
ちゃんと管理って何?君が言うちゃんとした管理って単にグローバルにするだけなのかい?
煽ることしかできない奴のレスはいらないよ。
わかりきった事を恥かしげもなくよく書けるね。
544みたいなコード書く奴が何をわかってんだか
564 :
560 :2006/09/15(金) 10:56:21
>>562 お、効果的な煽りだ。
一瞬むっとしたw
俺もまだまだだなぁ。w
>>563-564 とりあえず、スレタイを100回読んでからレスしてくださいね。
まず、知ったかぶりをしてるだけならレスは不要です。
そしてC++Builderスレは2つあるけど、このスレの意味を理解してください。
自分でまだまだと思うなら勉強してからレスしてね。
ああ、お前みたいな面倒な奴の相手はもう御免だ。 他の人にお願いするよ。
えらそうに言ってる奴に限って突っ込まれると答えれなくて逃げ出すww
普通の掲示板ならそうだけど、 2chで最後まで場に立ってるのは無自覚なお馬鹿さんだからw
経験者は語る、か・・・
前は2chも玉石混交だと思ってたけど最近は文字通りゴミばっかりになった希ガス
無根拠を粘着性でカバーしようとする奴が増えたからね。 利口じゃないのはお互い様としても、そのスタンスは泥沼だろうよ、と。
Borland系スレが寂れちゃったからね スレにそれなりのスキルのある人間が少なくなっちゃった いなくなったわけではないだろうが
絶対数が減れば、玉の数も減る。しかし、玉ほど他へ移行するのが簡単だから 結果として石の割合が増えてる ってことだ。某はもうダメっぽい
574 :
274 :2006/09/17(日) 15:39:52
先日はお世話になりました。 あれから、VBより速くする為に、WideString から AnsiString に改良しているのですが、 下のコードならうまく行くのですが、AnsiAscii( AnsiString& str )にすると上位バイト(-126)しか 取得出来ません。この様な時はどのようにすれば、WideString を使わずに処理出来るのでしょうか? 色々本やネットでも調べたのですが、判りませんでした。 すみませんが、よろしくお願いします。 vvvvvvvvv int TForm1::AnsiAscii( WideString& str ) { wchar_t buf[1]; swprintf(buf,L"%d",str[1]); return String(buf).ToInt(); } //---------------------------------- AnsiString TForm1::AnsiChar( int& str ) { wchar_t buf[1]; swprintf(buf,L"%c",StrToInt(str)); return (AnsiString)buf; } //----------------------------------
575 :
274 :2006/09/17(日) 15:40:40
続きです。 void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString c = "あ"; int i = AnsiAscii(c); ShowMessage( c ); ShowMessage( (String)i ); ShowMessage( AnsiChar(i) ); } //----------------------------------
576 :
デフォルトの名無しさん :2006/09/18(月) 02:07:48
すみません、つまらない質問ですが、 クイックレポートの中のQRExprで式の値をAnsiStringで取り出したいのですが、 ヘルプを見ても、(Value プロパティを使って式の値にアクセスします。) と書いてあり、いろいろ調べましたが、意味がわかりません。 どなたか、教えていただけないでしょうか?
>>576 このスレでは何を相談しても、バカwだのアホwだの言われて、
むかつくだけだからやめときな。
かといって、マイナー過ぎて書店に本売って無いんだよねー。
質問者自身が「つまらない質問ですが」って言ってるんだから、 回答する気も起きないだろ。たしかにつまらん質問だし。
579 :
デフォルトの名無しさん :2006/09/21(木) 19:02:10
それは、玄人にとってはつまらんと言ってるんだろ。 謙虚に質問してるんだから、優しくしてやる気にならんか? こういう欠陥のあるヤシばっかりだから、576は可哀想だが こんなとこで質問しないで、ネットで本買うなりしろや。
ここは回答する側が初心者なスレだから、 どんな本でもここの回答者よりは役に立つしな。
581 :
デフォルトの名無しさん :2006/09/22(金) 14:51:08
先生質問です C++ Builderで開発する時にどの本やどのサイトで勉強するのがベストなのでしょうか? C++ Builder 使い方 でgoogle検索しても中々いいサイトにヒットしません ひょっとして、というかこれは当たり前のことでc++を勉強すれば自然に使えるようになるのでしょうか?
>>581 VCLはDelphi関連のサイトや書籍で。
C++はC++の(ry
両方読んだ方がいい。
>>581 とりあえずスタートガイド
TurboC++2006だったら‥‥Del6Perで最初の展開時に出来るディレクトリにpdfで入ってるからそれよれでも読むといい。
>>581 サイトや書籍に書いてある簡単なDelphiのプログラムをBCBに移植する
事から初めて見ればよいかもしれない。
すぐにコツがつかめ、BCBでVCLを使ったプログラムを自由に作るには
どうすればいいかがわかると思う。
また、Object PascalはC++にはない機能がいくつかあり、それをサポート
するためにBCBのC++は拡張がなされている。またopen arrayなどC++の
拡張だけでは対応が難しいものに関してはマクロで代替えしている。
これらについてもヘッダーファイルを読む事により、徐々に分かってくる
はずです。
>>585 Delphiを知ってるならいいが知らないなら無駄じゃないか?
>>581 現在はどんな本が出てるのか知らないが超基本の本が1、2冊あれば十分
基本が分かればあとはヘルプとML過去ログで大抵のことはできる
>>581 まず基本的な使い方とVCLをマスターするには、カットシステムの
書籍が有効。つーか、これしか一般に流通していない。
そしてその後、本格的なシステム構築をするなら、インストールCD
に含まれているPDFドキュメントをプリントして読破する!
C/S型、分散型、Web型(CGI/Apach...)、などの構築方法について
唯一の日本語で書かれたマニュアルだ。
> インストールCD > に含まれているPDFドキュメントをプリントして読破する! Delphi10年つかってて知らなかったw
>>587 開発者ガイドは6まで製本されて箱に入ってるぞ。分冊して欲しいような厚さで読みにくいけど。(Per/Std以外)
BDS2006では、あの分厚い紙マニュアルは付かなくなった。 でもちゃんとpdfファイルとして入っている。 サンプルプログラムがいっぱい添付されているから どれか1個をすべて理解できるまで動かしながら読んでみるのがいいかも。
591 :
デフォルトの名無しさん :2006/09/22(金) 22:55:06
log2を使うにはどうすればいいの?log10は使えるけど
あと、質問して罵倒される人は、日本語自体がまともでないとか 意味不明の質問だったり、自分自身が何も理解していないで質問しているとか 情報を小出しにするとか まあ、最低限レベルのマナーを守っていない場合だけどね。
あとは、自分ではまったく調べようとしない人とかね。 せめて1回はヘルプで引けば、ここで聞く必要はないとかね。
594 :
587 :2006/09/22(金) 23:02:16
>>588 つ DISK2
└ \Documentation
├ qs.pdf ……………… クイック.スタート 102頁
├ dg.pdf ……………… 開発者ガイド 1294頁
├ oplg.pdf …………… Object Pascal言語ガイド 246頁
├ bcb6vclposter.pdf … VCL OBJECT HIERARCHY 1頁
└ bcb6clxposter.pdf … CLX OBJECT HIERARCHY 1頁
>>589 えーっ?! 俺のC++Builder 6 Professional版StarTeam Editionに
同梱されている製本マニュアルは
・クイックスタート
・VCL OBJECT HIERARCHY
・CLX OBJECT HIERARCHY
・ダミーな7枚の段ボールの切れっぱしw
だけだったぞ。(怒)
C++Builder 3の頃はStandard版でも開発者ガイド、その他数冊
が入っていたのに・・・。
絶版の「Delphi6プログラミングバイブル」のC++Builder版は
とうとう出なかったな。
596 :
594 :2006/09/23(土) 00:23:35
>>595 つまり、こういう違いがあった訳なのか・・・
-----≪
Borland C++Builder 6 Professional 通常版 ≫------
■ CD-ROM (4枚)
Borland C++Builder 6 Professional (2枚組)
Borland C++Builder 6 Companion Tools
Borland Enterprise Server Web Edition
・
・
・
■ マニュアル (3冊)
Borland C++Builder 6 クイックスタート
Borland C++Builder 6 開発者ガイド
BorlandEnterprise Server インストールガイド
--≪ Borland C++Builder6 Professional StarTeam Edition ≫--
■ CD-ROM (6枚)
Borland C++Builder 6 Professional (2枚組)
Borland C++Builder 6 Companion Tools
Borland InterBase 7.1 Development Edition
Borland StarTeam 6 Windows Edition (2枚組)
・
・
・
■ マニュアル (1冊)
Borland C++Builder 6 クイックスタート
棒は無駄に厚い紙使ってたからなぁ >開発者ガイド 辞書に使うような紙使えばあんな意味もなく分厚いマニュアルに ならなかったんだが
InterBaseのバージョンも違うのね。(通常版は6.5)
>>597 1/4/5部と2/3部に分冊すれば使いやすいのになぁ‥‥
600 :
デフォルトの名無しさん :2006/09/23(土) 17:03:10
hello worldすら出力できなくて挫折した
601 :
デフォルトの名無しさん :2006/09/24(日) 23:55:30
自分が調べたいことをパラパラと探せないし、 かといって、ろくなこと書いてないし、サンプルもないし。 書店で本をみればロクなこと書いてないワリにめちゃめちゃ高いし、 やっぱVCのほうがいいっすよ。 本なんて買わなくても周りに知ってる人がいくらでもいるし。 BCBはね、DELPHIやってる人のほうが詳しかったりして。 なんで今更PASCALやらDELPHI固めのGUI操作を覚えねばならぬ。
予言するがおまえにはVCも無理だろうな
いや、VC はもう使って10年近く飯を食ってるが
じゃあ浮気なんかせずそのまま食ってきなさい。 人生は短い。
デジタル土方暦10年。一生うだつの上がらない人生。
悲惨だな、BCB厨の人生。
悲惨すぎ、BCB厨の人生。
プログラミングで飯を食ってる時点でお前ら似たようなもんだろw 俺? 俺は趣味でプログラミングやってる開業医だが何か?w
ひまな医者だな・・・
BCB で飯食えるの?
614 :
デフォルトの名無しさん :2006/09/25(月) 22:50:43
601を書いたものですが反応が面白いですな。 実際にはBCB使ったことが無くて想像で書いてみましたが何か?
615 :
デフォルトの名無しさん :2006/09/25(月) 22:52:07
あと、正直に白状するとVCも使ったことありましぇん。 面白いねーおまいら。
完全に雑魚キャラのセリフじゃねーか。 そんなんでいいのかお前。
最初は釣りも煽りもこんなもんじゃね? 自爆しながら成長していくんだよ。
壮絶に釣りだったわけか・・・和良
10でたんか?
10で短歌?
10で炭化?
10で単価?
10で簡単??
624 :
デフォルトの名無しさん :2006/09/27(水) 22:38:12
あまり期待はしないで質問するが、 DelphiのAssign(うんちゃら)は、 BCBでは単にNULLを見ればいいの? 例えばねぇ......、やっぱやめたー。 ここの住人だと、ろくな答え返ってこないね。
そう
>>624 こいつはDelphiスレでも相手にしてもらえないんだろうなw
おまえと一緒だな
>ここの住人だと、ろくな答え返ってこないね。
>>626 みたいなヤシのこと言ってんだろうよwwwwwwwwwwwww
>>624 俺は無視してるが。
やるとすれば、NULLを見るのではなく、
コールバックなどで値が変化したかで判断するが。
629 :
デフォルトの名無しさん :2006/09/29(金) 03:27:16
ほんとにろくな答え返ってこないや。
>ほんとにろくな答え返ってこない それがBor信者クオリティじゃね
つうか、>624みたいな書き方したらどこのスレでもまともな答えは返ってこんと思うが。
\ U / \ U / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {0} /¨`ヽ {0} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ < バーカ! > / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
\ U / \ U / / ̄ ̄ ヽ, / ', / _/\/\/\/|_ \ ノ//, {e} /¨`ヽ {e} ,ミヽ / \ / \ / く l ヽ._.ノ ', ゝ \ < アホー! > / /⌒ リ `ー'′ ' ⌒\ \ / \ (  ̄ ̄⌒ ⌒ ̄ _)  ̄|/\/\/\/ ̄ ` ̄ ̄`ヽ /´ ̄ | | −−− ‐ ノ | / ノ −−−− / ∠_ −− | f\ ノ  ̄`丶. | | ヽ__ノー─-- 、_ ) − _ . | | / / | | ,' / / / ノ | ,' \ / / | / \ /_ノ / ,ノ 〈 \ ( 〈 ヽ.__ \ \ ヽ._> \__)
>>633 >>634 初心者ですみませんが、
このAAの何が面白いのか教えてください。
あと、C++Builderのどこがいいのかもついでに。
>>635 趣旨は違うが、
>>1 が言うとおりの本当に低レベルでくだらない質問だ。
くだらなすぎるから帰れ!
637 :
デフォルトの名無しさん :2006/09/30(土) 23:22:04
>>636 どっちに過剰反応?
AA?
BCBイジメ?
どちらにしろキモイよお前。
639 :
637 :2006/10/01(日) 01:09:59
負け戦でage続けた639の完敗だな。
642 :
637 :2006/10/01(日) 22:39:26
キモイに過剰反応?wwwww
637キモイ
>>637 >このAAの何が面白いのか教えてください。
別に面白くないと思います
>あと、C++Builderのどこがいいのかもついでに。
別に良いところは無いと思います
645 :
デフォルトの名無しさん :2006/10/02(月) 15:28:53
プロジェクトファイルやソースをデスクトップからノートPCに一式コピーしてコンパイルしたのですが 遅すぎて話になりません。10分以上かかっています。ディスクアクセスもしていないようです。 原因は何でしょうか?
647 :
デフォルトの名無しさん :2006/10/02(月) 16:43:57
int__64ってどこへ行っちゃったの? 古いソース使おうと思ったら…
__int64のことですか
649 :
647 :2006/10/02(月) 17:43:27
>>648 逝ってきます
てか、この古いソースって出元はなんなんだ?
>>646 ノートPCの環境は?
BCBのバージョンは?
651 :
635 :2006/10/04(水) 01:20:29
なんか、637のせいで酷い言われようだな。欝だ。
まだ粘着してるw
粘着してる奴は朝鮮人だろ。日本人のメンタリティではないな。
新規作成でアプリケーションを選択して、すぐに全て保存でP1.cppとP1.bprとしました。 一旦閉じた後、プロジェクトを開いて実行すると リンカエラー 外部シンボル'Form1'が未解決(C:\~が参照) リンカエラー 外部シンボル'TForm1::'が未解決(C:\~が参照) と出て実行できません。どうすればよいでしょうか。
>>655 P1.hみてみ。TForm1の名前空間はちゃんと定義されているか?
Form1 は確かextern TForm1 *Form1; とかになっているから、
名前空間の問題が解決されればコンパイルできるはずだ。
unit1.cpp を P1.cpp で保存したものが、P1.bpr の保存の際に生成される P1.cpp で 上書きされてるんじゃないかな。 unit1.cpp を変名しないか、P1 以外の名での保存でOKかと。
>656 すいません。名前空間の定義の方法がわかりません。 >657 ありがとうございます。P1一式の他にU1.cpp h dfm objが生成されエラーは消えました。 デフォルトでUnit1~と保存されるものとProject1~と保存されるcppは両方とも必要ということなのでしょうか。 他のアプリケーションと区別しやすくするために変名したかったのですが、ユニット用の名前とプロジェクト用の名前をわければいいのですね。 ところで>656さんの仰られた方法で解決した場合、ユニット用のcppは無いままになってしまうと思うのですが、 これは名前空間を定義しているのがU1.cppと言うことですか?
名前空間はhで定義されてるよ。
まあ
>>657 さんの方法が簡単で良いかと。
>>657 >unit1.cpp を P1.cpp で保存したものが、P1.bpr の保存の際に生成される P1.cpp で
>上書きされてるんじゃないかな。
これがビンゴ
だから名前空間をどうこうして解決する問題じゃない
>>658 >デフォルトでUnit1~と保存されるものとProject1~と保存されるcppは両方とも必要ということなのでしょうか。
"Project1"はアプリケーション
”Unit1"はフォーム
別のもの
1つのアプリケーションは複数のフォームを持つこともできるでしょ
まっさらなフォームを二つ作ってfsMDIFormとfsMDIChildで親フォーム子フォームにしたのですが、 子フォームのサイズがオブジェクトインスペクタのものが反映されずに、実行時に変更されてしまいます。 子フォームのサイズを指定するにはどうすればいいでしょうか?
俺なら、あえて子フォームにしない。 MDIにする意味がないかぎりは。
>>661 子フォームのTop, Left, Width, Heightを設定する
いっぺんに済ますにはBoundsRectを設定する
↑書き忘れた 当然、子フォームを表示するときね
やっぱBCB使えねぇな。
恐らく朝鮮人がファビョったんでしょう。
>665は日本語が不自由なだけだよ。 本当は、「私は馬鹿なのでBCBを使いこなすことができません。」と言いたかったんだよ。
673 :
665 :2006/10/05(木) 23:54:03
正直にカミングアウトします 私は朝鮮人です。日本語スコシです。 私は馬鹿なのでBCBを使いこなすことができません。 あと、ファビョってます。 でもBCBマジで使えねぇー。
仕事でいきなりちょっとしたアプリをBCB6で作るようにいわれたVC系初心者です。 CheckListBoxを使ってるんですが、CheckBoxのように文字列のクリックでチェック状態を切り替えたいのですが、 どうすればいいでしょうか? なにもしなければ、文字列のクリックではその行が選択状態(Selected)になるだけなので困ってます。 私のつたない頭では、OnClickでSelectedされている行のCheckedを切り替える方法くらいしか思いつきません。 そうするとチェックボックス自体をクリックしたときに、チェック状態の切り替えが2回行われ元に戻ってしまいます。
エレガントではないかもしんないけども OnClick と OnClickCheck の両方に CheckListBox->Checked[CheckListBox->ItemIndex] = 1 - CheckListBox->Checked[CheckListBox->ItemIndex]; なんてのを置くけば、とりあえず、希望の動作になるような気がする。 OnClick と OnClickCheck は飛んでくる順序が決まってる(かもしれない)から それを利用する手もあり。
>>674 とりあえず弥縫策
//MouseUpイベントで
int n = CheckListBox1->ItemAtPos( TPoint(X,Y), true );
if ( n >= 0 && X > 16 )
CheckListBox1->Checked[n] = !CheckListBox1->Checked[n];
チェックボックスの幅はあてずっぽう
↑あ、MouseDownだった どっちでも大差ないけど
678 :
674 :2006/10/06(金) 14:39:19
>675,676 ご教授ありがとうございます。 >675のそのままのコーディングで思い通りの動作ができたんで、これを使わせてもらいました。 たまにクリックが効かなかったり、チェックマークが点滅したりしますが、部署内で使うツールなんで問題ないことにします。
>たまにクリックが効かなかったり、チェックマークが点滅したりしますが、
それが出ないようにしてあるのに
>>676
テケトウでOK ってことだろ
> int n = CheckListBox1->ItemAtPos( TPoint(X,Y), true ); 座標に依存しないからこっちのほうが安全かもね。 int i = CheckListBox1->ItemIndex;
あ、なんかウソ書いた。ゴメソ
683 :
デフォルトの名無しさん :2006/10/08(日) 00:53:12
Turbo C++に移らないのか?
>>684 うん。
一応、CheckListBox1MouseDownイベントの引数で、int Xが入ってくるから
コード的には
int i = CheckListBox1->ItemIndex;
で問題ないと思う。
「座標に依存しないから〜」って発言が嘘。
あのさー、CheckListBoxで項目のない余白部分をクリックしたらどうなる? 分かる? わかんなきゃ、実際に試してみな マウスクリック拾うときはCheckListBox::ItemIndexじゃダメなの 項目をクリックしてるのかどうか判定しないとダメなの
あーなるほど。 リスト一番下の余白をクリックすると 青くなってるところのcheked状態が変わっちゃう。 ヘルプより > ItemIndex プロパティは,リストボックスの項目リスト内で選択した項目の順番を表す数です。 納得です。^^;
通常はコンソールアプリとして動作して、引数にオプション入れて起動したときに フォーム作成するようなアプリを、1つの実行ファイルで実現したいんですけど、 どのような方法があるでしょうか?
コンソールアプリからフォームを生成表示することは普通に出来る ただそれだとフォームを表示している間、親プロセスとしての コンソールアプリも生きてるからコンソールは表示され続ける それを回避したかったら実行ファイルを別にするしかないだろ、多分
ボタンを押して、hello を表示させることはできました。 今度は、アプリケーションを立ち上げたら、hello を表示させたいのですが、 メイン関数みたいなのはどのように書くのでしょうか。 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ShowMessage("hello"); } この中に、ShowMessage("hello");書くとhelloが表示されました。 これがメイン関数みたいに考えれば良いでしょうか。 よろしくお願いします。
>>690 意味不明
何がしたいのかもっと具体的かつ正確に質問すべし
>これがメイン関数みたいに考えれば良いでしょうか。
ダメです。Windowsアプリケーションの場合、メイン関数はWinMainとして別に存在します
>>691 お返事ありがとうございます。
Project1.cpp
Unit1.cpp
あると思うんですが、ボタンを押してhelloが表示されるようにするときは
Unit1.cppの中に、ボタンのイベントを書いて表示されるようにできました。
コンパイルしたら、exeファイルできると思うんですが、
クリックしたら、helloが表示されるようにしたいです。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
イベントが起こったら→実行
ではなくて
アプリを立ち上げたら→実行
っていうことをしたいです。
>>692 すみません。
意味の無いコード書いてしまいました。
それならフォームのOnShowイベントでShowMessage()すればよし いったいそれに何の意味があるのか正直分からんが
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { ShowMessage("TForm1"); } void __fastcall TForm1::FormShow(TObject *Sender) { ShowMessage("FormShow"); } void __fastcall TForm1::FormCreate(TObject *Sender) { ShowMessage("FormCreate"); } void __fastcall TForm1::FormPaint(TObject *Sender) { ShowMessage("FormPaint"); } //こういうのを書けばイベントの発生順序の勉強になるかな?
>>694 OnShowイベント調べてみます。
初心者なので、いろいろなサンプルを動かしてみている
ところなのですが、イベントが起こると実行されるというサンプル
しか見かけませんでした。
それで、exeファイルをクリックしたら実行
っていうふうにするにはどうすればよいのかと疑問に思いまして。
たとえば、exeファイルクリックしたらはじめに設定ファイルを
必ず読みに行くとか、など考えられるかもです。
>>695 コードありがとうございます。
早速動かして勉強します。
>>696 そういう風に自分の考えている課題を最初から質問で提示すればいいんだよ。
そのほうが適切なレスがつきやすい。
>たとえば、exeファイルクリックしたらはじめに設定ファイルを
>必ず読みに行くとか、など考えられるかもです。
それはメインフォームのコンストラクタでやるのが適切。
BCBではFormのOnCreateイベントを使うのは推奨されていない。
>>698 さん
教えて欲しいんですが、OnCreateが推奨でない根拠ってなんでしょうか?
バグあり、みたいな話?
BCBのヘルプから引用 >注意 フォームのコンストラクタとのやり取りが不良になる可能性があるので, >C++Builder で OnCreate イベントを使うことはお勧めできません(OldCreateOrder を参照)。 >かわりに,フォームコンストラクタをオーバーライドすることをお勧めします。 BCB使いには常識みたいな話なんだけど
>>698 ありがとうございます。
メインフォームのコンストラクタですか。
今いろんなサイト調べてみたんですが、
メインフォームのコンストラクタというのは、
下記のことでよかったでしょうか。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
自身がなくて。。。
すみませんが、よろしくお願いします。
>>701 そだよ
あんた、悪いこと言わんからBCB以前にC++の入門書読みな
あたりまえだがC++を理解してなきゃBCBは使えないよ
>>702 ありがとうございます。
がんばります。
C++はDelphiにくらべてコード補完などが遅いのですか? Hoge( と入力しただけで5秒くらい待たされたり、 変数などにマウスカーソルを乗せただけで、同じく5秒ほど待たされます。 BDS2006ですが、PCがクソなのでしょうか
あ、ちなみにBDS2006にはBCB6用ではなくBCB10用な。
ありがとうございます。 入れてみましたが、コンパイルは速くなったものの、コード補完の速度は変わりませんでした。 IDEが生産したForm1があるUnit1.cpp内では速いんですが、 自分で作ったcpp内だと倍以上時間がかかります。 自分の書いたコードを疑ってみます。
>>709 プリコンパイルヘッダを作成した後じゃないと補完は速くならないよ。
速くなりました。ありがとうございます。 先日DelphiからBCBにスイッチしたばかりで、よく分からなかったのですが、 vcl.hもプリコンパイルヘッダというものなのですね。 それと、#pragma hdrstopまでにPCHをincludeするということも分かりました。 DelphiのようにSysUtils.hppとかClasses.hppをincludeしてただけだったので、遅かったようです。
OSはwindowsです。 自分で作ったアプリケーションの起ち上がるプロセスの個数を 制限したいのですが、どのような方法があるのでしょうか。 例えば、IE(ブラウザ)の場合、いくらでも窓を立ち上げることができます。 ctrl+alt+delでwindowsタスクマネージャを見ると、プロセスが 複数なのがわかります。 この個数を制限したいです。 よろしくお願いします。
個数制限の場合はmutexじゃなくてセマフォだな。
>>713 ありがとうございます。
セマフォ勉強します。なんか聞いたことあります。
ちょっと違う方法なのですが、
タスクマネージャのタスク一覧みたいに、現在動いているタスク一覧の取得して、
その中に、これから起動しようとしているプロセスの名前があったら
起動できない。というふうにするのはどうでしょうか。
他のアプリケーションのプロセス名と偶然名前が同じになってしまったとき、
起動しなくなってしまう場合があるかもしれないのですが、
もしこれを回避するには、アプリケーションのある場所のパスを比較
するということになりますでしょうか?
よろしくお願いします。
715 :
デフォルトの名無しさん :2006/10/12(木) 14:05:29
すみません、教えてください。 エクスプローラからListViewにD&Dはできたのですが、 逆にListViewからエクスプローラにファイルをD&Dする方法を教えてください。
>>714 単純にFMOとかの共有メモリに起動プロセス数書きこんどけば?
>>715 DoDragDrop、IDropSourceあたりで検索。そこそこ面倒。
ただしこれが分かってれば他アプリからテキストや画像、URL情報のドラッグしてきても受け取れるようになる。
c++builder6使っています。 onshowイベントの実行できないんですが、どこがおかしいのか教えていただけ無いでしょうか。 エラーは無いのですが、onshowイベントが起こらないで、そのままウィンドウが表示されてしまいます。 ヘッダーファイルの書き方が違うんでしょうか。 よろしくお願いします。 includeなど省略してます。 ○unit1.cpp __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::FormShow(TObject *Sender) { ShowMessage("hello"); } ○unit1.h class TForm1 : public TForm { __published:// IDE 管理のコンポーネント void __fastcall FormShow(TObject *Sender); private:// ユーザー宣言 public:// ユーザー宣言 __fastcall TForm1(TComponent* Owner); }; extern PACKAGE TForm1 *Form1;
ヒント:dfm
>>719 dfm早速調べてみます。
オブジェクトインスペクタで、OnShowイベントをダブルクリックして
書くと大丈夫でした。
builderなんとなくわかってきたかもしれません。
5時間ぐらい考えてたので泣けてきました。
でも解決してよかった。ありがとうございました。
>5時間ぐらい考えてたので泣けてきました。 そうやって勉強していくもんだ。 dfmがやってることをコードで書く場合は、 this->OnShow = FormShow; もしくは、 Form1->OnShow = FormShow; だお。 TFormがOnShowというプロパティを持ってて、 実体はメソッドのポインタ。 VCL の Clickメソッドの中でそのプロパティがAssignされていたら実行する、 となっている。
>dfmがやってることをコードで書く場合は、 dfmとコードとどういう関係かっていうと、 プロパティの初期値をコードで書く代わりに、 GUI(Object Inspector)で手で設定してファイル保存したのがdfm。 Object InspectorのEventsタブに切り替えると、イベントハンドラのプロパティを目で見える。
いままでDelphiを使っていましたが、Turbo C++が出たのをきっかけに C++を学びたいと思い現在悪戦苦闘しています。 押されたキーコードを表示するプログラムを書いてみたのですが キャストのところが我ながら無理矢理表示させているような気がしてなりません。 本来はどう記述するべきなのでしょうか? void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { ShowMessageFmt("%.4x", &(TVarRec)Key, 0); }
>>723 BCBだとVCLのFormat系使わずに、AnsiString::sprintf使うことが多いと思う。
こんな感じに。
ShowMessage(AnsiString.sprintf("%02X", Key));
>>723 ARRAYOFCONSTマクロを使うてもある
ShowMessageFmt( "%.4x", ARRAYOFCONST((Key)) );
726 :
723 :2006/10/14(土) 03:27:30
>>724-725 サンクスです。
DelphiではAnsiStringはクラスではなかったのでそんなルーチンがあるとは気付いてませんでした。
また、ARRAYOFCONSTマクロはDelphiにはなかったのでこちらの方も勉強になりました。
TActionManagerなどのTAction〜系を貼り付けると、コードエディタがものすごく重たくなります。 しょうがないので今まで使ってこなかったのですが、何が原因なのでしょうか。
>>727 もしBDS2006ならば、BCBに限らず要らんコトしすぎだから。
メモリは1GB推奨だってさ。アフォか?
俺はコードだけEMエディタ使ってるけど。
BCB6使ってます。 関数printfで標準出力が見たいんですが、方法ありますでしょうか。 dos窓でexeファイル実行すると、アプリのフレームは表示されますが すぐに戻ってしまいます。 それか、標準出力を表示させるパーツとかないでしょうか。
>>729 まさかエクスプローラでダブルクリックしてないだろうな?
リンカの追加オプションに-apを付けてみるとどうだろう
>>730 void __fastcall TForm1::Button1Click(TObject *Sender)
{
printf("hoge");
}
ボタン押したら、hogeって表示させようと思ってるんですが。
dos窓で、Project1.exeを入力してEnter押してます。
>>731 コマンドラインからbcc32を入力して-apを付けるんですよね。
-apってコンソールアプリケーションのことみたいですが、
作りたいのはWINアプリです。説明が下手ですみませんでした。
>>732 IDEのプロジェクトオプションのリンクのとこに追加オプションというのがある。
エクスプローラから実行してもdos窓がでるけどフォームとかは使えるよ。
OutputDebugString("hoge"); をイベントログで見るとかそういう話じゃないの?
>>733 バージョン6使ってますが、プロジェクトオプションにいくと
いろんなタブがあって、その中にリンカ、リンカ(詳細)とかありました。
全部のタブ見てみましたが、どこを変更すればよいかわかりません。
>>734 OutputDebugString検索してみました。
リアルタイムで表示できないってありましたが、ほぼこれをしたいです。
printfみたいにリアルタイムで表示させたいんです。
ついでにこの解説してあるページにprintfについて、
基本的にprintfはWINDOWSで使えないとありました。
MEMOに表示させるとかしか無いでしょうか。
>>735 実際にコーディングして確かめました?
OutputDebugStringが実行されると即時表示されるのですが。
TMemoで使うならsprintfになると思うけど、、。
>>736 やってみたところリアルタイムで出てきました。
すごい便利です。
ありがとうございました。
フォーム内で、ドラッグ&ドロップするのは開発者ガイド見て できたところなんですが、フォーム外から取得する方法知りたいです。 エクスプローラから、ファイルをフォーム内に落として、 ファイル名を取得したいと思ってます。 よろしくお願いします。
C++Builder ドラッグ ドロップ でググればいいと思うよ
>>739 カタカナで検索したほうがよかったですか。
参考になりそうなページがいくつか出てきました。
ありがとうございました。
D&Dは他から持ってくるのは簡単なんだけどねえ 逆はなんであんなに…
>>741 ファイルドロップの受け入れだけOS標準のラッパーがあると考えるんだ。
かれこれ一ヶ月ぐらいBCB6使ってますが、チルダ付きのファイル名 Unit1.~h Unit1.~CPPとかたくさんできるんですがなんででしょうか。 プロジェクト名とCPPファイルの名前聞いてきますが、 名前変えただけだと、リンクエラーみたいに、コンパイルできないときもあるんです。 そのうち、Project1に上書きしてしまったり。 なんかこわいです。
>>744 それバックアップファイルだから。
BDS2006からちゃんと別フォルダに作られるようになったよ。
747 :
774 :2006/10/21(土) 22:13:46
呼んだか?
>747 はやってんのか、それ
>>745 >>746 お返事どもです。
バックアップファイルでしたか。
閉じるときにプロジェクトとCPPファイル聞いてくるのも
なんとなくわかりました。
749です。 プロジェクト名とCPPファイル名を同じにすると、 WINMAINが無いとか出てくるみたいです。 これが原因だったのかなぁ。
>>751 あああ、ほんとだ。
すみませんでした。
でも、予想が当たって良かったです。
文字列を0詰めする方法を教えてください。 "abc" → "000abc"
const int MaxLength = 8; AnsiString str = Edit1->Text; Edit2->Text = str.StringOfChar('0', MaxLength - str.Length())+str;
755 :
デフォルトの名無しさん :2006/10/25(水) 20:45:15
builder 6 pro には fastnet は付属してないんですか? exampleの httpdemoがコンパイルできないんです。
TMemo上でマウスがクリックされたとき、カーソルが何行目にあるかを 取得したいのですが、どうすればいいでしょう?
初歩的な質問ですが、よろしくお願いします。 module.cppに、モジュールの関数を定義しました。 void __fastcall TDataModule::say_num(){ //数字を表示するだけです printf("%d\n",n); } この関数を使う方のファイルjikko.cpp(ジッコウ) でグローバル変数int nを定義しました。 グローバル変数なのでそのまま使えると思ったのですが、 コンパイルすると、[C++ エラー] module.cpp: E2451 未定義のシンボル n と出てしまいます。確かにmodule.cppでは、定義してないんです。 どのようにすると、jikko.cppのnをモジュールmodule.cppのnに渡せるのでしょうか。 jikko.cppのコードですが、int nを定義して下記のように呼び出しているだけです。 DataModule->say_num(); よろしくお願いします。
>>759 です。
補足です。
say_num()関数にintの引数を取れるように
する以外で考えております。
よろしくお願いします。
>>759 です
jikko.cppで、
extern int n=1;と定義
module.cppで、modu_ex.cppのnを参照するため
#include "modu_ex.cpp"
とすると、n=1が参照できるようになりました。
この処理で大丈夫でしょうか。
根本からダメっぽいので、残念ながら、大丈夫とはいえないな。 基礎を書籍等で習得するべき。 掲示板の数行のやりとりで教えられる領域じゃないように見える。
超初心者的な話じゃないかもしれませんが宜しくお願いします。 聞きたいのはメッセージフックに関してです。 通常のアプリケーションではWndProcのオーバーライトで 独自のメッセージのやり取りおよび、イベントの受け取り等は出来きたのですが、 それをコンポーネント化しようとすると、呼び出し元のWndProcを操作せねばならず 他で見かけたDelphiソースみたいに、親のWinProcアドレスを挿げ替える方法も 出来ないものかと色々ためしましたが上手く行きませんでした。 で、ローカルフック関係で色々調べて試して見たのですが、 MFC関連は結構引っかかって色々試しては見たのですが、 これもコンポーネントとして持たせようとすると上手く行かないのです。 理想は、プロパティに独自のメッセージを入れると、そのメッセージが親アプリに 送られてきた時にイベントを発生させてくれるものを作りたいのです。 お勧めのサンプルソースやHP等ありましたら宜しくお願いします。
764 :
763 :2006/10/26(木) 20:32:01
すいません、ちとへんな文章になってますね。 もう3日ほど試行錯誤でてんぱってるみたいです(^^; 短く書くと、ローカルフックコンポーネントを作りたいので 何処か参考になるソースやHPがありましたら宜しくお願いします。 ……二行で済む話を長々書いてしまったorz
>>762 お返事ありがとうございます。
>module.cppで、modu_ex.cppのnを参照するため
>#include "modu_ex.cpp"
すみません。ファイル名間違えてました。
>module.cppで、jikko.cppのnを参照するため
>#include "jikko.cpp"
でした。
ネットで「externで宣言したら、使いたいユニットで
その宣言したファイルをインクルードする。」
と書いてあったのでそのままインクルードしました。
手元の本見たら、ヘッダーファイルにextern宣言してました。
jikko.hを作ってそこで宣言したほうが良いってことでしょうか?
>>765 //jikko.h
extern int n;
//jikko.cpp
int n;
//module.cpp
#include "jikko.h"
これでヲケ
ただし、ひじょ〜〜〜〜〜〜〜に不味い設計
BCBのフォーム周りは似た事してるけどさ
正解は
>say_num()関数にintの引数を取れるようにする
またはポインタないし参照をとるようにする
>>766 詳しく解説ありがとうございます。
あんまり良く無い設計でしたか。
特別なときだけ使うようにしたいと思います。
Form上にTEditを2つ貼り付けます。仮にEdit1, Edit2とします。 エクスプローラからファイルをドラッグアンドドロップして ファイル名を取得してTEditに表示させたいのですが、 ドロップしたマウスカーソル位置がEdit1上ならファイル名はEdit1に、 同様にマウスカーソル位置がEdit2上ならファイル名はEdit2に表示させたいのです。 表示させるTEditのターゲットを切り替えたいのです。 DragAcceptFiles(Edit1->Handle, true); DragAcceptFiles(Edit2->Handle, true); とすべきなのでしょうか。またその場合のMESSAGE_MAPはどのように記述すべきでしょうか。 とりあえず DragAcceptFiles(Handle, true); とした上で、DragQueryPointで取得した座標値でターゲットの判断をしていますが、 こんなことしなくても出来るんじゃないかと思いまして。
>>768 TEditから派生させてWindProcメソッドをオーバーライド
770 :
デフォルトの名無しさん :2006/10/27(金) 22:34:57
すみません、2つだけ質問させて下さい。 1つ目は、乱数の値を取得する際なんですが、どのサイトを見ても乱数の種でTime関数を 使うのを推奨してるのですが、分母が大きい場合(65536)に実行すると 時間の経過と共に徐々に取得してくる数値が大きくなってしまいます。 クリック時に乱数取得するように組んでみると… クリック→100代 クリック→200代 クリック→300代 という風に徐々に徐々に増えていってしまいます。 逆にSRAND関数を使わない場合はちゃんとバラけた乱数を拾ってきます。 プログラムを起動しなおしても、同じ数値は拾ってきません。 これはC++BuilderのRand関数はC++などとは違い、種をリセットしない方が 良いという事なのでしょうか? もう一つは、先ほどの分母に関してなのですが Rand関数で返ってくる値は32768が最大なのでしょうか? 65536個の乱数を取得したいと考えているのですが、それは無理なのでしょうか? ぜひ教えて頂ければと思います。 よろしくお願いします。
>>770 通常、乱数ジェネレータの初期化(srand)は1回だけやればいい。
あと、0x7FFF以上の値が欲しければ_lrandを使えば0x7FFFFFFFまで取れる。
772 :
デフォルトの名無しさん :2006/10/27(金) 23:01:33
>>771 ありがとうございました!!
_lrandで無事解決しました。
2番目の質問の方は、どうやらsrand関数にばかり目が行ってて
randomize関数を毎回呼び出していたために変な取得の仕方を
してたような感じでした。
多分これで大丈夫だと思います。助かりました!
ありがとうざいます。
773 :
デフォルトの名無しさん :2006/10/27(金) 23:24:56
何度もすみません。もう一つ質問をお願いします。 int a,b; float c; で宣言しておき c = a / b; とする場合に小数点1桁までをLabelで表示したい場合が分かりません。 ceil関数なども調べてみたのですが、小数点1桁までの切り上げが出来ませんでした。 質問ばかりで申し訳ありませんが、よろしくお願いします。
774 :
デフォルトの名無しさん :2006/10/28(土) 00:08:06
>>773 書式付の編集で四捨五入をしてくれる
char str[100];
sprintf(str, "%5.1f", (double)a/b);
BDS2006ですが、コードのアウトラインがうまく表示されていません。 //--- 曰 void ... │ { │ ...; └ } //--- こんな感じが普通だと思うんですが、 曰 //--- //--- //--- │ void ... void ... 曰 void... │ { 曰 { │ { └ ...; . │ ...; . └ ...; } │ } } //--- . └ //--- . //--- このような風になってしまいます。 文法的には間違ってないですし、もちろんコンパイルもできます。 書き方が悪いのでしょうか。
776 :
デフォルトの名無しさん :2006/10/28(土) 13:16:00
773の者ですが、回答ありがとうございます。
例えばdouble型の数値a,b,cがあって a/bの結果をcに代入してLabelで小数点1桁まで表示したい場合
double a,b,c;
c = a / b;
Label1->Caption = c;
とすると小数点以下が延々と表示されます。これを小数点1桁までの表示としたいのですが
>>774 でお答え頂いたような編集式で記述するのでしょうか?
それともLabelのプロパティなどで設定出来るのでしょうか?
sprintf実行後に Label1->Caption = str; すればいいんでねーの?
778 :
デフォルトの名無しさん :2006/10/28(土) 14:53:19
VCL使うなら Label1->Caption = FormatFloat("0.0", c); しっかし、Label1->Caption = c;が、なんでエラーにならんのだ。 AnsiStringは、数値を代入してもOKだったなんて。 今まで、Float(Int)ToStr(***)と無駄な事をしていた・・・
>>778 っ[ AnsiStringのコンストラクタ ]
POP3サーバからUIDLを取得する方法を教えてください。
外部のコンソールアプリを起動して、その標準出力をとりこみたいのですが、 どういう方法があるでしょうか?
783 :
768 :2006/11/02(木) 13:54:36
>>769 すみません。サンプルのソースとか頂けないでしょうか…
>>783 typedef void __fastcall (__closure *TDropFileEvent)(System::TObject *Sender, std::vector<AnsiString> Files);
class TMyEdit : public TEdit
{
public:
__fastcall TMyEdit(HWND ParentWindow) : TEdit(ParentWindow) { DragAcceptFiles(Handle, TRUE); }
__published:
__property OnDropFile = { read=FDropFileEvent, write=FDropFileEvent };
private:
TDropFileEvent FDropFileEvent;
protected:
virtual void __fastcall WndProc(Messages::TMessage &Message) {
if (Message.Msg == WM_DROPFILES)
{
std::vector<AnsiString> files;
// filesにファイル名格納
FDropFileEvent(this, files);
}
TEdit::WndProc(Message);
}
};
>>784 これをどうやって使えばいいでyそうか?
_, ._ ( ゚ Д゚) ( つ旦O と_)_) _, ._ ( ゚ Д゚) ガシャ ( つ O. __ と_)_) (__()、;.o:。 ゚*・:.。
>>783 まんま
>>769 これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
↑レス番違った
↓こっちが正解
>>784 まんま
>>769 これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
>>768 というかただ単にTApplicationEvents::OnMessageでメッセージ拾って
Edit1、Edit2とHanlde比較すればすむんじゃね?
790 :
デフォルトの名無しさん :2006/11/06(月) 18:12:33
BCB5で作成したプロジェクトをBCB6で開く時に、「'-'は整数ではありません」で開けません。 '-'を検索し、'-'を全て無くしても同じ結果でした。 BCB5で新規プロジェクトを作成し何も変更せずに保存したものは、BCB6でも開けます。 何かわかりますか?
数値があるべきところに - があるんじゃね? makeファイルの-オプションのところとか。
792 :
デフォルトの名無しさん :2006/11/06(月) 19:31:06
790です
>>791 「makeファイルの-オプションのところ」とはどこで確認するのでしょう??
なにぶん初心者なもので・・・。
メイクファイルの作成で出来た「***.mak」はテキストで開いてみたのですが、
BCB6でも開ける新規プロジェクトの「***.mak」と比較しても特にめぼしいとこはありませんでした。
また、ツール→環境オプション、プロジェクト→オプションも見たのですが特にめぼしいとこは
ありませんでした。
793 :
デフォルトの名無しさん :2006/11/06(月) 21:48:02
790です 解決しました。 BCB5で、プロジェクト→オプション→Pascal→構造体を境界配置 にチェックをつけたら BCB6で開けました。理由は不明。
794 :
デフォルトの名無しさん :2006/11/07(火) 02:36:26
class Color{ int color; }; //1番 Color* c = new Color; //2番 Color* c2 = new Color(); 1番と2番の書き方って何か意味の違いはあるのでしょうか
795 :
デフォルトの名無しさん :2006/11/07(火) 11:44:16
790で質問した者です。 BCB5→BCB6 移行の続きなのですが、今度はリンクの所で下記エラーになります。 [リンカ致命的エラー]Fatal:ファイル VCLE50.LIBが開けません。 検索するとBCB5のフォルダ((BCB)\Lib\Debug/Release)には有り、BCB6のフォルダには無し。 コピーしたら、リンクは出来たのですがVCLE50.LIBはBCB5のファイルですよね? VCLE.LIBがBCB6のフォルダにはあるのですが・・・。 プロジェクトファイルの下記部分を確認するような事が書いてあったので、確認してみましたが VCLE50.LIB は書いてませんでした。 <SPARELIBS value="rtl.lib vcl.lib"/> <PACKAGES value="vcl.bpi rtl.bpi"/> なぜ、VCLE50.LIB を見ようとしてしまうのでしょう??
796 :
デフォルトの名無しさん :2006/11/07(火) 15:57:21
使用OS サーバー Windows 2003 Server クライアント WindowsXP DB SQL Server2005 開発環境 Borland C++Builder6.0 Pro 上記環境でアプリを作成するのですが、SQL Serverへのアクセスは何が一番最適でしょうか? SQL Server2005の文献を読む限り、「.NET Framework Data Provider for SQL Server」の利用が 推奨と書いてあり調査したがどうもBorland C++ は.NETに対応していない?ようで、SQL Native Clientを使用する?ようなのですが、 どのコンポーネントを使えば良いか分かりません。(TADO***,TSQL***,TDatabase・・・) アドバイスお願いします。 (接続→更新→終了までの簡単なサンプルコードを教えて頂けると助かります。 参考サイトでも構いません。)
TRichEditで左にマージンを入れる方法がわかりません。教えてください。 RichEdit1->Paragraph->LeftIndent=xx; として RichEdit1->Lines->Add("xxxxx"); としても変化がありませぬでした。
798 :
デフォルトの名無しさん :2006/11/09(木) 00:42:20
イメージコンポーネントにトラックバーに対応して長さがかわり、 さらにトラックバーに対応して回転する線を描画するプログラムを 作成するってゆう宿題をやってるんですがまったくわかりません… 長さを調整することはできるのですが角度がどうすればよいのかわかりません。 プログラム自体に線の長さや位置の初期値を組み込んだのがおかしいのかな。 誰か教えてください。
>>797 ×LeftIndent
○TopIndent
>>799 エラーになります。
あと、ヘルプのどこを探しても、TopIndent が見つかりません。
つ[FirstIndent]
>>798 ここのアプレットで、原点(0,0)を始点として渦巻きを外に向かってグルグルと描いていくかんじ?
トラックバーのPositionが増えるに従って渦巻きを大きくしていくかんじというか。
804 :
デフォルトの名無しさん :2006/11/10(金) 06:52:47
DelphiからBCBにスイッチしました。 Delphiのように、クラスを作る際は、TObjectから派生させるべきですか?
>>805 ObjectPascal型クラス特有の機能(基底クラスのポインタから派生クラスの型取ってきたいとか)使うんでなければC++型クラス使うのが一般的。
TObjectから派生すると、静的利用ができないのが面倒だな
Ctrl + Shift + C による補完はできないんですか?
>>801 で・・・できました。
ありがとうございます。
でも、LeftIndentって何のためにあるんでしょうか?
>>809 同一パラグラフの2行目以降のインデント幅 FirstIndentに加算される
なのでパラグラフが1行しかないと反映されない
>>805 いや、全部TPanelから派生させるべきだよ。
812 :
デフォルトの名無しさん :2006/11/20(月) 03:17:24
WinAPIの質問(?)になってしまうかも知れないんですけど、 よろしくお願いします。 sndPlaySound関数を利用して二つのWAVファイルを時間差で再生するプログラム を作りたかったのですが、sndPlaySoundでは複数のWAVファイルを重複して再生 することは出来ないようでした。 時間差と音量の組み合わせが1000種類程あるので、事前にミックスして一つの WAVファイルにまとめるのは現実的ではありません。 というわけで、複数のWAVファイルを時間差で再生できる関数などありましたら よろしくお願いします。
MCIとか。 mciSendString("open A.wav type waveaudio alias A", NULL, 0, NULL); mciSendString("open B.wav type waveaudio alias B", NULL, 0, NULL); mciSendString("play A", NULL, 0, NULL); // ここからA.wavが鳴る 一定の時間後 mciSendString("play B", NULL, 0, NULL); // ここからB.wavが鳴る ・・・ 鳴り終わったら後始末を忘れずに mciSendString("close A", NULL, 0, NULL); mciSendString("close B", NULL, 0, NULL); 多分こんなかんじだったと思う多分
同時に複数のwavを鳴らしたいならDirectSoundでできる。 ファイルの読み込みがちょっと面倒だけどね。
815 :
812 :2006/11/20(月) 03:42:09
ありがとうございます。調べてみます。 すばやい反応本当に感謝です。
816 :
812 :2006/11/20(月) 05:10:19
度々、すいません。
MCIとDirectSoundってどっちが手軽にできますか?
色々調べてみたのですがまだ数回、builderをかじった程度の自分では
どちらも敷居が高すぎてなかなか手がつけられそうにありません。
こちらの都合で申し訳ないですが、期限が迫っており、ゆっくり勉強している時間がありません。
>>812 に書いた二つのWAVファイルの時間差再生ができる最低限の機能さえ
実現できればいいのですが、どちらの方法が短時間でできるでしょうか?
あと、ベクターで
「C++Builder用 DirectSoundを(比較的)簡単に扱えるDLL(サンプル付)」
というのを発見したのですが、バージョンが違うせいか、うまく動作しませんでした。
他にこのようなライブラリをご存知でしたら、お願いします。
環境はWinXP Professional , PS2 C++Builder 5 , DirectX9.0cです。
何でも良いので、よろしくお願いします
私の知る限り、MCIでは同時再生はできなかったはず。
TTreeViewに於いて、TListBox::MultiSelectみたいなことって出来ないのでしょうか?
よくパスワードを保存する□チェックがあって、チェックをすると 次から"*****"が表示されて、再入力しなくてもいいようなのあります。 あればどうすればよいのでしょうか。 テキストファイルか何かにパスワード保存しておいて、ただ読み込むだけ ということではないですよね。 よろしくお願いします。
SHAutoComplete()
>>816 Delphi用のDirectSoundコンポーネントは、いくつかあると思うが・・・
DelphianWorldとか、Toryyとか探してみた?
あとは、Quadruple Dでもできたはず
>>822 横から失礼します。
パスワードは基本的に別のエディットボックスですので、ユーザーID用の
ボックスにEnterが入力された時点でどこかに暗号化しておいたパスを
拾いに行くようにするしかないような気がします。
IEの場合は多分NTUSER.DAT当たりに記録されているのではないかと
思うのですが・・・外れていたらすみません。
>>823 レスありがとうございます。
オートコンプリートってちょっと違うのでしょうか。
わかりませんでした。
えっと、保存する場合は、暗号化前の生のパスワードでいいんですよね?
暗号化したパスワードを保存すると、*の数変わってしまいますし。
md5でと思ってたんですが、復号化できる暗号ロジック使えば、
暗号化したパスワードを保存しても大丈夫なんでしょうか。
それで、EditのPasswordCharを*に。
初心者なので壁が多いです。><
稀に今まで動いていたものを、忘れた頃に動かすと クラスTBevelが見つかりませんとか言われてしまうんですが、 なんでしょうか。ブレークを無視するとエラーダイアログ連発になります。 んで、Bevelを一回剥がして貼りなおすと直ります。 面倒なんで、誰が原因を知っている人がいましたら教えてください。 BDS2006のBCBです。
826 :
デフォルトの名無しさん :2006/11/24(金) 21:37:36
デバッグしながらコードを修正していくとブレークポイントがずれていくのですがこれをずれないようにする方法はありますか。 たとえばコードにブレークポイントを埋め込めるとか。
日本語環境で作成したプログラムを英語版Windowsに持って行くと、エラーが発生したときのダイアログが 日本語(文字化けして読めない)になってしまいます。 エラーを英語にすることはできないでしょうか?
できる
やり方を教えてください
>>827 俺以前bcb6の環境で同じ現象が出て、プロジェクトの言語設定を英語にしようが
言語リソースを使おうが直らなかった(MessageBoxを呼んだ後のVCL内の処理で
多言語対応がされてないっぽい)。
結局『CreateMessageDialog使って一度TFormオブジェクトを生成した後、その
キャプションを無理矢理英語に書き換えて表示する』という力業で切り抜けた
記憶がある。
個人的にはBCB(とういかVCL)のバグだったと思ってるんだけど、違うのかね?
6より後のバージョンは知らないけど。
>>828 俺も参考までに是非知りたい。教えてPlz。
5あたりは各国語用のリソースDLLあったような‥‥
C++Builderは使ってないんでよくわからんけど、多言語対応は入っているはず。 たとえば日本語のプロジェクトで生成したものを英語(ENU-ENglish/Us)ロケールで実行するときは 実行ファイル名の拡張子を.ENUにした言語リソースを探して見つかればそちらのリソースを使う。 言語リソースは新規作成のリソースDLLウィザードで作る(Pro以上)。ただしこのときに SysConst.pasにあるresourcestringまでいちいち書き換えるのは不毛なのでCD-Rにある 英語版のライブラリに切り替えてからリソースDLLウィザードを使うのが吉(そのままだと デフォルトで生成されるresourcestringの中身が日本語になってしまう)。
833 :
832 :2006/11/25(土) 13:51:21
× CD-R ○ CD-ROM
>>832 うーん・・・リソースDLLはもちろん使ったんだけど、
SysConst.pasって関係あるのかな?
例えばMessageBoxでMB_YESNOを指定した時のボタンのキャプションも
日本語で表示されてたけど(本来英語環境ではYes/No表示のところを
はい/いいえで表示しようとして化ける)、こんなところまでSysConstで
管理してないような。
英語版ライブラリの使い方も探したけど、見つからなかったんだよね。
少なくともインストールディスクには入ってなかった気がする。
全部BCB6の話ですが。
835 :
デフォルトの名無しさん :2006/12/01(金) 17:38:23
ボタンをクリックしたら、スクロールバー(Visibleがfalse)に選択が移る ようなことってできますか? 開始ボタンを押したら後は矢印押すだけで内部の変数が変わるようなプログラムを 作りたいのですが。プログラムを使っている人にはその変数の値がどの程度か知られたくないのです。 あと、できれば操作中はマウスを使わなくてすむようにしたいです。
RitchEditでフォーカスが別のボタンなどが選ばれている時に 内容を自動スクロールしたいのですが ScrollByメソッドを使っても上手くいかないみたいです それ以外の方法はありますでしょうか?
837 :
デフォルトの名無しさん :2006/12/04(月) 03:08:07
本当に基本的なことで申し訳ないのですが、 TEditから入力してもらった文字列をchar型の変数に代入するにはどうしたらよいのでしょうか? char型の変数 = Edit1->Text; では左辺値がありませんとエラーになってしまいます。 int型の変数 = StrToInt(Edit1->Text); は通ったので大丈夫だとおもったのですが・・・ よろしくお願いします。
>>837 『文字列をchar型の変数に代入する』という発想が既におかしい。
C言語の基礎から勉強しなおし。
Edit1->TextはcharじゃなくてAnsiStringだろ。 AnsiStringで宣言すればイコールで代入できるよ。
>>837 char* AnsiString::c_str() const;
>835 不可視のコントロールにフォーカスを設定はできなかったはず 開始ボタンとか必要なコントロールでOnKeyDown/Upイベントを定義すればいいんじゃないかな
>>840 char c[256];
strcpy(c, Edit1->Text.c_str());
この方が無難じゃない?
>>837 char c = Edit1->Text[1];
844 :
デフォルトの名無しさん :2006/12/06(水) 09:49:50
Variant型のExec内で使えるプロパティ、メソッド等のリストを見られる HP等は無いでしょうか?
本日、初めてVCLのTControl::WindowProcに自分関数を設定してみました。 このような具合にです。 TForm1::TForm1(略) { WindowProc = MyWndProc; } TForm1::MyWndProc(Messages::TMessage &Message){ (処理) } それでWM_TIMERのwParamを拾おうとしてMessage.WParamを見ると 本来はタイムアウトになったタイマのIDが入っているはずなのですが、 常にゼロが入っています。(´;ω;`) 私の使い方が悪いのでしょうか?
846 :
845 :2006/12/17(日) 22:09:11
ageちゃえ。
>>845 自クラス内でウィンドウプロシージャ弄る場合はWndProcメソッドをオーバーライドしる
void __fastcall TForm1::WndProc(TMessage& message)
{
if (message.Msg == WM_TIMER)
{
OutputDebugString(AnsiString().sprintf("Message: %08X WPARAM: %08X LPARAM: %08X", message.Msg, message.WParam, message.LParam).c_str());
KillTimer(Handle, message.WParam);
}
TForm::WndProc( message);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetTimer(Handle, 0x2, 100, NULL);
}
普通に動いているが‥‥
ブラウザのIEのツールバーに、戻る、中止、更新、ホーム とかボタンありますが、マウスのカーソル上に置くと、 なんのボタンか表す文字が出てきます。 こういうのやりたいですがわかりません。 よろしくお願いします。
TEditやTButtonコントロールがフォーム上にあるとして、 それのText(Caption)と縦座標のみ異なる複製を動的に作成したいのですが、 スマートなコーディング方法がないでしょうか 一応、newでコントロールを作成してプロパティやイベントを一個一個コピー していくやりかたではできたのですが、数が多くてステップ数が馬鹿デカくなって困ってます。
>>849 まさか、関数化せずに一個一個newしているわけじゃないだろうな。
>>849 複製はTPersident::Assign()使えなかったっけ?
848です。 やりましたよ! オブジェクトインスペクタのHintで出来ました。 使ってるアプリいくつか見たら、同じように黄色のバックに黒文字だったので、 標準でなんかあるのかと思ったら。 HTMLでも同じ風に文字出てきますよね。 ありがとうございました。
853 :
デフォルトの名無しさん :2006/12/19(火) 20:10:14
CBC6でソフトウェアキーボードを作りたいのですが、 その際にキーボード部分をクリックした時に、アクティブな部分が変わらないよう、 常に非アクティブになるようにしたいのですが、 どうすればよろしいでしょうか・・・?
CBC6って何だ? なんて突っ込みは小学生並みだな BCB6だろっ
>>847 レス、ありがとうございました。
どうやら自分のSetTimerの使い方が悪かったようです。orz
ところで、SetTimerは第二引数のタイマ識別子として既存のタイマと同じものを使うと
新しい設定でタイマをつくりなおしてしまうとMSDNにありました。
VCLのTTimerはタイマの識別子を指定する仕組みではなかったので不用意に
TTimerとSetTimerを混在させると同じ識別子を使ってしまわないか心配です。
VCLのソースではSetTimerの識別子としては0か1しか使われていないように見えるのですが
いまいち自信がありません。
>>847 さんはコード上で識別子に2を使われていますが、2以上ならVCLのTTimerをいっしょに
使っても重複しないものなんでしょうか?
みなさんはどうされていますか?
>>855 TTimerは専用の不可視ウィンドウをインスタンス毎に作成してるからID重複しても問題ない。
Classes.pasのAllocateHWnd参照。
>>853 TButtonじゃなくてTSpeedButton使ったら?
858 :
855 :2006/12/20(水) 01:37:22
>>856 なるほど。素人の取り越し苦労だったんですね…。(´ω`)
なにはともあれ感謝です。明日会社でご指摘の箇所を読んでみます。
VCLのソースは自分のプログラムのヒントになりそうなことがいっぱい書いてありそうですね。
それにしてもこんなにすぐ疑問を解決できるなんて、2chはすごいな。
これからC言語を始めようと思ってるんですが、XPでフリーで使えるコンパイラありますか? あとBorlandの一部が落ちてるような感じになってるのはいつものことなんですか?
>>859 MinGW
とか
VisualC++ Express
とか
ありがとうございます C++Builde系はやっぱりないんですかね?
ありがとうございました。この中から選んで頑張ろうと思います
864 :
デフォルトの名無しさん :2006/12/21(木) 16:36:32
C++Builderの"SendInput"の使い方がよく分かりません。 文字をアクティブな部分に送るだけでよいので、 どなたかプログラムの例を挙げてもらえないでしょうか?
フォームにボタンがButton1〜Button100まであって、 x番目のButtonのEnabledを変更するような場合、 if(x == 1)Button1->Enabled = false; else if(x == 2)Button2->Enabeld =false; else ・・・・・・・・・・・・・・・・・・ の、ようなことせずにxからボタンのアドレスを直接取得するような方法はないでしょうか? とりあえず、TListにAdd(Button1);Add(Button2);・・・・・・Add(Button100);ってやっておいて、 TButton *btn=(TButton *)List->items[x]; btn->Enabeld = false; とやる方法を考えたのですが、 もっとかっこいい方法はないものでしょうか?
>>866 ピンポイントな解答、どもです。
やりたいことがあっても、その方法がなかなか見つけられない。
いつになったら超初心者を抜け出せるんだろうか。
>>867 ・Delphi向けのリソースを活用する
・気になることがあったらVCLのソースを覗く癖をつけておく(stdやperとかでソース無い場合は新TurboはExplorerでもソース付いてるからインスコ)
基本的なアルゴリズムの本を最低3回は繰り返し読んで、手本となる見通しの良いソースを1本読みこなせば、相当レベルは上がる。
ソース見るのは、いいよ。 Sourceforgeなんかで、Delphiのオープソースのソフトのソースとか漁るとか。 OpenJaneとかその辺。
ソース見るのもいいけど多少敷居が高い場合もあるし、基本的にはググるのが最強じゃない? 同じようなこと考えてるヤツってのは他にも大抵はいる
多少敷居が高いというか負荷があるくらいのソースを読めばレベルアップする。 ググってコピーしていたのでは、いつまで経っても低レベルのままだ。
これをxpで使ってる香具師いる?
AthlonXPで使ってますが
FormやButton部分をクリックしたときに、それまでフォーカスされていた所から、 フォーカスを奪わないようにするにはどうすればよいのでしょうか?
TStringGridで、選択している行のグリッド(一番左の列)をボタンがへこんだような状態に 描画する方法ってないでしょうか
ちょっと調べましたが、CellRect( 0, Row)で選択行の0列目のrectを取得して DrawEdgeで直接描画する方法になるんですかね?
>877 OnDrawCellイベントあたりを見てみたら?
>878、どもです OnDrawCellでこんな風にしました。 if( ACol == 0 && ARow == StringGrid1->Row ){ DrawEdge(StringGrid1->Canvas->Handle,&Rect,BDR_SUNKEN,BF_RECT); StringGrid1->DefaultDrawing = false; }else{ StringGrid1->DefaultDrawing = true; } あと、選択行がわかったときに上記で描画した固定セルを元に戻す処理を StringGridのMouseDownイベントで行う必要があるんですが、 CellRectで取得した固定セルのRectに対して、DefaultDrawingがtrueの時の描画を 再現しようとDrawEdgeを使っていろいろやったんですがうまくいきませんでした。 結局下のように自分で線を引いたりして再現させたのですが、他に方法がなかったのかな?と思ってます。 TRect R = StringGrid1->CellRect( 0, OldRow ); DrawEdge( StringGrid1->Canvas->Handle, &R, BDR_RAISEDINNER, BF_BOTTOMRIGHT); DrawEdge( StringGrid1->Canvas->Handle, &R, BDR_RAISEDINNER, BF_TOPLEFT); StringGrid1->Canvas->Pen->Color = clBtnFace; StringGrid1->Canvas->MoveTo( R.Right-1, R.Top+1 ); StringGrid1->Canvas->LineTo( R.Left+1, R.Top+1 ); StringGrid1->Canvas->LineTo( R.Left+1, R.Bottom );
880 :
デフォルトの名無しさん :2006/12/31(日) 01:23:04
VC6で作られたDLLを使いたいんですが、 わかりやすいHPなどがあれば教えてください
>>880 implibでインポートライブラリ作成
882 :
デフォルトの名無しさん :2007/01/03(水) 04:50:07
設定しておいたキー(F1等)が押されたときに(アクティブ、非アクティブに関わらず) タイマーが動き時間になれば知らせてくれるソフトを作りたいのですが、 非アクティブ時にキーを判定→実行させる方法がわからず悩んでいます。 わかる方がいましたら教えていただけないでしょうか?
>>882 RegisterHotKey()
SetWindowsHookEx(WH_KEYBOARD, ...)
885 :
デフォルトの名無しさん :2007/01/07(日) 13:59:17
グローバルフックだからDLLからフック仕掛けるように。
親フォームの中央に表示するメッセージボックスってないですか?
親フォームのハンドル使えばよくね?
ハンドルを渡すメッセージボックスっていうと、Win32APIのMessageBox? 引数にフォームのハンドル渡しても画面中央に表示されるんだけど、何か間違ってるかな。
>>888 面倒だがWM_NCCREATEをフックしてサブクラス化する。
MFCはこの方法でオーナーウィンドウの中央に表示されるようになってる。
新規フォーム使うのが楽だなw
891 :
デフォルトの名無しさん :2007/01/09(火) 18:29:21
親フォームの位置を調べて、中央に移動させればいいだけじゃん。
フォームを画面の中央に配置してから、MessageBoxを呼べば良い。
893 :
888 :2007/01/10(水) 08:25:54
>890 はい。新規に共通で使うフォームを作ることになりました。 作ってて一つ問題。フォームのCaptionがメッセージより長くなる場合、 Captionの横幅によってフォームの横幅を合わせるようににしたいのですが、 どうすればいいですか?
>>893 int Textlen = Canvas->TextWidth(Caption);
if(Textlen > Width) Width = Textlen;
895 :
デフォルトの名無しさん :2007/01/10(水) 14:29:39
プロジェクトオプションで、RTLを使わない、実行時パッケージを使わないにしたのですが、 他のPCで実行しようとするとMIDAS.dllが無いと出ます。 Delphiだと、MidasLibをusesのところに書けばmidas.dllを配らなくても良いらしいのですが、 C++Builderでもmidas.dllを使わなくても良いようにするにはどうすればいいのですか?
BCB6PersonalかProfessional購入で迷っています。 用途は趣味のゲーム製作なのですが、挫折する事も考えると安価なPersonalが 魅力的です。 DirectXを使うようなゲームを作る場合、Personalでも問題ありませんか? 両 者の大きな違いとは、単に商業的に使えないという事だけでしょうか? ちなみにBCBを選んだのは仕事でDelphiを使っているので、VCよりもとっつき 易いかかもしれないと思ったからです。
897 :
888 :2007/01/10(水) 14:43:14
>>894 どもです。
最初、TextWidthがCaptionの表示幅より小さい値になってたんですが、
FormのFontのSizeを大きくしたらうまくいきました。
これでいきます。
898 :
888 :2007/01/10(水) 16:12:48
たびたび質問すみません。 自分で作ったメッセージボックスは、アプリケーション起動時にCreateFormしないで 動的にフォームを作成、削除するようにしたいのですが、どうやればよいのでしょうか?
使い慣れたDelphiでゲームを作ればいいのに、と思うのは俺だけ? まあリファレンスはCのが多いからどちみちCを読めなきゃならないけど。
>>898 WinMainにあるApplication->CreateForm(__classid(Txxxx), &xxxx);を消して
必要な時にnewしたらどうだね
(xxxxはフォームのクラス名ね)
902 :
デフォルトの名無しさん :2007/01/11(木) 00:07:22
VCLフォームアプリケーションで、Flexで生成したlex.yy.cをリンクさせ られず困っています。 FormのButtonクリック・イベントでlex.yy.cで実装されたyylex()をコー ルさせたいのですが、未解決の外部参照だとリンクエラーが発生します。 *.cから別の*.c内定義の関数コールはできているのですが、*.c内で定義 されたラベルを*.cppで参照するには何か特別な記述が必要なのでしょうか?
>>895 .dcuをプロジェクトに放り込めばいけそうな気が‥‥
>>896 DirectGraphicsベースのアプリだとVCLフレームワークの大半が無意味になるからVC2005Expressでいいとおもうぞ。
取っつきやすいだけならVC#2005Express+XNA GameStudio Expressの選択肢も。
スペルミス extern "C"
906 :
デフォルトの名無しさん :2007/01/11(木) 00:29:22
>>905 ありがとうございます。
職場のPCにしか環境が無く、すぐに試せなくて申し訳ないのですが、
コードの意味を調べておいて、明日試してみます。
907 :
895 :2007/01/11(木) 02:26:09
>>903 Midaslib.dcuをプロジェクトに追加しても駄目でした。
ソースに
#pragma link "Midaslib.dcu"
と書くと、
[リンカ エラー] Error: 'MIDASLIB.DCU' に無効な OMF レコード (タイプ 0x23) が含まれています
となります。
908 :
896 :2007/01/11(木) 10:24:25
>>899 、
>>900 DirectXを使う場合、そのうち限界を感じるようになると知り合いに言われまし
て・・・。
>>903 なるほど。
では、VC2005Expressを試しに使ってみます。 ありがとうございました。
909 :
デフォルトの名無しさん :2007/01/11(木) 17:56:48
CppWebBrowserを使用しているんですが 現在表示中のサイトのバックグラウンドカラーや表示中のテキストを取得することは できませんでしょうか?
910 :
デフォルトの名無しさん :2007/01/11(木) 19:46:29
C++Builder6を使用しているのですが。。。 マウスでクリックした点からマウスを放したところまでの四角形や円を描きたいのですが (↑Wordみたいに・・・)どのようなプログラムにしたらいいのでしょうか?
>>909 TCppWebBrowser::DocumentからIHTMLDocument2インタフェース取得すればDOM使って読み書きできる
>>910 OnMouseDownで始点設定
OnMouseUpで終点設定してそれに収まる図形を描画するだけ
>>907 開発者ガイドの「dbExpress データベースアプリケーションの配布」の所には、
Midaslib.dcuを含めろ的なことが書いてあるようだが、よくわからんな。
dcuってデルファイ版のobjファイルみたいのか。
C++Builderからdcuのリンクってできるんか?
分かる奴教えてやれ。
>>909 COMインターフェイス理解できんと分からんと思うから、初心者には敷居高いと思われ。
>>910 LBUTTONDOWN、LBUTTONUP、MOUSEMOVEメッセージを補足
WM_LBUTTONDOWNとUPはBuilder標準のイベントにないから、BEGIN_MESSAGE_MAPで補足。
onLButtonDownで始点を記録
onLButtonUpで終点としてCanvas->FrameRect(円ならElipse)で描画
途中の状態を表示したかったら、onMouseMoveでCanvasのBrushをXORモードにして、
前回の描画をもう一度書いて消して、新しい位置に描画
913 :
909 :2007/01/12(金) 09:08:23
>>911 >>912 ありがとうございます
IHTMLDocumentを取得してからのサンプルコードは色々見つけたんですが
肝心のTCppWebBrowser::DocumentからIHTMLDocumrntを取得する方法がわかりませn
検索でコード探したり、色々キャストしてみたんですがエラーがでます
そこのところだけでもサンプル教えていただけないでしょうか?
914 :
902 :2007/01/12(金) 09:16:48
>>905 C++の基本を質問してすみませんでした。
おかげで様で作業を進めることができました。ありがとうございました。
>>913 void __fastcall TForm1::Button2Click(TObject *Sender)
{
IHTMLDocument2* html = NULL;
www->Document->QueryInterface(IID_IHTMLDocument2, (void**)&html);
IHTMLElement* elem;
html->get_body(&elem);
wchar_t *text = new wchar_t[10000];
if (S_OK == elem->get_innerHTML(&text))
ShowMessage(AnsiString(text));
delete [] text;
elem->Release();
html->Release();
}
目的のelementの探し方とかは基本的にDocumentObjectModelの領域なのでPlatformSDK読むなりWeb製作板のJavascriptスレとかで聞くとよろし。
917 :
910 :2007/01/12(金) 11:24:10
>>915 ありがとうございます、さっそく試してみます
QueryInterfaceも引数いろいろいれて試してみてたんですが・・・
助かりました
実行中の他のアプリケーションを取得して、 あるアプリケーションが実行中ならそのアプリケーションに マウスの左クリックイベントを送出するというのを実現したいのですが、 実行中アプリ取得の方法と、他のアプリにイベントを送出する方法がわかりません。 どなたかご教授願います。
・FindWindow ・SendMessage 何作るのか知らんがnProとかPBには無効ですよ
921 :
デフォルトの名無しさん :2007/01/19(金) 20:43:09
実行すると、いくつもの円や四角形を描画できるプログラムを作成しています。 例えば、円を3つ、四角形を5つ描いた後に、一番最初に描いた円を指定してマウスでドラックした分、その円を移動させたいのですが、どのようにしたらいいのかわかりません。 簡単なプログラム付で解説していただけると、なお助かります。 ずうずうしい質問ですが、ご教授、お願いします。
くだすれか。 くたばれと書いてあるのかと思ってびっくりした。
ご 教 授 お 願 い し ま す 丁寧に 頼んだつもりが 赤っ恥
別に教授だろうが教示だろうが間違いじゃないんだぞなもし
>>921 別に悩むようなことじゃなかろう
マウスイベントで処理すればいいだけじゃないか
927 :
921 :2007/01/20(土) 02:49:38
>>926 申し訳ないのですが、もう少し詳しくお願い致します。
コードとかメソッドなど、何でもいいので。。。
本当に初心者で、お手数おかけします。。。
なにを知りたいのかがわからん 図形を指定するやりかたがわからん? マウスでドラッグの方法? 移動? もしかして,設計から教えろとでもいうのか?
929 :
デフォルトの名無しさん :2007/01/20(土) 11:34:02
BCB6を使って検索システムを作っています。 現在、Comboboxで検索項目を選び、Editで検索語を入力する void __fastcall TForm1::Button1Click(TObject *Sender) { TQuery *theQuery=DataModule2->Query1; DataModule2->DataSource1->DataSet=theQuery; AnsiString sqlStmt="SELECT * FROM ファイル名.db WHERE "+kensaku+" LIKE"; AnsiString whereStmt=Edit1->Text; theQuery->SQL->Text=sqlStmt+"'%"+whereStmt+"%'"; theQuery->Active=true; } このようなプログラムで中間一致検索できるようになっています。 さらにここからComboboxとEditを1つずつ増やして複数検索を出来るように したいのですが、どうすればいいかわかりません。 もし、分かる方がいれば教えてください。
930 :
921 :2007/01/20(土) 11:36:30
>>928 かなりアバウトな質問をしてしまって、すみませんでした。
図形を指定する方法がわからんのです。。。
よろしくお願い致します。
つーか
>>929 自身、そのプログラムに書いてある内容が全然わかってないんじゃない?
どこから持ってきたソースか知らんけど、もし仕事なら、上司なり依頼元に『自分のスキルじゃできません』て
はっきり言うか、こんな掲示板で質問なんかしてないで、もっと基礎からちゃんと勉強した方が良いんじゃないの。
933 :
デフォルトの名無しさん :2007/01/20(土) 13:36:55
現在、Unit1.cpp内でBitBtnをクリックすると From1->Hide(); From2->Show(); が行われ、Unit2.cpp内でN1をクリックすると Form1->show(); Form2->Close(); ということを行いたいのですが、それぞれのFormの宣言の仕方がわかりません。 Unit1には #include "Unit1.h" #include "Unit2.h" TForm1 *Form1; TForm1 *Form2; Unit2には #include "Unit1.h" #include "Unit2.h" TForm2 *Form1; TForm2 *Form2; としています。 ポインタの宣言の仕方が悪いと思われるのですが、 問題解決できなくて困っています。 どなたか、お手柔らかに教えていただけないでしょうか。
ヘッダincludeしてるのに何で重複宣言するの? Unit1 #include "Unit1.h" #include "Unit2.h" TForm1 *Form1; Unit2 #include "Unit1.h" TForm2 *Form2; ------------------ Unit1 void __fastcall TForm1::BitBtnClick(TObject *Sender){ Form1->Hide(); Form2->Show(); } Unit2 void __fastcall TForm2::N1Click(TObject *Sender){ Form1->Show(); Form2->Close(); }
>>933 TApplicationでやってるように不可視のフォーム作ってそこから制御した方がいいんじゃないか?
ちょっとメモリ余計に食うけど。
BDS2006使ってるんですがアプリを実行しマウスを動かすと モジュールのロード、モジュールのアンロードが延々と表示されるんですが とめる方法はないのですか?
>>936 自己レスです
解決しました。ウイルスバスターの迷惑メールツールバーを無効にするで出来ました。
BDSのBCBを使っています。 DBGridで、指定した列を一番左に表示するにはどうしたらよいでしょうか? ヘルプを見るとLeftColというのがそれにあたるっと思うんですが、 DBGrid1->LeftCol = i; とするとコンパイルでエラーになってしまって・・ よろしくお願いいたします。
939 :
デフォルトの名無しさん :2007/01/21(日) 12:04:50
>>938 DBGrid右クリック->カラムエディタ->すべての項目追加->カラムをマウスでD&Dして順番を移動
940 :
938 :2007/01/21(日) 20:06:44
>939 すいません。説明不足でした。 もともとの順番は変えないで、表示位置だけ左端にもって行きたいのです。 たとえば項目「A,B,C,D,E,F」があった時に、今表示されている項目が「A,B,C」だったとします。 項目の一覧を表示してあるListBoxで「D」をクリックした場合、DBGridの表示を 「D,E,F」という風に「D」から表示したいんです。 さらにListBoxで「B」をクリックすると「B,C,D」と表示することになります。 こういうことは不可能でしょうか?
BDS2006+UP2でC++Builderを使っています。 if (SetCurrentDir("\\")) { if (RemoveDir(E:\\AAAAA\\BBBB\\CCCCC)) { ListBox1->Items->Add("D削除完了"); } else { ListBox1->Items->Add("D削除失敗!!"); } } CCCCCはフォルダです。 としていますがフォルダの削除に失敗してしまいます。フォルダの中は空です。 どうして消せないのでしょう?
>if (RemoveDir(E:\\AAAAA\\BBBB\\CCCCC)) { if (RemoveDir("E:\\AAAAA\\BBBB\\CCCCC")) {
フォルダの属性を変更することってできますか?
system("attrib〜"); ::SetFileAttributes(); SysUtils::FileSetAttr();
945 :
933 :2007/01/23(火) 15:13:35
>>934 早速の返信ありがとうございました。
遅くなってすみませんでした。
Unit2のプログラムで
TForm2 *Form2
→宣言の構文エラー
__fastcall TForm2::TForm2(TComponent* Owner)
→型限定子 'TForm2'がクラス名または名前空間名ではない
というエラーが出てしまいました。
中のプログラムが間違っているのでしょうか。
たびたび申し訳ございません。
よろしくお願いします。
>>935 早速の返信ありがとうございます。
遅くなってしまいすみません。
メモリは重たくなっても構わないのですが不可視のフォーム作成法がわかりません。。。
もし、ご面倒でなければ、教えてください。
946 :
933 :2007/01/24(水) 19:51:57
>>945 自己レスです。
無事、解決しました。
皆々様に感謝です。
マジデ趣味以外でプログラムやってる奴って馬鹿だろ
仕事でやってますが何か?
趣味で金稼ぐってのも悪くない
それがそうでもない 同じログラムでも仕事で作るのと趣味で作るのとは違うんだな 仕事の方はやっぱりやりたくないよorz
.iniの情報(文字列)を ReadString("セクション","キー","");で読み込んでAnsiString型の変数mojiに格納。 文字列の範囲を指定するためif (moji >= "1" && moji <= "100")に入れた時、 moji = ”0”や moji = "d"はガードできるのですが moji = "1d"をガードできません。 解る方、どうか教えて下さい。
952 :
デフォルトの名無しさん :2007/01/27(土) 20:52:40
↑ moji == "0" moji == "d" moji == "1d"ですた・・・。
>>951 数字だけなら、一回数字に変換すればらくだが・・・
>>953 どもです。
その通りで、数字だけ、文字だけならばどうにでもなるのですが・・・。
何故ダメだかはわかるのですが、ガードする方法は思い付けません。
俺なら、strtolでも使って全部が数字の文字列であるか判定した後(第2引数を利用) その数字の代償で比較するかな。
956 :
デフォルトの名無しさん :2007/01/28(日) 12:41:02
>>955 ありがとうございます。strtol調べてみました。
第2引数は変換出来ない文字の格納先ですか。
ifでも使ってここの値に何かが入っていれば飛ばしてやればいいって事でしょうか?
>>956 整数と判っているのであれば最初からTRegistryIniFile::ReadInteger()で読み込むのが楽だよ。
読み込み失敗時に返す第3引数に0でも指定してやっとけば範囲制限も簡単に解決できるんじゃないかな。
int n = Ini->ReadInteger( "Window", "Left", 0 ); // 整数として評価できない場合は0を返す
if( ( 1 <= n ) && ( n <= 100 ) ){〜
文字列として受け取らざるを得ない場合はAnsiString::ToIntDef()かAnsiString::ToInt()で
intに変換してから判断。(ToInt()は変換できないとき例外を投げる点に注意)
フォームがアイコン化されたメッセージを取得する方法を教えてください
すみません。フォームじゃないですねたぶん Application->Minimize( ); でアイコン化した時に現在アイコン化されてるかどうかを識別する方法を教えてください
IsIconicつーAPIはある
自分で作ったクラスに、__propertyとか使いますか? 使わない方がいいんですか?
Borlander(コアなBorlandファン)なら使うべきじゃない? Delphi使いは、普通につかってるよ。
__closure愛用してるから__propertyも平気で使ってる。
964 :
デフォルトの名無しさん :2007/01/29(月) 22:39:53
いままでVB6使ってたんだけど、このままじゃだめだなと思い C++Builder6を買いました。 初心者にお勧めのサイトを教えてください。m(_ _)m
>>964 薄い方のマニュアルを、最初から順番にやっていくといいよ。
これが一番わかりやすかった。
>>964 イベントハンドラにだらだらと実装書くのはやめましょう
データ操作処理とGUI処理はキッチリ分けた方が管理し易い。 必要な情報だけコントロールから取り出して、本処理は 別のルーチンに整理するのが吉。 つーか最近、保守契約が切れた外注のプログラムをデバッグする機会が あったんだが、ソースをのぞいたら不可視のコントロールを変数代わりに 使ってて死ぬほどウザかった。 リストビューをコレクション代わりに使ってたり。 職業プログラマってこんなもんなのか?
そんなもん ほんとにコード書ける奴は一握り
ビューとモデルをごっちゃにする人はいるね、たまに。 そんな人ばっかりではないけど。 普通は、しないんだから。
まあ、DelphiやBCBやVBやVC#やその他ポトペタ開発環境の多くが、 ビューとモデル、果てはデータまでいっしょくたに書けちゃうしなあ
>>971 分離するためのデータモジュールとTAction〜コンポーネント
クリップボードのデータ持ってくるのにTEditやTRichEdit使っちゃうのはダメですか
Clipbrd をusesに加えて、Clipboard.AsTextで取得・設定
975 :
974 :2007/01/31(水) 06:19:16
Delphiスレと勘違いしてた。スマソ
>>975 ま、似たようなもんです。
Clipboard(void) で TClipboardオブジェクトを取得して操作、が
普通だよね。
VCLフォームアプリケーション(Cソース含む)を作っているの ですが、実行時にブレークできません。 ブレークポイント設定はしているのですが、何故か赤丸の中に バツがあるアイコンが出ます。 ヘルプではコメント,空白行,不正な宣言位置への設定だと書か れていますが、そのような行への設定ではないのですが。。 ブレークポイント設定できない理由をご存知の方、いらっしゃいますか?
>>977 バージョンくらいかけぼけが
ぷろじぇくとおぷしょんこんぱいら
>>978 プロジェクト→オプションを見ましたが、バージョン情報
載ってないです。
ヘルプ→バージョン情報は以下でした。
Borland(R) C++Builder(R) for Microsoft(R) WindowsTM
Version 10.0.2288.42451 Update 2
Copyright (C) 2005 BorlandR Software Corporation.
All Rights Reserved.
>>977 そのソース内、どこでもブレークきかない?
リリースビルドなだけじゃねーの
>>980 はい、どこでもダメです。C++,Cどちらにはってもブレークしてくれません。
>>981 ビルド設定はデバッグ・ビルドになっています。
フォルダの中に、いくつのファイルがあるか知りたいんですが、 FindFirst,FindNextで、数えていくのがよいのでしょうか。
>>983 FileListBox 使うと楽だったりする。
ごめん、どこっていうのも恥ずかしいところでした。 D言語のリファレンス訳書いている人んところですね。
>>984 FileListBox使ったこと無いですが勉強します。
レスありがとうございました。
>>987 >>968 てか個数数えるだけならFindNextのループでカウントとるだけな気が‥‥
const AnsiString dir = "C:\";
TSerchRec find_data;
std::vector<TSerchRec> files;
if(FindFirst(dir, faAnyFile, &find_data) == 0)
{
do
{
files.push_back(find_data);
} while(FindNext(&find_data) == 0)
}
ShowMessage(AnsiString().sprintf("%s内のディレクトリを含むファイルの数は%d個", dir, files.size()));
ファイル名とか取る必要ないならvector使わずにカウンタでインクリメントしてけばいいだけ
中古のbuilder6買ったばかりなんですが、 「Linuxとのクロスプラットフォーム開発を実現する、 CLX(Component Library for Cross platform)のWindows版も収録。」 っていうのは、どういうことなんでしょうか? ・CLXを使って書いたコードを、builder6でコンパイルしてできた実行ファイル ・CLXのライブラリを使えるようにしたlinuxのパソコンに コードを持ってきて、それをコンパイルした実行ファイル が同じ動きするということでしょうか? linuxのビジュアル開発ができるんだったらすごいです。
>>989 後者。
Kylix(Linux用Delphi/BCB)でビルドすればLinux上で動作可能。
まあ、現実にはPCの性能が上がったこともあってJava使った方gゲフンゲフン
>>990 レスありがとうございます。
Kylix Open Edition2ベクターから、ゲットしました。
ユーザー登録しないといけないみたいですが、
試用許諾コードってもう入手できないでしょうか。
インストール解説してるページ見つけて、
”このページからアンケートなどに答えて取得して”ということで飛ぶと、
HP見てももうサポートしてないってページが表示されます。
ふんむー。
>>989 それ以前に、Borland製品の場合、規約で中古ではいかなるライセンスも認めていないから、
商用はもちろん、フリーウェア配布にも使えないよそれ。
ナ、ナンダッテー
994 :
デフォルトの名無しさん :2007/02/02(金) 14:12:10
>[Linker Error] Unresolved external '__fastcall Outline::TCustomOutline::~TCustomOutline()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\BCBSMP.LIB|.\cdiroutl.cpp コンポーネントのインストールでエラーでます。 再インストールしてもこのエラー消えませんが、どうしたら良いですか?
TListViewで行の挿入方法を教えてください
>995 Item = ListView1->Items->Insert(n); 単に追加ならAddで。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。