トップページtech
985コメント281KB

くだすれC++Builder(超初心者用)その4

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/10/23(金) 09:06:16
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

Embarcadero Home Page
http://www.codegear.com/jp/

<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50

くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50

くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/

<兄妹スレ>
くだすれDelphi(超初心者用)その50
http://pc12.2ch.net/test/read.cgi/tech/1246340765/l50
0361デフォルトの名無しさん2010/06/12(土) 13:54:38
>>360
そうですか
バージョン情報のチェックは入ってない状態です

何で微妙に違うファイルが毎回出力されるんだろう
というかこれってうちだけの現象なんでしょうか
0362デフォルトの名無しさん2010/06/12(土) 14:00:13
diffってみたら?
0363デフォルトの名無しさん2010/06/12(土) 16:18:13
WindowsはPEヘッダにタイムスタンプ入るから同じEXEはできない
オプションはない
それでも2バイト前後だから10バイト以上異なるならデバッグ情報ジャマイカ?
0364デフォルトの名無しさん2010/06/12(土) 20:30:52
成る程そういうことでしたか
大体10バイト程度ですが近くにPE\0の文字も確認できるのでそれで間違いなさそうです
勉強になりました
どうもありがとうございます
0365デフォルトの名無しさん2010/06/13(日) 16:08:55
ようやく64bitに対応したね
0366デフォルトの名無しさん2010/06/13(日) 16:12:43
あとはデバッガが動けばねぇ
0367デフォルトの名無しさん2010/06/13(日) 17:11:23
すみませんが、BCB6でfastmmのフルデバッグモードを使うには
どのような設定が必要かご教示お願いします。
FastMM4.pasやFastMM4BCB.cppをプロジェクトに組み込んだのですが、
終了時にメモリリークのダイアログしかでてこないので、どこでリークしているのか
良く分かりません。
0368デフォルトの名無しさん2010/06/13(日) 21:19:22
C++Builder使いじゃないからよくわからんけど、プロジェクトオプションでFullDebugModeを
定義済の状態にしてFastMM関係のソースをコンパイルすればいいはず(*.objか*.dcuを
一旦削除することで)。FastMM_FullDebugMode.dllを配置するのも忘れずに。
0369デフォルトの名無しさん2010/07/02(金) 20:18:11
わかりました。
0370デフォルトの名無しさん2010/07/28(水) 10:55:56
BCB2010を使ってるんですが
これのSTLのfstreamって
4GB超えるファイルは扱えないんでしょうか?

ifstream in(file_path, ios::binary);
in.seekg(0, ios::end);
int64_t file_size = in.tellg();

とやると
小さなファイルでは正しくファイルサイズが返ってきますが
4GB超えるファイルを開くと file_size には0xFFFFFFFFFFFFFFFFが返ってきます
0371デフォルトの名無しさん2010/07/28(水) 20:52:19
>>370
std::ifstream::tellg()はstd::pos_typeを返す

従ってstd::pos_typeの内部表現次第と言うしかない
つまり処理系依存

これを避けるのはWin32を直接触るしかなかろう
0372デフォルトの名無しさん2010/07/28(水) 21:32:11
確か、stdioも同じなはず。
シーケンシャルに4G超えを読み取ることは出来る(はず)が
seekは出来ない(_lseeki64とかを使う)。
また、tellで得られる値も32bit。

VC++がそういう仕様になっているので
他の処理系もそれに合わせてるんじゃないかとも思う。
0373デフォルトの名無しさん2010/08/09(月) 13:43:51
TForm::OnCloseの中で、
>delete this;
って、
アリですか?
0374デフォルトの名無しさん2010/08/09(月) 15:28:55
ない
Action = caFree;
でok
0375デフォルトの名無しさん2010/08/09(月) 17:33:13
d

検索したらイパーイ出てきました。
>ttp://kakinotane.s7.xrea.com/delphi/d2/d035.html
>ttp://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200608/200608_06080037.html


