トップページ⇒tech
1001コメント310KB

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

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

Borland Home Page
http://www.borland.co.jp/

兄弟すれ
くだすれDelphi(超初心者用)その24
http://pc8.2ch.net/test/read.cgi/tech/1115581376/l50
0175デフォルトの名無しさん2005/09/05(月) 19:23:36
C++Builderはver1.0以来遠ざかっていたのですが、最近再び興味が湧いてきて
遅まきながら C++Builder Hello World Application in DeXter のデモも拝見しました。
(ttp://www.drbob42.com/cbuilder/)

これを見ると統合の煽りもあってか、ぱっと見C#系というかVisual Studioというか、
フォームを取り巻く環境がが随分と様変わりしているようなのですが、そうなって来ると
今この時点で単独製品としてのBCB6を押さえておく方が良いのかという気にもなってきます。
あるいはここまで来たら新製品のリリースを待つべきなのかどうか、その辺をご教授
頂けないでしょうか。
0176デフォルトの名無しさん2005/09/05(月) 21:30:39
>>175

ボーランドのホームページ見たら、
8月末で現行BCB6の販売が終わったようですよ。

0177デフォルトの名無しさん2005/09/05(月) 21:48:14
>>176
こらこらいいかげんなこと言わない。

>2005/8/31をもちましてC++Builder 6 StarTeam 2005 Editionの販売を終了いたしました。

他のパッケージはまだ売ってるよ。
0178デフォルトの名無しさん2005/09/05(月) 21:54:28
VSライクのIDEはXGAだと作業領域が狭くなりがち
悪いところは真似しなきゃよかったのにね
01791762005/09/05(月) 23:26:36
>>177
StarTeam付きが終了しただけなのね。
8/31付価格表pdfに載ってますね。
スマソ>>175
01801732005/09/06(火) 09:25:31
>>174
ありがとうございます。
ライブラリパスの設定でコンパイルは通りました。

ただ、また1点問題が…
フルスクリーン化までは成功しているのですが、解像度の変更が
出来ておりません。
当方の簡単な環境ですが、BCB6#4でディスプレイは1600x1200(32bit)です。
他に何かすることがあるのでしょうか?
0181デフォルトの名無しさん2005/09/06(火) 09:50:04
>>180
http://sz.sakura.ne.jp/~mimi/uti/kaiharu/08.htm
によると24bppはサポートしてない場合があると書いてるけど、他のモードもだめ?
0182デフォルトの名無しさん2005/09/06(火) 10:36:20
>>180
いまどきのモニタなら24bitはサポートしてないでしょ。
8か32でやってみ。
01831802005/09/06(火) 10:54:11
>>181-182
ありがとうございます。
32bitにしたところ問題無く動作しました。
モニタに依存するものでしたか・・・
>>169で出したページより>>181で教えて頂いたページのほうが
エラーチェックまでしてあって良いですね。

教えて頂きました皆様、ありがとうございました。
0184デフォルトの名無しさん2005/09/06(火) 14:15:11
>>175
とりあえず、BCB6は使いやすいから持っとくべし。
次バージョンはDelphiとの統合で重(ry
0185デフォルトの名無しさん2005/09/07(水) 06:26:33
重(ry だけで済むといいけど
0186デフォルトの名無しさん2005/09/07(水) 10:08:18
次バージョンはいつごろ(ry
0187デフォルトの名無しさん2005/09/07(水) 18:54:54
くだ質ですが下記のようなエラーがでます。
class Hoge : public TForm, public Foo
[C++ エラー] Hoge.h(102): E2246 Foo は、抽象およびパブリックの、
データを持たない単一の継承クラス階層ではない

エラーコードをヘルプで調べたら
    内部コンパイラエラー。コンパイラがクラス階層に制約を強制することがあります。
    この場合,すべてのクラスは抽象クラスであり,
    すべてのクラスに親が 1 つだけ存在するという制約になります。
とありました。

TForm + 他のクラスのような多重継承は出来ないのでしょうか?
0188デフォルトの名無しさん2005/09/07(水) 19:13:20
>>187
ヘルプより

> C++ と異なり,Object Pascal 言語は多重継承をサポートしません。
> VCL か CLX を派生元にして作成されたクラスも,この制約を継承します。
> つまり,VCL/CLX クラスから直接派生したクラスでなくても,
> VCL スタイルの C++ クラスは複数の基本クラスを使用できません。
0189デフォルトの名無しさん2005/09/07(水) 19:33:01
で、エラーメッセージで抽象クラスがどうこう言ってるのは、

> C++ で多重継承を使うケースの多くは,Object Pascal コードではインターフェースで代用できます。
> 純粋仮想関数だけを持ち,データメンバーを持たないクラスがある場合,
> C++Builder のコンパイラは,これを Object Pascal のインターフェースに対応するクラスとして認識します。
> このように,VCL スタイルクラスを作成して,多重継承を使用することが可能です
01901872005/09/07(水) 23:45:57
>>188-189
ありがとうございます。
共通のインターフェースを実装することが目的だったので
助かりました。

前回は仮想関数で実装していたので純粋仮想関数にして継承させたらうまくいきました。
純粋仮想関数という機能に気づきませんでした。
0191デフォルトの名無しさん2005/09/10(土) 10:20:39
http://pc8.2ch.net/test/read.cgi/tech/1124614110/l50
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
0192名無しさん@そうだ選挙に行こう2005/09/11(日) 18:49:41
BCBは1〜6まで使ってきましたが、Delphiほどそんなにバージョンごとの
差異は感じられませんでした。個人的には5か6で十分かなと思います。
今のうちにBCB6proを確保しておくべきです。絶対にあとで後悔するでしょう。
私はデータベース関係のアプリは作らないので、最近になって、personal版も
買いました。起動爆速、CLXなんて使いもしないライブラリがなくてすっきりです。
>>175
0193デフォルトの名無しさん2005/09/12(月) 05:28:44
.strというファイルが出来たのですが、このファイルはどのような役目のファイルなのでしょうか
0194デフォルトの名無しさん2005/09/12(月) 20:55:43
>>192
起動時の標準コンポーネントからCLXとDB関係を抜けばいいだけな気が‥‥
0195デフォルトの名無しさん2005/09/13(火) 08:16:57
http://makimo.to/2ch/piza2_tech/969/969458279.html
http://makimo.to/2ch/piza2_tech/997/997074601.html
http://makimo.to/2ch/pc3_tech/1016/1016065855.html
http://makimo.to/2ch/pc2_tech/1035/1035596146.html
http://makimo.to/2ch/pc2_tech/1045/1045542179.html
http://makimo.to/2ch/pc5_tech/1054/1054280736.html
http://makimo.to/2ch/pc2_tech/1061/1061594556.html
http://makimo.to/2ch/pc5_tech/1080/1080541814.html
http://makimo.to/2ch/pc5_tech/1089/1089299158.html
http://makimo.to/2ch/pc5_tech/1094/1094749339.html
http://makimo.to/2ch/pc5_tech/1099/1099238936.html
http://makimo.to/2ch/pc8_tech/1108/1108468718.html
0196デフォルトの名無しさん2005/09/13(火) 16:11:22
VCL は Object Pascal で書かれているんですか?
0197デフォルトの名無しさん2005/09/13(火) 18:35:52
いえ、Delphi言語で書かれています。
0198デフォルトの名無しさん2005/09/16(金) 03:20:49
一部アセンブラです
0199デフォルトの名無しさん2005/09/16(金) 07:55:06
Delphi言語にはアセンブラ表現も可能というか含まれております
0200デフォルトの名無しさん2005/09/18(日) 23:55:39
DelphiとBCBでまったく同じアプリをつくったけど、
どうしてもBCBが200KBほどデカくなる傾向にある。
サイズをできるだけ小さくする方法はないものか
0201デフォルトの名無しさん2005/09/19(月) 00:30:16
MFC使うw
0202デフォルトの名無しさん2005/09/19(月) 01:19:30
おーそーなんだ
200Kはでかいような、気にしないような微妙なサイズですな
0203デフォルトの名無しさん2005/09/19(月) 08:30:34
MFCのスタテックリンクの方が根本的にデカイように思うが

>>199
BCBだとCとDelphiの両方のライブラリをリンクするからじゃないの?
解決法は無いと思うよ。

・基本的にDelphiで作って、Cのコードをはobjでリンクする
・圧縮実行ファイルにして誤魔化す
0204デフォルトの名無しさん2005/09/19(月) 15:32:00
>>199
DOS版のTurbo Pascalの頃すでにそうだったものね

というかCP/M版でもそうだったんだろか
0205デフォルトの名無しさん2005/09/20(火) 03:43:08
>>200
実行時パッケージを使って構築
0206デフォルトの名無しさん2005/09/20(火) 05:32:16
>>199
BCB だと *.asm が混じってたから Delphi もそうだと思ってたよ
0207デフォルトの名無しさん2005/09/20(火) 09:57:52
>>205
すげえ。ダイナミックリンクしといてファイルサイズが(以下略
0208デフォルトの名無しさん2005/09/20(火) 12:42:11
>>206
Turbo Pascalは某が標準PASCALを無視して万能を目指したからだろうね
組み込み屋さんのコードとか見るとasm文のオンパレード
0209デフォルトの名無しさん2005/09/23(金) 07:00:16
568 名前: デフォルトの名無しさん [sage] 投稿日: 2005/09/22(木) 11:44:11
並べてみると壮観だね

A list of features in Dexter
http://groups.google.co.jp/group/borland.public.cppbuilder.non-technical/msg/901d7e5f9cb15e40?hl=ja&
0210デフォルトの名無しさん2005/09/24(土) 02:04:06
ちゃんと動けばいいね。D2005 だってスペックは壮観だったけど、実物はひどかったし
0211デフォルトの名無しさん2005/09/24(土) 03:30:33
無償版のBuilderXは有償版の奴と比べてどうなんですか
0212デフォルトの名無しさん2005/09/24(土) 04:39:38
>>211
スレ違い。こっち。
Borland C++ BuilderX
ttp://pc8.2ch.net/test/read.cgi/tech/1065260556/l50
0213デフォルトの名無しさん2005/09/24(土) 15:04:32
TFormのTって何? ただのFormじゃいかんの?
0214デフォルトの名無しさん2005/09/24(土) 15:17:15
MFCがCで始めるのと同じで、単にTで始めたら クラスとかの型だよって事
0215デフォルトの名無しさん2005/09/24(土) 15:28:05
TForm1* Form1 = new TForm1;

Tがあれば型名。なければ変数名と一目で分かるようになってる。
0216デフォルトの名無しさん2005/09/24(土) 18:42:49
型名だから間違いなくTypeのTだろうな。
0217デフォルトの名無しさん2005/09/24(土) 20:37:01
Typという説もある(ドイツ語)。
0218デフォルトの名無しさん2005/09/25(日) 04:07:53
ボーランドのことだ、Turboかもしれん。
0219デフォルトの名無しさん2005/09/25(日) 11:52:00

OnMouseUpのイベントと
OnMouseDownのイベントの関数を別にしたいんですが、

プロパティ画面でどちらかを変更するともうかたいっぽも同じ関数になります。
どうすればいいんでしょうか。
02202192005/09/25(日) 12:13:57
一回両方とも空にしてから変更したら別になりました。お騒がせしました。
0221デフォルトの名無しさん2005/09/25(日) 13:49:32
MFCのCは何?Cincoのこと?
0222デフォルトの名無しさん2005/09/25(日) 13:55:12
Cincoってなに?
0223デフォルトの名無しさん2005/09/25(日) 14:13:00
>>222
スペイン語で”5”の事では?
0224デフォルトの名無しさん2005/09/25(日) 15:31:21
Microsoft Foundation Class
0225デフォルトの名無しさん2005/09/26(月) 13:17:05
コードエディタでコードを複数列選択してまとめて字下げさせるのはどうすんの?
選択してTab押したら消えた。
0226デフォルトの名無しさん2005/09/26(月) 13:39:38
>>225
Shift+Ctrl+I で字下げ
Shift+Ctrl+U で地上げ
0227デフォルトの名無しさん2005/09/26(月) 21:53:17
>>225
http://homepage1.nifty.com/fuu/software/nonfreecursor.htm
フリーカーソル無効化&Tab/Shift+Tabで字上げ/字下げIDEコンポ
0228デフォルトの名無しさん2005/09/28(水) 23:50:14
http://pc8.2ch.net/test/read.cgi/tech/1124614110/l50
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
0229デフォルトの名無しさん2005/09/29(木) 17:16:33
ボタンを5つくらい並べて、どれをクリックされても

Edit1->Text = (押されたボタン->Caption);

って動作がしたいんだけど、上手くまとめる方法はないですかねえ?
0230デフォルトの名無しさん2005/09/29(木) 17:23:09
Button2->OnClick = Button1->OnClick;
0231デフォルトの名無しさん2005/09/29(木) 17:26:30
winアプリについてなんですが、エディットの背景色ってかえられないんですか?
0232デフォルトの名無しさん2005/09/29(木) 17:35:01
>>230
例えばボタンが100個に変更されても、
200個に変更されても、ソースの修正点が少なくてすむような、
そんなまとめかたをしたいのです。
0233デフォルトの名無しさん2005/09/29(木) 17:43:20
>>229
別に複数のコンポーネントが1つのイベントハンドラを共有していても問題ないが。
押されたボタンのキャプションはSenderから取得できる。
0234デフォルトの名無しさん2005/09/29(木) 17:45:12
>>232
動的にボタンを生成するという意味ならループまわして>>230が一番簡単だよ。
0235デフォルトの名無しさん2005/09/29(木) 17:56:27
>>233のSenderから取得する方法詳しくおねがいします。

>>231 プロパティのColorじゃだめなの?
0236デフォルトの名無しさん2005/09/29(木) 17:59:07
if ( TButton* bttn = dynamic_cast<TButton*>( Sender ) )
 Edit1->Text = bttn->Caption;
0237デフォルトの名無しさん2005/09/29(木) 18:10:59
>>236
これがしたかったんです!
ありがとうございました。

…っていっても、文見てもどんな動作してるのか分からないので、
もうちょっと検索してみます。
0238デフォルトの名無しさん2005/09/30(金) 00:05:23
関数をどのフォームからでも呼べるようなグローバル関数にするにはどうすれば良いのでしょうか。
0239デフォルトの名無しさん2005/09/30(金) 00:16:32
>>238
DLLにすれば?
0240デフォルトの名無しさん2005/09/30(金) 00:30:53
>>239
アホ

>>237
まずユニットのヘッダのClass{ }の外側に

extern "C" void a(int b);

みたいに宣言する。

でその関数の実体をユニットのソースに

void a(int b){

・・・

}

みたいに書く。これでOK。
0241デフォルトの名無しさん2005/09/30(金) 00:55:32
>>238
素直にヘッダファイル使え
02422402005/09/30(金) 00:56:30
書き忘れた。
その関数を呼び出すフォームで #includ "Unit〜.h" みたいにインクルードしてから呼ぶべし。  
0243デフォルトの名無しさん2005/09/30(金) 01:17:58
ただグローバル関数にしたいってだけなんだから、extern "C"はイランだろ。勘違いするぞ。
0244デフォルトの名無しさん2005/09/30(金) 01:44:37
//ヘッダファイル hoge.h
#ifndef HOGE_H
#define HOGE_H
#pragma link "hoge"

int hoge( void ); //関数の宣言

#endif


//ソースファイル hoge.cpp
int hoge( void ) //関数の定義
{
 return 0;
}

そしてhoge()を使用したいフォームのソースに #include "hoge.h"を追加



…回答するやつにも超初心者がちらほらするこのスレ。
0245デフォルトの名無しさん2005/09/30(金) 05:57:21
たしかに
0246デフォルトの名無しさん2005/09/30(金) 07:08:14
>>244
一体そのヘッダでどんな関数が書けるのかな、1+1とかかな。ネタだよな。
0247デフォルトの名無しさん2005/09/30(金) 08:17:10
>>244で正解
ただしhoge.cppをプロジェクトに追加するか、
事前にhoge.cppのみコンパイルしておくか。

後者の場合プロジェクトに追加する必要はないが
リンカにパスが通ってる必要はある。
pragma指令にパスを含めるのでもヲケ。
0248デフォルトの名無しさん 2005/09/30(金) 09:45:43
win32 api を使い シリアルポート(RS-232C)の送信受信をやりたいのですが
どうもうまくいきません、この手の参考書も少なく困っています
何か良い参考書またはプログラムの見本の様な物が掲載されている
サイトがありましたらご教授御願いします。
0249デフォルトの名無しさん2005/09/30(金) 09:54:06
>>248
http://www.tt.rim.or.jp/~rudyard/torii009.html

こことかどうよ?
0250デフォルトの名無しさん2005/09/30(金) 09:58:39
>>247
プロジェクトの追加はあまりよろしくない。
この場合だとhoge.cppが絶対パスでプロジェクトに追加されるっぽい。
もしエディタ等で作成したソースをプロジェクトに組み込みたい場合は
ユニットの新規作成をして、ファイル名を追加したいものと同じにする。
んで、ファイルを上書きすればおk。
0251デフォルトの名無しさん2005/09/30(金) 10:13:17
>>249
間違いを指摘するのはいいことだ。
だがここは”くだすれ”だから回答もしようジャマイカ

>>248
ttp://www.moriq.com/delphi/CommX106.lzh
これでも使っとけ
0252デフォルトの名無しさん 2005/09/30(金) 22:28:24
>>251
ご「教授」ありがとう御座います
何とか出来間に合いそうです感謝しています
0253デフォルトの名無しさん2005/10/02(日) 07:58:37
質問です。
ServerSocketなどでマルチスレッドを使う場合、
グローバル変数の競合が発生するらしく、
TThreadListを使うと書いてあったのですが、これはあるスレッドで、

TList *pList = MyThreadList->LockList();

とすると、他のスレッドでは、
MyThreadList->UnlockList();
としない限り、
TList *pList = MyThreadList->LockList();
の*pListは無効ということですか?
0254デフォルトの名無しさん2005/10/02(日) 11:02:59
複数のスレッドで、同時に一つの変数の値を変更したら、不整合が生じるから、
そのようなことがないようにロックされているときは、アンロックされるまで待つんでしょ。
他のスレッドで変更して良いのか?ロックしたスレッドがアンロックしなければ意味がないと思うが?

セマフォとかも勉強したら良いんじゃね?
0255デフォルトの名無しさん2005/10/02(日) 12:00:13
セマフォ
ミューテックス

デッドロック
0256デフォルトの名無しさん2005/10/02(日) 17:32:51
>>254
ありがとうございます。
TThreadListは初めて使うので、使い方を確認したかったのです。
スレッド1でロックしてあると、
スレッド2で TList *pList = MyThreadList->LockList(); としても、
正しいポインタは帰ってこないのかなと。
0257デフォルトの名無しさん2005/10/03(月) 06:50:38
リッチエディットでTEitのように切り取りや貼り付けのある普通の右クリックメニューを出すにはどうすれば良いのですか。
0258デフォルトの名無しさん2005/10/03(月) 07:29:16
TPopupMenu
0259デフォルトの名無しさん2005/10/03(月) 11:40:14
TOpenDialogでファイルではなくフォルダを選択させるにはどうしたら良いのでしょうか?
それともTOpenDialog以外を使わなければいけないのですか?
0260デフォルトの名無しさん2005/10/03(月) 11:43:38
>>259
SelectDirectory ちゅう関数でフォルダ選択ダイアログだせるよ
0261デフォルトの名無しさん2005/10/03(月) 11:57:17
>>260
ありがとうございます。できました。
0262デフォルトの名無しさん2005/10/03(月) 15:21:07
それってデフォフォルダを指定したらそこから上の階層に移動できなかったよね
0263デフォルトの名無しさん2005/10/04(火) 17:00:33
継承元ってどうやって呼ぶんだ
0264デフォルトの名無しさん2005/10/04(火) 17:04:20
ParentClassName::Method();
0265デフォルトの名無しさん2005/10/04(火) 17:14:15
>>264
�dクス
sparみたいなのってないのか?
0266デフォルトの名無しさん2005/10/04(火) 19:29:22
   ハハハ
   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ^∀^)<  spar
  ( つ ⊂ ) \_________
   .)  ) )
  (__)_)     (^∀^)ゲラゲラ superダロ
