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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0074デフォルトの名無しさんNGNG
TTreeView::Itemsのヘルプを見ると

> たとえばツリービューの 2 番目の項目にアクセスするには次のようなコードを使います。
> MyTreeNode = TreeView1->Items[1];

と、ありますがコンパイルすると、
[C++ エラー] Unit1.cpp(23): E2034 'TTreeNodes' 型は 'TTreeNode *' 型に変換できない
と、出ます。TreeView1->Items[x]という使い方はできないのでしょうか。
0075デフォルトの名無しさんNGNG
すみません解決しますた。↓でできました。
MyTreeNode = (*TreeView1->Items)[1];
ヘルプのミスかな…
0076デフォルトの名無しさんNGNG
>75
ヘルプ、
MyTreeNode = TreeView1->Items->Item[1];
じゃないのかい?うちのはBCB5だけど。。。

Items(TTreeNodes)とItem(TTreeNode)は違う。
ややこしいけど、前者はノードの塊を指し、
後者は一個一個のノードを指している。
こんなところがバージョンで変わってるとは思えないんだが。

ていうか、>75のソースで期待通りに動くの?
ものすごいことやっちゃってると思うんだけど。
0077デフォルトの名無しさんNGNG
>>74-76
BCB6のヘルプを確認したところ、>>74になってます。
とんでもない誤記ですな。
当然、>>76が正しいのですよ。>74氏
0078デフォルトの名無しさんNGNG
>>76
BCB6 では、>>74 の言っている通りにヘルプには書いてある。
更に BCB6 だと TTreeNodes では演算子 [] がオーバーロードされていて、
Treeview1->Items[1] で TreeNode * が取り出せるようになっている模様。
007978NGNG
う〜ん。>>77 と被ったか。でも言ってる事が違う…。
0080デフォルトの名無しさんNGNG
DelphiからHELPを移植したときのデフォルトに関する扱い
絡みのミスか?
008177NGNG
>>78
TTreeNodes::operator[]( int )があるので
 (*TreeView1->Items)[1];
これが使えると。
でも
 Treeview1->Items[1];
はだめでしょ。
0082デフォルトの名無しさんNGNG
↑でも TTreeNodes::operator[](int)なんてしらんかったよ(w
0083デフォルトの名無しさんNGNG
DelphiはC++みたくメンバ参照でインスタンスとポインタを区別しないからだな。
0084デフォルトの名無しさんNGNG
C++Builder5でIDEのメニューバー「実行」→「実行」を
クリックすると必ずCPUウィンドが出てくるようになってしまいました。
こんなの見てもわからないので出ないようにしたのですが、どうすれば
いいのですか?
0085デフォルトの名無しさんNGNG
>>84
再インスト。
0086デフォルトの名無しさんNGNG
ttp://www.borland.com/products/downloads/download_cbuilder.html

2004/07/13 - C++Builder 6 Linker Update
ilink32 version 5.66

大きなオブジェクトをリンクするときにおきるアクセスバイオレーションを修正。
0087デフォルトの名無しさんNGNG
ショートカットアイコンの右クリック->プロパティで表示されるダイアログボックスを表示する方法を教えてください。
0088デフォルトの名無しさんNGNG
Sleepをコールしようとすると、
Win32APIのものと、IdGlobal.hppのものと2つあります。

namespaceとか使って、Win32APIにリンクしたい場合にはどうしますか?
0089デフォルトの名無しさんNGNG
::Sleep
0090デフォルトの名無しさんNGNG
オォ、コンパイル通りますた>89

::Sleep
^^^^^^^

これって、namespace指定してないように読めるんですが、どうなんでしょ。
0091デフォルトの名無しさんNGNG
>>90
グローバル
0092デフォルトの名無しさんNGNG
Win32 API は namespace を持ちません。
namespace を指定されていない識別子はグローバルな名前空間に格納されます。
 ::Sleep
も形式的には名前空間を指定された識別子です。ただグローバルな名前空間には
名前がありません。
0093デフォルトの名無しさんNGNG
C++Builder8はいつでるの?
0094デフォルトの名無しさんNGNG
出ない>>93




ttp://www.drbob42.com/cbuilder/index.htm
2004/05/13 - C++Builder version 9?
0095デフォルトの名無しさんNGNG
C++Builder6で開発終了ってアナウンスあったじゃん
0096デフォルトの名無しさんNGNG
ilink32 version 5.66の直リンキボンヌ
0097デフォルトの名無しさんNGNG
>>95
ソースは?
009876NGNG
>77-83
勉強になりますた。
0099デフォルトの名無しさんNGNG
>>97
/usr/src/linux
にあると思います
0100デフォルトの名無しさんNGNG
改行が含まれるデータ(例: str="うんこ\nまんこ")を、
改行が反映されるようにMemoに書き加えるにはどうしたらいいですか?

0101デフォルトの名無しさんNGNG
Memo1->Lines->Text = Memo1->Lines->Text + "ヽ( ・∀・)ノウンコー\nウンコーヽ(・∀・ )ノ";
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サイトよりはマシ。
■ このスレッドは過去ログ倉庫に格納されています