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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0102デフォルトの名無しさんNGNG
ilink32 v5.66 にしても相変わらずインクリメンタルリンカでエラーがです。
0103376NGNG
じゃ、Borland にレポートしろ。
エラーです。だけじゃ誰も何も言えん。
0104デフォルトの名無しさんNGNG
CBuilder の ML で小躍りしていたバカがいたが、あいつの抱えていたバグはなおったんかいな。
0105デフォルトの名無しさんNGNG
BCB6にイースターエッグってあるの?
0106デフォルトの名無しさんNGNG
>>105
バージョン情報のダイアログには仕掛けがある
0107デフォルトの名無しさんNGNG
ビルド中(おそらくリンク中)にBCB6自体が応答なしになることが
頻繁に怒るのですけど、解消する方法とか知りませんか?
0108デフォルトの名無しさんNGNG
>>107
リセットボタン
0109デフォルトの名無しさんNGNG
つか、CBuilder の ML ってばかばっかw
0110デフォルトの名無しさんNGNG
>>109
お前はさぞ利口なんだろうな

おっと、利口なやつは2ちゃんねるなんかに来ないか 失敬
0111デフォルトの名無しさんNGNG
C++BuilderXに入っているilink.jpnをC++Builderのbinフォルダに放り込むと、
ilink.exeを5.66にしてもエラーメッセージが日本語になる、ってガイシュツ?
0112デフォルトの名無しさんNGNG
TStringGridでControl-Cが押されたのを捕まえたいのですが、
どんなメッセージをキャッチすればいいのですか?
0113デフォルトの名無しさんNGNG
5年前はC++BuilderMLの流量が1日20〜40通。
現在は1日平均3通くらい
BCBの廃れ具合が良く分かりますね。
0114デフォルトの名無しさんNGNG
ほとんど過去ログで済むからじゃねーの?
0115デフォルトの名無しさんNGNG
あれ、BCBMLって移転した?
登録してあるはずなのにぜんぜんメール来ないぞw
0116デフォルトの名無しさんNGNG
でも、本当なんでだろう?
BCBとVC++比べたら圧倒的にBCBの方が楽なのに
なんでVC++がメジャーなのかな???
商用として耐えうるデバイスドライバなんて書いてる人なんて極少数
じゃないの?
0117デフォルトの名無しさんNGNG
AutoCADが操作性クソなのに業界標準みたいなもんかなぁ
0118デフォルトの名無しさんNGNG
作るのは楽かもしれないけど,ソース読むのは苦痛だなぁ。
.cppファイルだけみても,どこから呼ばれるのか分からなくて
慣れるまで苦労したよ。

C++知らないやつが書いたソースだとさらに最悪。
なんで全てグローバル変数にするのかと小一時間・・・

0119デフォルトの名無しさんNGNG
>>118
>.cppファイルだけみても,どこから呼ばれるのか分からなくて
>慣れるまで苦労したよ。
それはVCLを理解してないから。

>C++知らないやつが書いたソースだとさらに最悪。
>なんで全てグローバル変数にするのかと小一時間・・・
それはBCBの問題じゃない。

ただし「COBOLer にいきなりC++やらせるな」と
言いたいなら、激しく同意。
0120デフォルトの名無しさんNGNG
漏れもそうだが、BCB使ってる奴ってVC++に挫折した奴が
多くない?
0121デフォルトの名無しさんNGNG
>>119
イベントハンドラが,.cppでなくて,フォームの中に記述してあるじゃないですか。
.cppと.hppだけを,エディタ(emacs)で追いたいわけなんです。
IDEのエディタも,書くときは . か -> を入力したとたんに使用できるメソッドが
表示されて,書く人には楽でしょうけど,読むにはタグジャンプもなくてつらくて。

(以下愚痴)
今改造させられてるソースが,すべてグローバル変数 & 関数が全て
void hoge(void) の形式なんです。
原作者はCOLOLerでなく,C経験者なんですけどね( ´Д`)
0122デフォルトの名無しさんNGNG
>119
イベントハンドラが,.cppでなくて,フォームの中に記述してあるじゃないですか。
↑意味不明なのですが・・・
0123デフォルトの名無しさんNGNG
すんません,
イベントハンドラの『定義』です

0124デフォルトの名無しさんNGNG
>>120
VC++知らずにいきなりBCBなんだが…
だめ?
0125デフォルトの名無しさんNGNG
>>124
別にだめじゃないけど・・・
試しにVC++やってみなよ。
10秒で挫折すること必至!w
0126119NGNG
>>125
そう?
漏れは,VC++のSDKのソースの方が理解しやすいな・・・
ハード屋なんで,中身が見えないとなんか不安で。

0127デフォルトの名無しさんNGNG
まちがい,118です
0128デフォルトの名無しさんNGNG
SDK、はぁ?
SDKならBCBでも同じじゃん
VC++の難しさはappウィザードが吐き出す大量のコードと
doc/viewアーキテクチャだと思うよ
0129デフォルトの名無しさんNGNG
そうなんだ
漏れ,ドライバしか扱ったことないからわからんかった

0130デフォルトの名無しさんNGNG
doc/viewアーキテクチャが分からなかったら
Strutsなんて使えないだろうな。MVCだし。
0131デフォルトの名無しさんNGNG
理解しようとするから挫折するんだよ
MFCのDoc/Viewを読み解くには
C++に相当精通した上で、ソフトウェア工学についての知識も
必要になるのでまず無理です。
ほとんどの人、俺もそうだがあまり深く考えずに”こういうもんだ”と
おもっていれば問題ないことが多いよ
0132デフォルトの名無しさんNGNG
ここはBuilderスレです。
BCBではTMainFormのpublicに変数全部置いておけばOK。
0133デフォルトの名無しさんNGNG
>>132
スマソ,話そらしてしまって。
逝ってくる。

0134デフォルトの名無しさんNGNG
>>132
BCBの場合、良くも悪くもそれで問題ないことが多いですねw
0135デフォルトの名無しさんNGNG
Document/Viewなんてとっくの昔にオプション選択できるようになったじゃん。
あれをわざわざ苦しみながら使う必要なんて、もうないんだよ。
0136デフォルトの名無しさんNGNG
>>121
読む時は Grep & Doxygen。
0137デフォルトの名無しさんNGNG
Cの文法がある程度解っていれば、とりあえず動くモノは作れるな

ヘタに素人に作らせると、メンテで泣くことになるかもしれんが
0138デフォルトの名無しさんNGNG
>120
ノ

VCも勉強しようとは思っているが
使い慣れたCで、簡単にとりあえず動く物を作れるのはうれしい。

弱点はBCB自体がちょっと不安定な所か。
0139デフォルトの名無しさんNGNG
entityは標準ライブラリでガシガシ書いて
BCBでUIをポトリペタリ作るってのは少数派なのかな?
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
使わないで出来れば良いんですが、使わざるを得ないもので、トホホ・・・
■ このスレッドは過去ログ倉庫に格納されています