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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0175デフォルトの名無しさんNGNG
>>169
ありゃ、そうなんですか、有難うございます。
0176デフォルトの名無しさんNGNG
質問です。

C++BuilderのPersonal版を買おうかな?と思っていますが、
このPersonal版では、TCP/IP関連のコンポーネントは利用できるのでしょうか?

なんでも、TServerSocket,TClientSocket などがあるようなのですが……。
0177デフォルトの名無しさんNGNG
メインアイテムにスプリット入れるのはどうやるんですか?
0178デフォルトの名無しさんNGNG
↑メニューアイテムの間違いです。
0179デフォルトの名無しさんNGNG
>>177
Captionを「-」にする
0180デフォルトの名無しさんNGNG
C++ のプログラム作ったんだけど、実行して最後まで行くと
DOS窓ごと終了してしまうのってなんとかならない?
エクスプローラーからの起動ならDOS窓残ってくれるんだけど。
0181180NGNG
X エクスプローラーからの起動
O DOSからの起動
0182デフォルトの名無しさんNGNG
>>180
とりあえずプログラム終了時にDOS窓ごと消えるのはしょうがないと思う
なので、プログラム終了前にキー入力待ちにすれば?
0183デフォルトの名無しさんNGNG
>180
DOS窓から実行する
0184180NGNG
>>182
getch() で待てせて見まふ

>>183
(;´Д`)
0185リア工NGNG
↓これだとMessageDlgが出る時にSaveDialogが閉じてしまいます。どこを変えればいいですか?
 
 if(SaveDialog1->Execute()){
   if (FileExists(SaveDialog1->FileName)){
     if(MessageDlg("同じファイル名が存在します。\n上書きしますか?",
      mtConfirmation,TMsgDlgButtons() << mbYes << mbCancel, 0) == mrYes){
      Memo1->Lines->SaveToFile(SaveDialog1->FileName);
     }
   }
   else{
      Memo1->Lines->SaveToFile(SaveDialog1->FileName);
   }
 }
0186デフォルトの名無しさんNGNG
そらExecuteが終わった時点で閉じてるからな。
上書き確認したいなら、SaveDialog1->OptionsのofOverwritePromptをtrueにしておけばいい。
0187リア工NGNG
>>186
解決しました。ありがとうございました
0188デフォルトの名無しさんNGNG
はじめてのC++を買ったんですけど、
はじめてのC++のソースサンプルを
C++Builderでコンパイル&実行したいんです。
どうすれば出来ますか?
0189リア工NGNG
Memo1の○行目の△列目の文字を指定するのはどうやりますか?
0190デフォルトの名無しさんNGNG
>>188
フォームの真ん中にボタンを貼り付ける。
そのボタンをダブルクリックするとUnit1.cppに飛ぶから
その中に以下の文を書き込んで実行。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->MessageBoxA("氏ね","氏ね",MB_OK);

}
0191デフォルトの名無しさんNGNG
オラ、夏のにおいがしてきたぞ
0192164NGNG
>>165-167
返答ありがとうございます。とりあえずその中で心得があるのはフックだけな
ので、その線で作ってみようと思います。
0193188NGNG
コンパイル&実行は出来た。
DOS窓がすぐ消えて結果が見えない、
作成したexeファイルもすぐ消える
結果を見るためにはどうすればよいのでしょうか?
0194デフォルトの名無しさんNGNG
>>193
>>180から始まるレスを読みなさい。
ってか質問する前にざっと過去ログに目を通しなさい。


>作成したexeファイルもすぐ消える
そら嘘だろ。
0195デフォルトの名無しさんNGNG
誤記、作成したexeファイルを実行しても(ry

>>194さん、ありがとうございます
0196デフォルトの名無しさんNGNG
188さん、純粋にサンプルのコンパイルを試したいのであれば、こっちを落として
使った方が良いかもしれないです。
ttp://www.borland.co.jp/cppbuilder/freecompiler/

「はじめてのC++」は、あくまで言語そのものの解説書で、CUIベースでの
解説なので、C++ Builderでそのまま試すには向いていないと思います。
もし、C++言語の習得だけが目的なのではなく、Builderを使いこなしたい
というのであれば、Builder専用の解説書を買ってくることをお勧めします。
0197デフォルトの名無しさんNGNG
>>196
別にBCB入ってるならわざわざ入れんでも・・
まあ、コンソールベースでの練習ならIDE使わずに直接bcc32.exe叩いた方が早い。
0198デフォルトの名無しさんNGNG

なんとなく、気になったのですが、
VCと比べるとコンパイルが遅いと思うのですが
VC並みに速くコンパイルする方法はあるのでしょうか?

0199デフォルトの名無しさんNGNG
VCLを使わないとか
0200デフォルトの名無しさんNGNG
古いBuilderはコンパイル速いよ。
BCB6はコンパイル遅いよね。
0201デフォルトの名無しさんNGNG
サンクスです。
なるほど、ですね。マシンのせいかもしれませんが、ちょっとソースが増えると
あっという間に5分ぐらい平気でかかってくれますね。(´・ω・`)
作り方に問題があるかもしれません。
>>199
使わないで出来れば良いんですが、使わざるを得ないもので、トホホ・・・
0202デフォルトの名無しさんNGNG
ちょっとソース増えて5分は異常すぎやしないかい
0203デフォルトの名無しさんNGNG
includeし過ぎじゃないかな。
includeは一旦展開されるみたい。
それとか、ActiveXの取り込みヘッダーなんかに巨大なものがあったり。