やっぱ、delete thisすると、フォームを閉じる前にオブジェクト破棄しちゃうわけですね?
それとも、C++ のクラスで、自オブジェクトのdeleteは許可されてないとか?
0376デフォルトの名無しさん2010/08/09(月) 18:32:58
>C++ のクラスで、自オブジェクトのdeleteは許可されてない
言語仕様としては許されているが、実行時に解放済みメモリポインタをアクセス、または多重解放が起きる
可能性が高い。(かつコンパイル時には発見しづらいので、デバッグしにくいバグを抱える原因となる)

Google で Delete This で探せばいくらでも資料が出てくるよ

VCL に限った話をすると、OnClose の後に、Windows OS からメッセージが飛んでくる場合があり、
予想外のことが起きる可能性が高いです。OnClose は(可視)なウィンドウ実体の、終了直前に呼ばれる物。
そのあと、いろいろ後始末をしてから、C++ ランタイムとしてのメモリ実体が削除されることになっています。

なので、直接削除は避けた方が良いですよ。
または、ちゃんと設計して見切って使うように。

0377デフォルトの名無しさん2010/08/10(火) 09:27:23
ググれば良かったのねw、ton
0378デフォルトの名無しさん2010/08/10(火) 19:47:03
Windows7でエアロ切らずにGDI描画を速くする方法ありませんか?
0379デフォルトの名無しさん2010/08/10(火) 21:56:57
一般的にWindows 7ではエアロが有効なほうが描画が早くCPU負荷も低い。エアログラスは切ったほうが軽くなるが。
でなんだって?
0380デフォルトの名無しさん2010/08/22(日) 22:51:01
どなたかアドバイスお願いします。

関数プロトタイプ宣言で以下の様に記述すると、
「エラーE2303 型名が必要」と表示されます。
第2引数のTtrackBarを削除するとエラーは出ません。
何がいけないのでしょうか?

Func( TEidt *Edit, TTrackBar *Bar, DWORD num );
0381デフォルトの名無しさん2010/08/22(日) 22:53:40
環境を書き忘れました。

BCB6Pro+SP4
XP32bit

