トップページ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
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以外のコントロールで、矢印ボタンが押されたことを
検知するにはどのようにすればよいでしょうか。
0461デフォルトの名無しさん2011/01/21(金) 16:13:22
初歩的な質問かもしれませんが、
7セグメントを表示するプログラムの書き方ですが、
どのような仕組みなのでしょうか?
ウェブページを検索しましたが、うまくみつかりません。
0462デフォルトの名無しさん2011/01/21(金) 18:46:00
ちょっと恥ずかしい質問なんだけど
これってマニュアルどこにあるの? DVDにはないみたいだけど
0463デフォルトの名無しさん2011/01/21(金) 18:56:19
>461
日本語で

>462
ドキュメントをインストールする
または
ttp://docwiki.embarcadero.com/RADStudio/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
0464デフォルトの名無しさん2011/01/21(金) 19:13:50
461です。

winアプリのフォーム上に、数値をTimerで表示するのですが、
Labelを使うのではなく、7セグメントのデジタル表示にしたいのですが、
良い手はないでしょうか?
0465デフォルトの名無しさん2011/01/21(金) 19:23:47
画像を自前で用意すればいいよ
0466デフォルトの名無しさん2011/01/21(金) 19:38:42
めもりーくりーなーってソフトご存知でしょうか?

ああいう感じで表示したいと思いまして。
0467デフォルトの名無しさん2011/01/21(金) 21:48:33
画像を自前で用意すればいいよ
04684552011/01/21(金) 21:51:07
>464
Windowsでは表示するためにはかならず"ウィンドウ"というものが必要で、Delphi/C++Builderでは
これらはクラス的にTWinControlというものから派生している必要がある。普通のフォームもTForm1 >
TForm > TCustomForm > ... > TWinControl > ,,, TObjectという継承関係にあるので当然フォームでも
よい。もちろんTWinControlから派生したクラスを作ってもいい。いずれにせよ描画をWIndowsが要求したときは
Paintという仮想メソッドが呼び出され、さらにそこから(存在すれば)OnPaintというイベントが呼び出される。
オーバライドしたPaintにしろ、OnPaintイベント内にしろ、プロパティCanvasが描画対象のウィンドウの
DC(Device Context)をラッピングしたものなので、(T)Canvasのメソッドを使ってお絵描きをすればいい。
そのお絵描きが値に応じた7SEGのLEDっぽく見えるようになっていればいいのでは。

あるいはそういうコンポーネントを探してきてインストールすればポトペタでコーディング不要だが。
0469デフォルトの名無しさん2011/01/22(土) 10:04:12
超初心者な質問なのですが、コンボボックスに入力する際に数字以外のキーを
押しても無効にしたいのですが(正確にはアルファベットと記号を除外したい)
OnKeyDownイベントのKey変数から取得する値(数値)がキーボードによって違います。
(ex:英字配列のaと109キーボードのaでは違うキーコードを返してくる)

if文でif(Key=='a')などとすれば良いのでしょうが、それだとキー配列文記述しないといけません。
出来ればif(Key >= 65 && Key <= 90)のような書き方をしたいのですが、良い方法ありませんでしょうか?
04704552011/01/22(土) 11:22:44
そういうときはOnKeyPress
0471デフォルトの名無しさん2011/01/24(月) 10:59:24
VK_A以外の何が返ってくるてんだ?
0472デフォルトの名無しさん2011/01/24(月) 11:11:06
具体的にどんな数字が返ってきているのか気になるな
ただ大文字のA(0x41)が帰ってくるとかじゃないよな?
あと日本語入力になっているとか。
0473 ◆.CzKQna1OU 2011/01/25(火) 17:06:25
test
0474デフォルトの名無しさん2011/01/25(火) 17:32:12
毎回起動時にアップデート画面が出るんですがこれ非表示にできます?
0475デフォルトの名無しさん2011/01/25(火) 20:04:26
オプションのどっかで変えられなかったっけ?
0476デフォルトの名無しさん2011/01/25(火) 20:06:57
>>475
↑設定するところが見つからなかったです
0477デフォルトの名無しさん2011/01/25(火) 20:08:23
ちなみにC++Builder2010です
0478デフォルトの名無しさん2011/01/25(火) 20:21:59
よくわからんがググったら
HKEY_CURRENT_USER\Software\CodeGear\BDS\7.0\AutoRun
HKEY_LOCAL_MACHINE\SOFTWARE\CodeGear\BDS\7.0\AutoRun
あたりをどうにかするといいらしい
0479デフォルトの名無しさん2011/01/26(水) 15:13:04
C++Builder2010で質問

APIのGetPrivateProfileIntみたいに引数でファイル名の部分にはどやってwchar_t型の文字列を与えればいいですか?


0480デフォルトの名無しさん2011/01/26(水) 15:39:34
APIを使わずにそれをwrapしてるクラスを使えばいいと思うよ
ファイル名は普通UnicodeStringに入れてると思うのでc_strで_TCHAR *になるけど
0481デフォルトの名無しさん2011/01/26(水) 16:42:35
いえところがファイル名をwchar_tにjぶち込んでるんですが・・
そもそもこれが間違いですかね?
0482デフォルトの名無しさん2011/01/26(水) 17:50:34
GetPrivateProfileIntW をつかえば、かならず wchar_t* として文字列へのポインタを
指定できるけど?