コンパイル状況表示させて何万行に展開されるか行数見てみたら?
メモリを増やすと良いかも。
0204デフォルトの名無しさんNGNG
> ActiveXの取り込みヘッダーなんかに巨大なものがあったり

取り込みにえらい時間かかるなぁと思ったら、18MBぐらいのヘッダが出来てた事あってビビッタ。
0205デフォルトの名無しさんNGNG
依存関係減らせよ。クラスの先行宣言ですむ所でincludeしたりしてないか?
プリコンパイルヘッダはちゃんと有効活用してるか?
STLとかboostとか不変のActiveXのヘッダとかはちゃんとプリコンパイルヘッダに入るようにしろよ。
それとpimplとかちゃんと使えよ。
0206デフォルトの名無しさんNGNG
ラジオグループの中の特定のラジオボタンだけEnable=faultにするにはどうしますか?
0207デフォルトの名無しさんNGNG
RadioGroup1->Controls[0]->Enabled = false;
0208デフォルトの名無しさんNGNG
プリコンパイルヘッダにいれるってどうすればいいの?
0209デフォルトの名無しさんNGNG
気合いで
0210デフォルトの名無しさんNGNG
AnsiString str;に整数が入ってるかどうか判定するのはどうやりますか?
0211デフォルトの名無しさんNGNG
StrToInt
TryStrToInt
0212デフォルトの名無しさんNGNG
ToIntしてみてEConvertError吐かなかったら整数
0213デフォルトの名無しさんNGNG
文字コードを一つ一つ
0214デフォルトの名無しさんNGNG
>>208
>>209は馬鹿ですw
#pragma hdrstop
より、上にincludeを書けばOKですよ
0215デフォルトの名無しさんNGNG
補足すると
#hdrstopより上は、全ソースで同じにしないと複数回プリコンパイルヘッダが作成されてしまい遅い。
プロジェクトソースも忘れずに…。
0216デフォルトの名無しさんNGNG
質問です。

知り合いの息子がCを覚えたいというのでCBuilderを勧めてあげようと思うのですが
おすすめの書籍ってどんな感じでしょ?

しばらくはCのお勉強なので、CBuilderに関してはエディット、コンパイル、ランとごく簡単な
コンポーネントの使い方が判ればいいのですが。

C言語のテキストは 「はじめてのC」を考えています。
CBuilder本は C++Builder 6コンポーネント活用ガイド&実践プログラミングVol.2 でOKですか?
そのほかにお薦めがあればお願いします。