0267デフォルトの名無しさん2005/10/05(水) 10:39:55
>>265
こんな感じでどうよ?
http://2ch2.net/.l?=3wel
0268デフォルトの名無しさん2005/10/05(水) 20:50:02
>>265
http://www.hawaiians.co.jp/
こんなのは?
0269デフォルトの名無しさん2005/10/06(木) 14:34:05
TRegistryで質問ですが
reg->WriteBool( "aaaa", true );
で書き込んだキーをDeleteKeyするとエラーになって消せません
reg->DeleteKey( "aaaa" );
どうすれば消せるようになりますか?
0270デフォルトの名無しさん2005/10/06(木) 14:44:26
>>269
それDeleteKeyじゃなくてDeleteValueじゃね?
0271デフォルトの名無しさん2005/10/06(木) 15:51:57
>>270
あ、そっちでしたか。試してみます
0272デフォルトの名無しさん2005/10/07(金) 00:16:04
アプリケーションの終了はメインフォームをClose();させるだけでいいんでしょうか。
確実に解放するEnd関数みたいなのは無いんでしょうか。
0273デフォルトの名無しさん2005/10/07(金) 00:26:40
意図したとおりに動けば、メインフォームのCloseで確実に解放されますよ。
0274デフォルトの名無しさん2005/10/11(火) 01:42:10
TApplication::Terminate
■ このスレッドは過去ログ倉庫に格納されています