ファイル名をwchar_tにぶち込む
ってのの実際のコードでもだしてみそ。

0483デフォルトの名無しさん2011/01/26(水) 21:15:54
せっかくC++なんだから文字列はクラスのほうを使おうよ…
0484デフォルトの名無しさん2011/01/27(木) 10:20:26
>>479
_TCHAR のマッピングがcharになっているのではありませんか。
ttp://docwiki.embarcadero.com/RADStudio/ja/TCHAR_%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0
0485デフォルトの名無しさん2011/01/30(日) 03:54:42
>>479
もしかしてこういうこと?

   Func( "文字列" ); ←TCHAR=WCHARのときコンパイルに失敗
   Func( L"文字列" ); ←OK、でもTCHAR=CHARのときはエラー
   Func( TEXT("文字列") ); ←TCHARの状態に関係なくOK
0486デフォルトの名無しさん2011/01/30(日) 11:05:50
>>485
TCHAR=WCHARのときは、Unicode版のGetPrivateProfileIntW
TCHAR=CHARのときは、Ansi版のGetPrivateProfileIntA
が使用される。
0487デフォルトの名無しさん2011/02/02(水) 14:25:55
BCB6でジャンプリストやサムネイルタブ使おうとしてWin7用のヘッダ入れようとしたら茨の道過ぎる……(´・ω・`)
0488デフォルトの名無しさん2011/02/02(水) 15:49:00
C++Builder2010にVirtualTreeViewを入れたいのですけど、
何かよい方法ありませんか?
0489デフォルトの名無しさん2011/02/02(水) 22:28:00
つ ttp://stackoverflow.com/questions/1408094/steps-to-build-virtual-treeview-in-delphi-2010
0490デフォルトの名無しさん2011/02/03(木) 21:12:10
多人数接続のサーバー機能を実装したいのですが、
NMUDPとSocket(Winsock)を使った通信はそれぞれどういう違い・特徴があるのでしょうか?
0491デフォルトの名無しさん2011/02/03(木) 22:48:37
NM*を使うのはもうやめて…。TCPとUDPの違いはわかってる?
まぁIndyかSynapseかIP*Works!か、実質的な選択肢はそのくらいだ。
0492デフォルトの名無しさん2011/02/04(金) 11:05:37
bmpを配列で管理したいのですが、
配列にする方法はあるでしょうか?

// TBitmapオブジェクトを作成
Graphics::TBitmap *bmp = new Graphics::TBitmap [9];
bmp[4]->Assign(Image1->Picture);
Image2->Picture->Assign(bmp[4]);
delete bmp[];

0493デフォルトの名無しさん2011/02/04(金) 12:03:14
vector?
0494デフォルトの名無しさん2011/02/04(金) 12:49:19
std::vector<Graphics::TBitmap*>
解放を自動でやりたいなら派生クラス作って、デストラクタで各要素deleteすればいいんじゃ?
0495デフォルトの名無しさん2011/02/04(金) 20:54:55
//Unit1.h
vector<Graphics::TBitmap*> BM;

//Unit1.cpp
BM.reserve( 11 );
BM[0]->Assign(Image1->Picture);

コンパイルはできましたが、読み込み違反で怒られました。
文法が・・・
0496デフォルトの名無しさん2011/02/04(金) 21:36:18
reserveしただけで使えるわけないだろアホか
0497デフォルトの名無しさん2011/02/06(日) 23:38:36
>>494
boost::ptr_vector使ったらうまく行くだろ
0498デフォルトの名無しさん2011/02/07(月) 22:12:17
結局ImageList使いました。
0499デフォルトの名無しさん2011/02/08(火) 17:51:21
プログラム固有の設定などの保存って、どんなファイル形式にするのが普通なの?
推奨のもの用意されてるのかな、TIniFileなんて今更だよねぇ
0500デフォルトの名無しさん2011/02/08(火) 17:57:40
最近はxmlとかも増えたよね
0501デフォルトの名無しさん2011/02/08(火) 18:48:30
レジストリ
XML
INI
どれでもお好きなのを。INIは64KB制限と普通ANSIなのに注意。
レジストリはHKCU\Softwareの下、ファイルはCSIDL_APPDATAの下に配置。
0502デフォルトの名無しさん2011/02/08(火) 20:49:08
BCBだとiniはTMemIniFile使うから64KB制限関係なくね?

>>498
ImageListは全要素同サイズの縛りがあるぞ。たしか。
0503デフォルトの名無しさん2011/02/10(木) 07:26:56
>>498
同サイズでした。
またたのんどきます。
0504デフォルトの名無しさん2011/02/10(木) 16:32:44
>>503
"vector<Graphics::TBitmap*>" これをそのままGoogleに尋ねる
0505デフォルトの名無しさん2011/02/14(月) 12:37:18
既に起動されてるスクリーンセーバーを解除する方法を教えて
0506デフォルトの名無しさん2011/02/14(月) 12:55:57
mouse_eventでマウスを動かす
0507デフォルトの名無しさん2011/02/14(月) 13:06:40
>>506
いやそれを真っ先にやったんですがダメでした・・
ちなみにOSはWin7です
0508デフォルトの名無しさん2011/02/14(月) 17:09:37
マルチすんな
http://hibari.2ch.net/test/read.cgi/tech/1293326783/584-587
■ このスレッドは過去ログ倉庫に格納されています