学生なので出来れば各1冊で当分使える本が希望です。
0217デフォルトの名無しさんNGNG
>>216
単にCの勉強だけしたいならBCC5.5.1なりVCTk2003なりのコンパイラだけあれば十分な気が‥‥
BCBはDel互換こ関係で独自の方言や縛りも結構あるし。
0218デフォルトの名無しさんNGNG
コンパイラだけあっても、初心者には無意味だろ?
初心者には実行形式がないときついと思うが・・・
0219216NGNG
>>217
BCCってWindowsからDOSのアプリ作れるんでしたっけ?

OWLでソフト作りしていたことはあるのですが、当然Windowsでしたし。
Windowsの環境から void main( void ) {} から走るソフトが作れるならそれが
当然一番よいのですが。でもそうするとDOS窓で実行結果を見るのか。。。
DOSアプリでなければOWLとかMFCとかが必須ですよね?それは絶対無理ほ

DOSの環境でエディット・コンパイルなどという苦行は勧められないし。。。

217さんがおっしゃったのはどんなイメージです?
0220デフォルトの名無しさんNGNG
こりゃびっくりするほどユートピアだな
0221デフォルトの名無しさんNGNG
DOSで動作するプログラムはBCCでは作れません。
0222デフォルトの名無しさんNGNG
では初心者にOWLから入れと ((;°Д°))アワワワワ
0223デフォルトの名無しさんNGNG
>>219
DOSじゃなくてWin32コンソールアプリなら作れる。というかスイッチ付けないとコンソールアプリとしてビルドする。
ちなみにBCBでもDOSアプリは作れない。ちなみに現行バージョンにはOWLは付いてこない。

WindowsのGUIアプリまで作りたいならBCBのほうがいいとは思うが。


勘違いしてる可能性があるので行っておくがBCC5.5.1はC++Builder5のコンパイラ+周辺ツール。
当然Win32環境専用
コマンドプロンプトをフルスクリーンで動かすようなことをしない限り普通にWindowsのエディタで編集できるし
コンパイルなんてbcc32 source0.cpp source1.cppでいいわけだし
0224デフォルトの名無しさんNGNG
やるんであれば、DOSアプリっていうか、
Windowsのコマンドプロンプト上で動作する
コンソールアプリならmainから始まるプログラムが作れる。
けど、その場合BCBは大してお勧めではない。
フリーのコンパイラで十分じゃないかな。
ぶっちゃけると、Cからプログラミングを始めるのも、
今の状況ではどうかと思う。

ついでに言うとOWLやMFCを使わなくてもWindowsアプリは
作れる。大変だけど。
0225デフォルトの名無しさんNGNG
>>224
>ついでに言うとOWLやMFCを使わなくてもWindowsアプリは
>作れる。大変だけど。
サンプルプログラムを動かして、自己満足する程度しかできません。

市販ソフトやネット上でも有名なソフトと張り合おうとすると
MFC,OWL,ATL等のクラスライブラリを使いこなさないとまず、無理
0226デフォルトの名無しさんNGNG
>>224-225
んなもん、これからCを覚えようとかそういうレベルで心配するこっちゃ無いだろ…
ライブラリにしたって、買わなきゃいけないわけでもなくて、wxその他フリーのもあるし
やってみて、こりゃ手に負えないとなってから、財布と相談しても遅くないだろ

つーわけで、今の段階で気にしなくていいと思われ。
本人が必要と感じたらその時本人が「買って欲しい」って言うでしょ
0227デフォルトの名無しさんNGNG
C++ BuilderでWindowsアプリ作るのが目標なら、
CよりC++から入った方がいいんじゃない?
0228デフォルトの名無しさんNGNG
何にも知らん初心者がいきなりC++は無謀だろ。
生活かかってるならまだしも、お遊び程度なら、間違いなく挫折する。
0229デフォルトの名無しさんNGNG
win32コンソールならBuilderX無償版もありますよ
0230デフォルトの名無しさんNGNG
>>228
そうかぁ〜?
C++言語自体はたいした事ないよ。1週間あれば余裕
0231デフォルトの名無しさんNGNG
>>230
プログラミング未経験者だとまず無理かと
条件分岐すら知らないわけだし
0232デフォルトの名無しさんNGNG
BCBは入門に適してると思うけどナ。
0233デフォルトの名無しさんNGNG
>>232
禿同
ショボイのしか作れないもんねw
0234デフォルトの名無しさんNGNG
お手本通り作れることと(それすら出来ないヤシもいるが)
独創的なものを作れることは全くの別能力である。
だからと言って基本はおろそかにしてはいけない。
0235デフォルトの名無しさんNGNG
>>230
ポインタやクラスで躓く気がするけどな。

