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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0140デフォルトの名無しさんNGNG
それやるとexe膨らみまくるから少数派だろう
0141デフォルトの名無しさんNGNG
>>140
HDDも無駄に大容量化してるし、ブロードバンドも普及し、
リムーバブルなメディアも数百円程度の時代にコンパクトな実行ファイルなんて
なんの意味があるの?
0142デフォルトの名無しさんNGNG
でも普通VCL使うよね。
TListとかTStringListとかAnsiStringとかあるし。
0143デフォルトの名無しさんNGNG
>>141
禿同
組み込みならいざ知らず、PC向けのアプリケーションなら
実行速度に問題がなければサイズなんて何の意味もない
0144デフォルトの名無しさんNGNG
AnsiString使わないでstd::string使ってるの?
VCLに渡す時に一次オブジェクト生成するから時間かかっちゃうよ?
0145デフォルトの名無しさんNGNG
>>144
情報源は?VCLのソースのどの部分みて言ってんの?
生兵法は怪我の元やで、しかし!
0146デフォルトの名無しさんNGNG
>145
AnsiStringのソースはdstring.cppだけど、
そんなもの見なくてもstd::string->const char*->AnsiStringの変換が必要になるから、
AnsiStringの一時オブジェクトが生成されるのは分かるよね?
0147デフォルトの名無しさんNGNG
それと、const char*にはAnsiStringと違って長さ情報が無いから、
LStrFromPCharを呼んでるよね。これも余計な時間がかかる原因。
0148デフォルトの名無しさんNGNG
その程度の事ならなんでも無いよ。
そもそもRAD自体が富豪的プログラミングの典型だからね。
速いプログラムが書きたければBCBなんて使うべきでは無いよ。
0149デフォルトの名無しさんNGNG
STL自体が富豪的プログラミングだしな。
テカプレートだから型ごとにコードが膨らんでくし。
0150デフォルトの名無しさんNGNG
オブジェクト指向自体が富豪的プログラミングだしな。
0151デフォルトの名無しさんNGNG
高級言語自体が富豪的プログラミングだしな。
0152デフォルトの名無しさんNGNG
>>1-1000
nasmでも使ってろよ
0153デフォルトの名無しさんNGNG
Windows自体がそうじゃん。
そんなに気になるならVRAMに直接書き込めばイイ
0154デフォルトの名無しさんNGNG
>>153
はぁ、?VRAM?
なに言ってんの、このボンクラは?
0155デフォルトの名無しさんNGNG
ぶっちゃけ、仕事でC++Builder使ってる人いる?
漏れの職場はほぼVC++、漏れも最初は抵抗あったが
慣れてくるとBCBのポトペタ環境なんてどうでもよくなった。
0156デフォルトの名無しさんNGNG
BuilderMLから会社ドメインのメルアドの人検索すれば分かるよ
0157デフォルトの名無しさんNGNG
>>155
会社ドメインのメルアドでBuilderMLにメールを出すことと
仕事でC++Builderを使うことにどんな因果関係があるの?
0158デフォルトの名無しさんNGNG
>>157
大抵質問内容が業務用アプリに関することが多いんじゃない?
〜というものを開発しているのですが・・・とか
0159デフォルトの名無しさんNGNG
>>155
ノシ
0160デフォルトの名無しさんNGNG
>>139
俺もそうだよ。少数派の一人かもしれんが。
組み込み用の処理を、Builderで書いたテスト環境に
放り込むとかよくやるんでね。


>>105
シフト、コントロール両キーを押したままBuilder起動で
スプラッシュが変わるよ。

Builder5では某ジラの絵(数種類あり)になって
おまけに鳴き声まで出るので、最初偶然見たときはPCが
病原菌に感染したかと焦ったな。
0161デフォルトの名無しさんNGNG
>>160
BCB5の某ジラは見たことあるが
BCB6は見たことないなぁ。
ちなみにShift+Ctrlでは出なかった。>BCB6
0162デフォルトの名無しさんNGNG
>>162
スマソ。BCB6ではShift+Ctrl+Alt起動だったかな?
6は手元にないのでうろ覚え。
0163デフォルトの名無しさんNGNG
>>162
あー、ごめん。BCB6もShift+Ctrlでヲケだ。
オレの押すタイミングが悪かっただけだ。
スマン。

あと、BCB6でもバージョン情報で
 alt+"gungla"
も生きてる模様。
0164デフォルトの名無しさんNGNG
現在、ソフトウェアキーボードを作ろうとしているのですが、BCB6でボタンを押されても
キーボードのウィンドウにフォーカスを移すことなく、入力イベントだけ受け取るようなプ
ログラムは可能なのでしょうか?
0165デフォルトの名無しさんNGNG
キーフックですかね
0166デフォルトの名無しさんNGNG
キーフックに不可能は無いが、工数かかりまくりになりやすい。

コンポーネントを派生とか組み合わせてキーボードコンポーネントを自作するのがデフォでしょ。
0167デフォルトの名無しさんNGNG
MouseActivateとかその辺の返り値をいじくったらよかったのかな。
ボタンを配置しなくてFormのCanvasにキー描画しないといけないぽいけど。
Win標準のソフトウェアキーボードってそうなってんのかな?
0168デフォルトの名無しさんNGNG
ここ↓のソースコピペしても普通に二重起動できてしまいます。
どうしたらいいですか?
ttp://www.geocities.co.jp/SiliconValley/4805/bcbtips/bcbtips002.htm
0169デフォルトの名無しさんNGNG
>>168
WINAPIのヘルプ見るとわかるけど、CreateMutexやOpenMutexに使う文字列に円マークは使えない。
Application->ExeName.c_str() を適当な文字列(ユニークな)に変更すればうまくいくと思う。
0170デフォルトの名無しさんNGNG
なんだそのショボイ間違ったtipsを公開してるサイトは?
0171デフォルトの名無しさんNGNG
まぁプログラミングしてるとサンプルソースが間違ってたり、ヘルプが変だったりするから慣れっこだな(´・ω・`)
0172デフォルトの名無しさんNGNG
そこの二重起動防止ヤバすぎ。
ReleaseMutexは普通はしないし(アプリ終了時に勝手に開放される)、
OpenMutexせずに直接CreateMutexで確かめるのが普通。
そうしないとタイミングによっては二重起動しちゃうから。
0173デフォルトの名無しさんNGNG
まあ金払わせるようなTipsサイトよりはマシ。
0174デフォルトの名無しさんNGNG
二重起動防止は、 ttp://www.kobira.co.jp/sakura/d_system.htm の TMainInstance を使うべき。

画面に貼るだけで良いし、
2度目の起動を止めるだけでなくさらに既に起動しているプログラムをアクティブにしてくれる。
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
すまん
■ このスレッドは過去ログ倉庫に格納されています