です。
0382デフォルトの名無しさん2010/08/23(月) 00:34:22
TTrackBarに必要なヘッダがincludeされていない
0383デフォルトの名無しさん2010/08/23(月) 00:35:52
ComCtrls.hpp だな
0384デフォルトの名無しさん2010/09/06(月) 08:04:54
いまだ、C++Builder6を使っているんだけど、最新版には64ビットコンパイラは含まれてるの?
0385デフォルトの名無しさん2010/09/06(月) 08:33:50
質問です。
TListViewにて
ListView1->ViewStyle=vsReport;
とし、列を複数表示します。
マウスを使って、先頭の列を他の列に移動します。
そして先頭の列の状態を取得すると
ListView1->Columns->Items[0]->Caption;
ListView1->Columns->Items[0]->Width;
ListView1->Columns->Items[0]->Alignment;
ListView1->Columns->Items[0]->ID;
ListView1->Columns->Items[0]->Index;
上記のWidthだけが、入れ替え前の列幅値となってしまいます。
他の値は、ちゃんと入れ替え後の列の値が取得できます。
マウスで列の入れ替えを実行したあとに、各列の幅を取得するにはどうしたら良いのでしょうか。
0386デフォルトの名無しさん2010/09/06(月) 23:24:52
>384
まだ
Delphiは来年、C++Builderは再来年の予定
0387デフォルトの名無しさん2010/09/07(火) 14:08:06
再来年って遅くね?
0388デフォルトの名無しさん2010/09/07(火) 21:15:16
そうは思うけど、ロードマップとフォーラムで再来年目標(キリッって書いてたし。
0389デフォルトの名無しさん2010/09/08(水) 11:23:18
だってお、バンバン
0390デフォルトの名無しさん2010/09/14(火) 16:41:48
Builder2007ですがデータベースのバックアップ(MySQL)を
別サーバーに定期的に取りたくて
サーバーA(元)はSQLConnection1とSQLTable1で接続し、
サーバーB(先)はSQLConnection2とSQLTable2で接続したのですが・・・
そこからどうやって各テーブル内容をAからBに作成したらいいのですか?
ちなみにBにはデータベースはありますが、テーブルは無いので
テーブルを作成して全レコードをコピーしたいのですが・・・

0391デフォルトの名無しさん2010/10/02(土) 08:39:47
デザインをC++ビルダーで作って
細かいところをVisualC++で直すとかできますか?
0392デフォルトの名無しさん2010/10/02(土) 08:43:42
VCL ライブラリを MSVC ではリンクできないのでかなり大変。
くだすれに来るような人には無理。

よくある現実解は、ガワだけ CBuilder で作り実作業は VC で作った DLL に任せる。
0393デフォルトの名無しさん2010/10/02(土) 12:26:33
速解ありがとうございました。

つまり処理系はDLLでもう弄くれないようにして
そいつをビルダーで呼び出すということですか

opengl使ったソフトウェアを組みたかったのですが
なかなか大変ですね。

加えて質問なのですが
現在は試用版しかないという理解でよいですか?
Turbo C++ Explorer 日本語版 というものが使えれば
DLしたかったのですが…難しそうですね
0394デフォルトの名無しさん2010/10/02(土) 12:54:53
C++BuilderでOpenGLは別に問題ない組み合わせじゃまいか?

試用版しかない、という理解はそれでOK。
0395デフォルトの名無しさん2010/10/02(土) 13:54:48
Explorer 本体はまだウェブに残ってるけど、ライセンス キーもウェブに転がってる奴くらいしかない
http://www.turbomirror.com/
0396デフォルトの名無しさん2010/10/02(土) 15:54:40
reg740txtは中国によくうpされてるらしいね

0397デフォルトの名無しさん2010/10/07(木) 23:55:35
これからC++Builder始めます
C++Builderでのwindowsアプリケーションを始めるにあたり
0398デフォルトの名無しさん2010/10/08(金) 19:10:51
2009でデバッグ時TEdit->TextとかTStringGrid->Cells[][]とかの中身見れなくなったけど
2010やXEじゃ改善されてるの?
0399デフォルトの名無しさん2010/10/09(土) 11:12:21
アカデミ版で作ったソフト売っちゃいけないの?
0400デフォルトの名無しさん2010/10/09(土) 14:21:42
ライセンス違反ですね。
0401デフォルトの名無しさん2010/10/09(土) 16:37:25
↑あっそう?
パッケージには何も書いてないけどね
0402デフォルトの名無しさん2010/10/09(土) 16:56:37
EULAに書いてあるでしょ?
0403デフォルトの名無しさん2010/10/11(月) 15:08:00
C++builder触って、いろいろ講座のコピペで楽しんでますが
これって結局Win32APIのラッパーウェアってこと?
0404デフォルトの名無しさん2010/10/11(月) 15:43:26
すいません、ラッパーウェアってなんですか?

VCLはWin32を適度な抽象度でラッピングしている、って意味なら、そうですね。
0405デフォルトの名無しさん2010/10/11(月) 16:09:35
http://img10.shop-pro.jp/PA01048/291/product/10978741.jpg
0406デフォルトの名無しさん2010/10/12(火) 19:39:14
一般にはフレームワークって言わないか?
0407デフォルトの名無しさん2010/10/20(水) 22:01:44
フォームに直接描画せず、コンポーネントのみで「□」の様な中抜きの枠を作ることは可能でしょうか。
環境はBCB6です。
0408デフォルトの名無しさん2010/10/21(木) 06:57:14
可能ちゃぁ可能だが。そういうコンポーネントを作ればいいんで。ただやることは
親フォームに対するリージョンの設定ってことになると思うけど。
0409デフォルトの名無しさん2010/10/21(木) 11:16:05
BCB 2010 使ってみてるんですが、TRegexp で躓いてます。

基本的な事が解って無いので

簡単な文字列検索をやってみたいんですが・・・。
Edit と Button と Memo とを貼り付けたフォームで
Button の OnClick イベントで

 TRegexp ex((char *)Edit1->Text.c_str()); // キャストに問題?
 pos = ex.find((char *)Memo1->Text.c_str(), &len, start); // 同じく...?

こうすると、コンパイルは通りますが、検索する文字が有るにも関わらず、
posには「-1」しか返ってきません。

どうしたら上手くいくでしょうか...。(多分、おばかな質問ですみません)
04104092010/10/21(木) 11:55:20
>>285, >>286 を元に自己解決しました。

TRegexp が Unicode対応じゃないので、ANSIに変換すればいいんですね...。
オーバーヘッドが生じるとは思いますけど。
0411デフォルトの名無しさん2010/10/21(木) 14:15:59
ファイル数が多いプロジェクトをクリーン状態からコンパイルするときに、
ソース一個ずつ順番にコンパイルしていくのが遅くて辛抱たまらんので
せっかくマルチコアCPUが普及してきてんだから .obj 作るとこくらい
並列で複数同時に実行できんかいなと考えてるんだが、なんかいい手ないか?

バッチファイル的なもんでディレクトリ下の .cpp まとめてコンパイルかけるとか
そういう形ができそうな気がしてるんだけど・・・どう?
0412デフォルトの名無しさん2010/10/21(木) 19:00:25
>>408
ありがとうございます。
少し語弊があったのですが、中抜きというより、LabelやImageなどの外周に黒枠を付けた感じにしたいのですが可能でしょうか
よろしくお願いします。
0413デフォルトの名無しさん2010/10/21(木) 20:22:18
それはひょっとしなくてもスプラッシュではないのか?
0414デフォルトの名無しさん2010/10/22(金) 10:11:07
>412
少し語弊どころか何したいのか理解できん
0415デフォルトの名無しさん2010/10/22(金) 12:04:08
>>412 俺がエスパーしてみる。
コンポーネントに枠をつけたいのね?

TLabel に枠をつけたいなら
TStaticText で代用して BorderStyle = sbsSingle とか

その他のコンポーネントなら
TPanel に BorderStyle = bsSingle と BevelOuter = bvNone を指定して
このパネルん中に TImage なり何なりおいて Align = alClient

もっと具体的にやりたいことを説明してくれんと。
0416デフォルトの名無しさん2010/10/22(金) 12:18:11
枠だけのコンポーネントなら TShape てのもある
0417デフォルトの名無しさん2010/10/23(土) 18:12:15
FFTWをC++ Builder 2009で使いたいのですが、うまくいきません。

http://www.fftw.org/install/windows.html 内に書かれている
implib -a fftw3-3.lib libfftw3-3.dll
で作成したlibは、BCB6.0で動作確認できました。

同様の手順をBuilder2009のimplibで試したところ、
libは作成できますが、デバッグ時に

[ILINK32エラー]Error: 未解決の外部参照'_fftw_malloc'が …\DEBUG\FILE1.OBJから参照されました

となり実行できません。
どなたか解決のヒントをいただけないでしょうか、お願いします。

0418デフォルトの名無しさん2010/10/23(土) 18:14:20
FFTWをC++ Builder 2009で使いたいのですが、うまくいきません。

http://www.fftw.org/install/windows.html 内に書かれている
implib -a fftw3-3.lib libfftw3-3.dll
で作成したlibは、BCB6.0で動作確認できました。

同様の手順をBuilder2009のimplibで試したところ、
libは作成できますが、デバッグ時に

[ILINK32エラー]Error: 未解決の外部参照'_fftw_malloc'が …\DEBUG\FILE1.OBJから参照されました

となり実行できません。
どなたか解決のヒントをいただけないでしょうか、お願いします。

0419デフォルトの名無しさん2010/10/23(土) 20:57:33
フローティングウィンドウ
ツールパレット
DockPane
DockWindow
とかの組み方の載っているサイトおしえてください
0420デフォルトの名無しさん2010/10/25(月) 18:52:13
フォームのクラスcppを複数のcppファイルに分割できますか?
上下スクロールがめんどいので、同じクラスを分割入力
できないかと
0421デフォルトの名無しさん2010/10/25(月) 21:57:48
お勧めしないけど#includeでいいんじゃね?
0422デフォルトの名無しさん2010/10/25(月) 22:04:45
勝手に分けてプロジェクトに追加するだけでいいじゃん
0423デフォルトの名無しさん2010/10/25(月) 22:28:03
>>418
MinGWでコンパイルしてあるじゃんこれ
基本的にexeとdllは同じコンパイラで作成した方が何かといいよ
違うと変な問題で頭を悩ます事になる
0424デフォルトの名無しさん2010/10/25(月) 22:33:58
>>421>>422
ども。
0425デフォルトの名無しさん2010/10/26(火) 08:29:10
>>423
ありがとうございます。
元のソースからコンパイルして使うということでしょうか、
やってみます。
0426デフォルトの名無しさん2010/10/26(火) 22:22:14
About画面を作りたいのですが、
フォームの場所に関わらずクリックを検出するにはどのようにすればよいでしょうか
0427デフォルトの名無しさん2010/10/26(火) 22:38:21
OnClick
0428デフォルトの名無しさん2010/11/02(火) 15:52:07
C++ Builder XE Trial版は30日を過ぎると使えなくなりますか?
0429デフォルトの名無しさん2010/11/02(火) 21:56:50
はい
0430デフォルトの名無しさん2010/11/03(水) 15:36:38
>>429
ども
0431デフォルトの名無しさん2010/11/06(土) 21:12:34
C++ Builder XEで
マルチコアを使ったコンパイルどうやるんですか
0432デフォルトの名無しさん2010/11/16(火) 11:11:09
TEditで、任意の場所に文字列を加えるプログラムを作りたいのですが、
現在のカーソル位置を取得する関数はあるのでしょうか
0433デフォルトの名無しさん2010/11/16(火) 11:42:03
     *      *
  *     +  あります!
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
0434デフォルトの名無しさん2010/11/16(火) 16:46:21
勿論あるよ!!
0435デフォルトの名無しさん2010/11/18(木) 14:26:07
2010とXEだとあまり大きな変更はないんですかね?
XEにアップグレードするメリットってなんかありますか?
0436デフォルトの名無しさん2010/11/18(木) 14:39:47
クロスプラットフォーム
0437デフォルトの名無しさん2010/11/19(金) 10:54:09
64ビットアプリはまだ作れないんだよね?>XE
BCB関連では大きな変化がないよね

クロスプラットフォームとかどれくらい実用的なんだろ?
0438デフォルトの名無しさん2010/11/20(土) 21:14:44
BC++で作った*.libをVC++から使いたいのですが
どうしたらよいのでしょうか?
とりあえずソースは無いです
0439デフォルトの名無しさん2010/11/25(木) 14:10:37
質問です。コンボボックスにフォーカスがくると、そのコンボボックスがドロップダウン(?)して
選択できるようにするにはどうすればよいでしょうか?

よろしくおねがいいたします。
0440デフォルトの名無しさん2010/11/26(金) 12:22:32
>>439
どこがわからないのかな。
コンボボックスにフォーカスが来たことを検知する方法なら
OnEnterイベント。
コンボボックスのドロップダウンなら
ttp://www.gesource.jp/weblog/?p=391
0441デフォルトの名無しさん2010/11/27(土) 15:33:23
StringGridでスクロールバーをプログラムで制御したいのですが、やり方がわかりません。
どなたかよろしくお願いします。
0442デフォルトの名無しさん2010/11/27(土) 16:17:41
自己解決して目的は達成出来たのでいいですw
Rowプロパティを設定すればよかったみたいデス
スレ汚しサーセンwww
0443デフォルトの名無しさん2010/12/01(水) 12:50:20
超初心者ですみません。
カーネルは全てのSM、SPにほぼ同じ命令がされるんですよね?
GT200で、
__shared__ int i;
for(i=0; i<8; i++)
とした場合ループせずに終わったりはしませんか?
0444デフォルトの名無しさん2010/12/01(水) 14:28:22
そんなわけないですね。失礼しました。
0445デフォルトの名無しさん2010/12/01(水) 15:37:14
いえいえ^^
0446デフォルトの名無しさん2010/12/03(金) 23:17:48
SpeedButtonって、押下状態のまま非活性にするのに良い方法はないでしょうか?
Down=trueのSpeedButtonのEnabledをfalseにしたら、Downがtrueなのかfalseなのかわからない表示状態になってしまうので、、、

操作は不可、でも直前の操作で押下されていたかは視覚的に確認可能っていう形にしたいです。
どなたかご教授願います。
0447デフォルトの名無しさん2010/12/03(金) 23:33:43
Panelなどのコンテナ上に配置して、そのコンテナのEnabledをFalseにする。
解決方法としては微妙だが。
04484462010/12/03(金) 23:59:27
おぉ、それでもいけるのですね! 
対応策の候補として覚えておきます。 
ありがとうございます。

ただ、ボタンの数が非常に多いので再配置が少し手間取りそうです、、、
現在SpeedButtonはOnClickで全て共通の関数を呼んでるので
そこに組み込むような形が理想なのですが、コードのみでの実現は難しいでしょうか?
0449デフォルトの名無しさん2010/12/04(土) 11:22:53
Panel置く
SpeedButtonを全部選択
Ctrl+x
Panelクリック
Ctrl+v
0450デフォルトの名無しさん2010/12/04(土) 13:13:20
2006以降のIDEなら構造ペイン(普通左上にあるやつ)でもできるな。
ボタンを選択→パネルにドロップ
04514462010/12/05(日) 06:40:44
>>449-450
ありがとうございます!
おかげ様でさほど手間もかからず解決しました!
0452デフォルトの名無しさん2010/12/19(日) 13:30:14
質問です。
パスで指定したファイルをエクスプローラから開くにはどうすればよいでしょうか。
(画像を開く場合、標準のビューアが開くといった感じです)
0453デフォルトの名無しさん2010/12/19(日) 14:34:49
つ ttp://msdn.microsoft.com/ja-jp/library/cc422072.aspx
0454デフォルトの名無しさん2010/12/21(火) 16:33:32
MDIの子ウィンドウを非表示にするにはどうすればよいでしょうか
WinXP BCB6.0です
0455デフォルトの名無しさん2010/12/21(火) 21:31:29
>454
MDIの子ウィンドウは存在している限り表示されます。これはWindows側の制限によるものです。
0456デフォルトの名無しさん2010/12/22(水) 12:26:39
DrawGrid(StringGrid)のグリッドラインの色ってシルバー?固定ですが
このグリッドラインの色を変更する方法を教えてください
0457デフォルトの名無しさん2010/12/24(金) 00:03:34
>>455
ありがとうございます。
もう一つ質問お願いしたいのですが、開発環境によってはMDIの子非表示は可能でしょうか。
VB製のソフトで非表示が実現できているものがあったので気になりました
04584552010/12/24(金) 00:35:07
>456
固定みたい。Grid.pasをプロジェクトと同じ場所において改変するか、有償のコンポーネントを
買ってくる。

>457
いやだからできないって。単に一旦破棄→非表示に見えるってだけじゃないの?Spy++か
WinSightなんかでMDIChildがhiddenになってるかを確認してみな。
0459デフォルトの名無しさん2010/12/25(土) 17:57:56
TDrawGridの項目を外へドラッグしたいのですが、
dmAutomaticを入れると項目の選択が行えなくなり、
OnMouseDownに記述すると今度はドラッグ自体発生しません。
どうすれば解決できますか?
0460デフォルトの名無しさん2010/12/30(木) 09:13:30
質問です。
TScrollBar以外のコントロールで、矢印ボタンが押されたことを
検知するにはどのようにすればよいでしょうか。
■ このスレッドは過去ログ倉庫に格納されています