関係ないけど、FORTRAN77しか使えないオサーンにC言語を教えたけど、
構造体の配列より普通の配列を複数用意した方が楽らしい・・・。
0236デフォルトの名無しさんNGNG
コンソールなら BCC+BCPadがいいんじゃない?
私はこれでコンソールの勉強させました。
0237216NGNG
みなさん、レスありがとです。

彼に勉強させようと思っているのは、計算機のごくごく基本的なことです。
2進数から始まり、構造体、配列、ポインタ、ソート、検索、リスト、木などを
しっかりモノにしてもらいたいと思っています。まだまだこれから先のある奴なんで。。

ですのでWindowsアプリである必要はありません。環境を含めた(初心者にとっての)使い
勝手としてBCBがよいのでは、、、と考えていました。

だけどWin32コンソールがよさげですね。その方向で検討してみます。

ところでCのテキストは「はじめてのC」でOK?
0238デフォルトの名無しさんNGNG
>>216
計算機の基本を教えるなら
二進数の次はアセンブラだろ?
0239デフォルトの名無しさんNGNG
>>216
じゃなかった
>>237
すまん
0240デフォルトの名無しさんNGNG
>>238
アセンブラ教えるには計算機のシステムについて勉強しないといけないだろ・・。
レジスタとかアキュムレータとか
0241デフォルトの名無しさんNGNG
これらのエラーはどう対処したら良いでつか?

コンパイル
[C++ エラー] oleidl.h(185): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] oleidl.h(185): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] servprov.h(59): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] servprov.h(59): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] msxml.h(280): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] msxml.h(280): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] urlmon.h(254): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] urlmon.h(254): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] propidl.h(78): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] propidl.h(78): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] objsafe.h(59): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] objsafe.h(59): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] ocidl.h(293): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
[C++ エラー] ocidl.h(293): E2015 'size_t' と 'Httpd::size_t' の区別が曖昧
0242デフォルトの名無しさんNGNG
普通ならnamespaceを明示するところだけれども、ヘッダの中でエラーは起きているようなので、
とりあえず#includeの順番を変えたりしてみては?
0243デフォルトの名無しさんNGNG
サンクス>>242
ActiveX側をIndyよりも上にしたら直ったっぽいでつ。

C++は好きなんだけどヘッダー問題は苦手。
0244Delphi厨NGNG
C++Builder6の国際化リソースDLL作成で困ってます。フォームがプロジェクトに追加されてくれません。
Builder5やDelphi6ではうまく行くんですが…
どうしたらよいでしょうか?どなたか教えて頂けないでしょうか?
0245デフォルトの名無しさんNGNG
Delphiで作ったソースをリンクしてますが、
TOleControlをnil(NULLポインタ)で初期化して、

if OleControl = nil then
で比較しています。(=が一個なのはpascalだから)

delphiではtrueで動作するのに、BCBではfalseになってしまいます。

TOleControlが空っぽかどうかはどう判定するんでしょうか。
0246デフォルトの名無しさんNGNG
>>245
cpp側で変数をNULLで初期化して、pas側の関数に渡してnilかどうか判定してるということ?
0247デフォルトの名無しさんNGNG
pas内でnil設定してて、pas内でnil判定してます。

Delphiのテストプログラムではtrue判定なのに、
BCBにユニット組み込むとfalse判定になってしまいます。
0248デフォルトの名無しさんNGNG
(・3・) エェーならないYO
0249デフォルトの名無しさんNGNG
TComboBox文字列リスト各々に数値を割り当てるにはどうしたらいいですか?
0250デフォルトの名無しさんNGNG
意味不明
0251デフォルトの名無しさんNGNG
ComboBox->Items->Objects[0] = reinterpret_cast<TObject*>(249);
0252デフォルトの名無しさんNGNG
ComboBox->Items->AddObject(">>249のIQ", reinterpret_cast<TObject*>(3));
0253デフォルトの名無しさんNGNG
>>249
TComboBox::Items->Strings[n]のことかナ?
0254デフォルトの名無しさんNGNG
>>253
それのことです。
ぶっちゃけそのStrings[n]ってAnsiStringだけど、さらにItems->Value[n]みたいにできないかなとVBみたいに
0255デフォルトの名無しさんNGNG
逆レスすまそ
>>250
ほかの人はちゃんと理解してますよはははー
>>251-252
オブジェクトの配列になんかするってことですかあ
0256デフォルトの名無しさんNGNG
痛いな
0257デフォルトの名無しさんNGNG
BuilderX で、GUI だとビルドできたので、hoge.cbx のかわりの
hoge.mak を作らせて、シェルに向かって make -f hoge.mak したら
「make: *** No rule to make target `foo/bar.cc', needed by `solaris/Debug_Build/bar.o'. Stop.」
とか言われます。なんでだ世 (;´Д`)ハァハァ Stop.
0258デフォルトの名無しさんNGNG
>>256
すんんません>>250さん
0259デフォルトの名無しさんNGNG
ちょっと古いんですが、BCB3でSTLPort動いた人いますか?
0260デフォルトの名無しさんNGNG
グループボックス内のコントロールをまとめて選択するのはどうやりますか?
0261デフォルトの名無しさんNGNG
Ctrl+ドラッグ
0262デフォルトの名無しさんNGNG
>>237
「はじめてのC」でもいいと思うけど、
これって説明書チックな書き方だから、完全な初心者だとつまづく可能性がある
気がする。
フォローしてやれる人間がいれば大丈夫だと思うけど。
馬鹿みたいに説明が丁寧な
簡単なプログラムを作ってみる系の本が一冊あってもいいかも。
0263デフォルトの名無しさんNGNG
>>257
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
0264デフォルトの名無しさんNGNG
Borland(R) C++BuilderTM / bcc の不可思議現象
http://magnus.at.infoseek.co.jp/bcbfix/index.shtml

漏れ用メモ
0265デフォルトの名無しさんNGNG
BCB6 パーソナル使いです。

DelphianWorldからコンポーネント(Buider対応のもの)をダウンロードして、追加→コンパイルすると、

[リンカ エラー] 外部シンボル '__fastcall Outline::TCustomOutline::(各種メソッド)' が未解決
((Builderのフォルダ)\LIB\BCBSMP.LIB|.\cdiroutl.cpp が参照)

がぞろぞろ出ます。(上は2行だが実際は1行)
アップデートしても同じです。
どうすれば解決できるでしょうか。
リンカやコンパイラは設定をいじっていません。
0266デフォルトの名無しさんNGNG
>>265
あそこにあるのってほとんどデフォでコンパイルするとエラーでるよな
0267257NGNG
>>263
サンクス子 (っ´∀`)っ�I
0268デフォルトの名無しさんNGNG
>>265
コンパイルしてみるから、コンポーネント名教えてちょうだい
0269デフォルトの名無しさんNGNG
またTipsページみっけ
http://members.at.infoseek.co.jp/mchos/bcb_tips/
0270デフォルトの名無しさんNGNG
Form内に貼り付けたFrameの再描画のタイミングで処理をしたいのですが
FrameにはOnPaintイベントが無くてどうしたらいいのかわかりません.
0271デフォルトの名無しさんNGNG
FrameのサイズにあわせたTPaintBoxを置くとか。
0272デフォルトの名無しさんNGNG
WM_PAINTで処理すればいい
0273270NGNG
>>272
WM_PAINTを捕まえる方法がわからなくて...
0274デフォルトの名無しさんNGNG
MLに変なのが現れた。
■ このスレッドは過去ログ倉庫に格納されています