トップページ⇒tech
988コメント362KB

C++Builder相談室 Part8

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


<過去スレ>
C++Builder相談室
http://piza2.2ch.net/tech/kako/969/969458279.html
新C++Builder相談室(C++Builder相談室 Part2)
http://pc.2ch.net/tech/kako/997/997074601.html
C Builder相談室 Part3
http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
C++Builder相談室 Part4
http://pc2.2ch.net/tech/kako/1035/10355/1035596146.html
C++Builder相談室 Part5
http://pc2.2ch.net/tech/kako/1045/10455/1045542179.html
C++Builder相談室 Part6
http://pc2.2ch.net/tech/kako/1054/10542/1054280736.html
C++Builder相談室 Part7(前スレ)
http://pc2.2ch.net/test/read.cgi/tech/1061594556/
008374NGNG
むぅ…すみません説明へぼくて…
要はちゃんとエクスプローラみたいにアイテムが並んでくれないというだけです…
コンポはPersonalだと $(BCB)\Examples\ShellControls にあるんですが…
Proで無いってことあるのかな…
とりあえずdelphiのコンポ流用でしのぎます…

0084デフォルトの名無しさんNGNG
>>82
多分、カッコが照応してないか、セミコロンがどっか抜け落ちてるか。
コンパイラがエラーとしている行の直前とは限らないので根気よく探す。
インクルードしているヘッダファイルも確認する必要がある。
008582NGNG
>84
おっしゃる通りでした。
インクルードされているファイルまで目が届いていませんでした。
ありがとうございます。
0086デフォルトの名無しさんNGNG
>>74
エクスプローラは裏でいろいろな処理をしている。
ExamplesにあるShellTreeViewはそこらへんがごっそり無いのでできないだけ。
ShellAPIの使用例に過ぎない。例はあくまで例。
そのまま使おうと考えるほうが間違っている。

かなりバギーではっきりいって使い物にならないので
素直に別のコンポを探すか自分で組みなさい。
0087デフォルトの名無しさんNGNG
>>86
どもです。やっぱ使えないですか…
途中まで作ってはあるのでやっぱりそっちを完成させることにします。
delphiの方のは正常に動くってのが腑に落ちないですが、気にしないことにします。
ありがとうございました。
008873NGNG
>>77
やっぱりないみたいですね・・・
VB だと/run があるので、なにかあると思ったんですが
残念です。
0089デフォルトの名無しさんNGNG
超既出かもしれないんですが、TEditやTScrollbarなどのメンバ(TextやPosition)を
関数にポインタで渡して書き換えることはできないんでしょうか。
前者の場合、Ansistringという良くわからない型のためにchar *に渡せないし、
後者の場合、const int型ということで、&(Scrollbar1->Position)などでアドレス渡ししても
変更は受け付けてくれないみたいです。
なんかソースがだら長くなって遺憾だなあとおもうのですが・・・
なんか良い方法はないでしょうか? C++は初心者ということでお願いします。
0090デフォルトの名無しさんNGNG
BCB5.0でD/A変換ボードを扱うプログラムを作っているのですが
プログラムを実行した時にエラーが発生します。
とりあえず、現在に至った経緯を説明しますと
D/A変換ボードのメーカーさんから提供されている*.libファイルが
VC用だったのでcoff2omf.exeでBCB用に書き換えた後
*.hと*.lib(書き換え済み)をプロジェクトに追加しました。
コンパイルすると「リンクしているエクスポートFBIDA.DLL:_DaClose@4」が
見つかりません」と言うエラーが出たので
[プロジェクトオプション]を適当にいじってみて
[リンカ(詳細)]の[延滞ロード]に*.dllを追加してみたところ
コンパイラとリンカは通ってProject1.exeが出力されました。
しかし、いざToolButtonをクリックすると
「プロジェクトProject1.exeがEExternalException クラスの例外
を生成しました。'外部例外 C0FB007F' プロセスは停止しています。」
というエラーが発生しました。
インターネットで色々調べたのですが原因がわからず
困っています。どなたか詳しい方解決法を教えてくださいm(__)m
0091デフォルトの名無しさんNGNG
>>90
「extern "C"」でくくってみるとか……

extern "C"{
#include "fbida.h"
}
0092デフォルトの名無しさんNGNG
>>89
結論だけ言うとくと無理。
自称初心者相手に理由を説明するのは面倒なので
「何故?」と思ったらC++の勉強をきっちりした上で開発者ガイドを読んでくれ。

なおAnsiStringをchar*にすることは自体は簡単にできる。
これもきちんとヘルプを読むべし。
0093デフォルトの名無しさんNGNG
>90
libファイルの書き換えって、いつもこういうふうにやってますが・・・
impdef *.def *.dll
implib *.lib *.def
0094デフォルトの名無しさんNGNG
ツールボックスっぽいものを作ろうとしているのですが、
タイトルバーが無く、かつウィンドウサイズ変更が可能な
フォームを作るにはどうすれば良いでしょうか?
009594NGNG
ごめん。
Builder MLの過去ログにありました。
http://www2.big.or.jp/~osamu/Delphi/builder-browse.cgi?index=014264
0096デフォルトの名無しさんNGNG
BCB6.0のPersonalでATL/WTLプログラミングってできる?
0097デフォルトの名無しさんNGNG
>>89
型の問題じゃない。プロパティだから。

俺ならTEditやTScrollbarのインスタンスごと渡す。
009889NGNG
>>97
できました。ありがとうございました。
クラスといっても渡し方は構造体とかと一緒なんですね。
0099デフォルトの名無しさんNGNG
>>98
C++において
classとstructの違いはデフォルトが
private:かpublic:かだけです
0100デフォルトの名無しさんNGNG
くだらない質問なんですけど、TFormとかTLabelのTってなんの略ですか?
0101デフォルトの名無しさんNGNG
ていうか、Textプロパティの処理に char* を引数にとる関数を使うなよ。
AnsiStringのメソッド使ったらエエやン。
何のためにVCLいやさBCB使ってるのかと小一時間(ry
0102デフォルトの名無しさんNGNG
>>100
Type
0103デフォルトの名無しさんNGNG
>>100
Typ
0104デフォルトの名無しさんNGNG
>>100
Ty(ry
0105デフォルトの名無しさんNGNG
すいません、CppWebBrowserでURLジャンプ時に起こるイベント、OnNavigateComplete2を使ってます。
で、引数でジャンプ先のURL(Variant *URL)を捕まえてくれるんで、それを利用しようと思ったんですが、

Edit1->Text=*URL;

とかで中身を見ると「\」の文字が全部消えちゃってます…。
*URLをAnsiStringにしてその後の処理に使おうとしたのですが、これでは困りものです。

Variant *URL から「\」の字を失わないでAnsiStringにキャストする良い方法ってないんでしょうか?
0106デフォルトの名無しさんNGNG
>>105
試してみたが、ローカルのファイルパスとUNCどちらの場合も問題はない。
まさかとは思うがURLを渡して「\がない」と言っているわけではないな?
0107105NGNG
>>106
ありがとうございます。UNCってのがよくわかりませんが、
ジャンプ先のURL先というのは、全部ローカルで少し特殊なもので

#C:\Documents and Settings\hoge\デスクトップ\hoge.jpg

というもの。
つまり同一ページに架空のアンカーを貼って、OnNavigateComplete2イベントで
画像のパス情報を受け取ろうとしてるんです。
もっと簡単に言うと「#」後のアンカー名を利用してアプリケーション側に情報(画像のパス)を投げています。

で、イベント発生時に*URLの中身が実際にどういうものになるかというと

file:///C:/Documents%20and%20Settings/hoge/デスクトップ/test.html#C:Documents and Settingshogeデスクトップhoge.jpg

このようなものになります。
「#」(アンカー)から前のパス(〜test.html)は元のページのものです。
同一ページにアンカー貼ると自動的に付加されるようですね。当たり前か。
で、情報として利用したい「#」以後のパスはご覧のとおり\が消えちゃってます…。

最初から「\」を「/」に置換しておいて、イベント発生後にパス名を利用する時に再度逆に置換し直す、
という手続きを経るのが一番簡単な解決でしょうか…。
0108デフォルトの名無しさんNGNG
>>107
アフォ。情報の後出しはするな。
おまえは>>105の発言だけで他人が.>>107の内容を推測できると本気で信じているのか?
もう一度言う、大事な情報を後出しするような質問の仕方は絶対にするな。
どこのスレに行っても嫌われるぞ。
質問内容についてはオレは知らん。自分で勝手に解決しろ。
0109デフォルトの名無しさんNGNG
まあ、あんまり詰め込んで長すぎる質問ってのも読む方にとっちゃ面倒なので
親切心から要点をまとめて質問するってのも良いとは思う。

しかしどの情報を入れて何を抜くかの選択をきちんと判断しないとその親切心が仇になるぞ。
0110107NGNG
>>108
すいません、色々と考えて
「Variant *URL から「\」の字を失わないでAnsiStringにキャストするには」という質問の仕方が
一番問題点を簡潔に集約してると思ったのですが、確かに過程の部分をもう少しちゃんと書き込むべきでした。

>>109
おっしゃる通りです。
初心者板で質問するだけあってなかなかその判断がうまくつかなくて。
精進したいと思います。
0111デフォルトの名無しさんNGNG
>>110
ていうか、自分が初心者だと思うなら、何か妙な動作が起きたときは、
自分が間違ったことをしているのではとまず疑いなさい。
>>105は、自分は間違ってないが、TCppWebBrowserの動作がおかしいという
書き方でしょ?
実際>>107の使い方はおかしい。URLで本来"\"は使わない(IEが強引に解釈
してしまうから話が面倒になるが)。正常に動作しないのは仕方がない。
「自分の使い方はおかしいかも?」と疑う気持ちがあれば、質問するときは
”自分の使い方”をきちんと説明する必要があると自然に判るはず。
ま、これに懲りずにがんがれ。
0112デフォルトの名無しさんNGNG
すいません、TMemoコンポをフォームに配置すると
デフォルトでTMemoの内部に「Memo1」とかの文字が入ってきますが
これってインスペクタで空に出来ないんですか?
0113デフォルトの名無しさんNGNG
>>112
できる。
たのむからこのぐらいはヘルプ読んでくれよ。(;´Д`)ハァ
0114デフォルトの名無しさんNGNG
>>112
まずはクイックスタートガイド読め。
話はそれからだ。
0115デフォルトの名無しさんNGNG
>>112
これを「できない」って思うようじゃ、これから先の開発が大変だろうに…。
がんばれよ。
0116デフォルトの名無しさんNGNG
「どうやったらできますか?」だと回答する気にもなるけど
「できますか?」だと「できる or できない」の一言で済ましたくなるし
「できないんですか?」だと「お前にはな」と書きたくなる。
0117デフォルトの名無しさんNGNG
というわけで、質問する香具師は「人の振り見て我が振りなおせ」ってことだ。
0118デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/tech/1070222674/116-117
0119112NGNG
あ、やっぱりインスペクタから設定出来るんですか。
TextとかCaptionプロパティがインスペクタにないから何でなんだろと思ってたんですが。
オブジェクトインスペクタのどこをいじればいいんでしょうか?
よろしくお願いします。
0120デフォルトの名無しさんNGNG
>>119
ヘルプorクイックスタート読め。
0121デフォルトの名無しさんNGNG
>>119
小学生にはC++は難しいと思うよ。
BASICあたりからがんばってください。
0122デフォルトの名無しさんNGNG
>>119
かわいそうなのでヒント。
ユーザがTMemoにキー入力した場合、お前はその内容をどうやって取得する?
0123 NGNG
>>119
インスペクタのLinesプロパティの・・・をクリックすればできるよ。
0124デフォルトの名無しさんNGNG
>119
Linesプロパティ
しかし、TMemoのヘルプを読まないと、結局使えない。
プロパティ、メソッド辺りを読むこと!
0125デフォルトの名無しさんNGNG
119はこんな低レベルの質問するくらいだからクイックヘルプの存在を知らないとみた。
フォームで調べたいオブジェクトを選択して(この場合はメモ)F1押せ。
0126122NGNG
台無し・・・
0127デフォルトの名無しさんNGNG
どうせネタだろ。
それか相当な莫迦
0128デフォルトの名無しさんNGNG
ラーニングだからついてないんだが
¥6000のBorland C++Builder 6 マニュアルセット(PRO、ENT共通)は買う価値ありますか?
ヘルプはそこそこ読めるレベルなのですけど。
それとも参考書C++Builder 6 コンポーネント活用ガイド&実践プログラミング Vol.1とVol.2
を両方買うのとどちらが良いですか?
プロだと分厚いマニュアルが付属するのですよね。

0129デフォルトの名無しさんNGNG
プロジェクト内のユニットすべての総行数は表示できませんか?
ソースどのくらいと聞かれたときにしょうがないから自分足してます。
コンパイルのときに表示される行数はVCLとか<math.h>を含めた
行数みたいですから自分が書いた文だけ知りたいのですけど。
0130デフォルトの名無しさんNGNG
>>128
マニュアルはことごとくPro版、Ent版のHelpを印刷した「だけ」のもの。
だからラーニング版なら買う価値があるが。

それとC++Builder 6 コンポーネント活用ガイド&実践プログラミング Vol.1とVol.2
だが、現在はVol.3(データベース機能編)も出ている。ラーニング版に
データベース機能がないならVol.1とVol.2だけで良いと思うが、それよ
りもDelphiの参考書の方がいいと思う。俺はVol.1とVol.2を買ったが
極々初心者用の内容だった。Vol.3はDelphiのオフィシャル・コースウェア
と重なる内容だったので買わなかった。
0131デフォルトの名無しさんNGNG
>>130
サンクス!
C++Builder 6の本ばかり探していたので
今度、Delphiの本も見てみます。
0132デフォルトの名無しさんNGNG
Builderの書籍って実践的なプログラミング内容のものってないんですよねぇ。
ページ数はいっぱいで分厚くても操作マニュアルではね・・・
0133112NGNG
>>123
>>124
ありがとうございます、できました!
うっかりしてました。
0134デフォルトの名無しさんNGNG
>>130が書いてるけど、Delphi本を探した方がいいと思う。
C++を書けるならDelphiを読むのは難しいことではないし、
VCLソースを読むためにもDelphiは必須だから読めるように
なっておくとその差は大きい。

逆にDelphiやってる香具師はC++を読めるようになって
おかないと膨大なC++系の資料が使えないんだな。

結局DelでもBCBでも両方読み書きできる人が強い。
0135デフォルトの名無しさんNGNG
C++Builderのエディタってなんであんなに使い勝手悪いの?vi風にして欲しい。
0136デフォルトの名無しさんNGNG
じゃあvi使えばぁ?
0137デフォルトの名無しさんNGNG
ほれ
ttp://hp.vector.co.jp/authors/VA003457/
0138デフォルトの名無しさんNGNG
プログラムのボトルネックになってる部分を
調べる方法って用意されてるんでしょうか?
自力でどうにかしなきゃいけないんでしょうか?
0139デフォルトの名無しさんNGNG
>>138
初心者の俺から言わせると
ボトルネックの意味を正しく使ってるのか聞きたい。
どういう事で聞いてるの?ツールとしてあるかとか?
こういう聞き方をするということは初心者ですか?
そんなシビアなことをやってるとはこの文の表現能力から思えません。
ベストをつくせ

参照渡しとか値渡しの適材適所を知っていれば良いのでは
あとif文の判定が複数の時の順序とかかな。

ブレークポイントで通過回数を調べれば
関数の試用頻度がわかるから多い所を改良。

画像や表示系は時間がかかるのは常識だから
通信系の方は、俺は知らない。

それともfor文で判定につかう変数をいじってるせいで
抜け出せないとか?
0140デフォルトの名無しさんNGNG
>139 あんた馬鹿???
おれは138ではないが、要するにプロファイラーがあるのかって聞いているのだろ。
プロファイラーって知ってるか?
0141デフォルトの名無しさんNGNG
>>138
質問でわかりやすく。
0142デフォルトの名無しさんNGNG
>>140が馬鹿
0143デフォルトの名無しさんNGNG
>>141
間違えた。
質問はわかりやすくだな。
その上、上げてしまった。
0144デフォルトの名無しさんNGNG
>>140
おまえが一番馬鹿。
そう思うなら、>>138に対して答えてあげるべき。
しかも煽りレスでageてるのは厨房の証拠。
0145デフォルトの名無しさんNGNG
139=142=144 必死だな。
今必死になって、プロファイラーを検索している>>144の必死な姿が目に浮かぶよ。
知りもしないくせに知ったかぶりするから>139みたいな間抜けな回答になるんだよ。

VC6に付属しているようなプロファイラーはC++Builderには標準では付いていないってのが答え。
0146これも釣れるかなNGNG
>139の書込があまりにも間抜けだったからちょっと釣ってみただけ。
今回はずいぶんと引きがよかったね。
釣れたのは雑魚だったけど。
0147デフォルトの名無しさんNGNG
この人プルってる?
0148ロバート・K・レスラーNGNG
>>140
呼んだか?
何か凶悪事件でも発生したか?
0149デフォルトの名無しさんNGNG
>>148
ハウス
0150デフォルトの名無しさんNGNG
>>145
標準で付いてないってことは、ツールの付けだしができるってことですか?
じゃあVCの方がデバッグに強いってことでよいの?
0151138NGNG
ええ、BCBについてはまだ脱初心者できてないかもです
そんな私だからこそ、どこが遅いのか見当がつきにくいんですよ

プロファイラでぐぐっても出てこないから
その言葉で合ってるのか自信がなかったんです、すんません

やっぱ標準じゃついてないんですね
ttp://village.infoweb.ne.jp/~fwhk9290/gimite/index.htm
のMaprofってのを使ってみました

ソースに埋め込まなきゃいけないのが辛いですが
処理時間はそれっぽく出ています

ありがとうございました
0152クラリス・スターリングNGNG
>>148
師匠、ご無沙汰してます。
0153デフォルトの名無しさんNGNG
>>151
そんなのがあるのか今度つかってみよ
0154138NGNG
プロファイラが見つかって
どうにか使いこなしてボトルネックも見えてきました
(やっぱり思わぬ所で時間を取ってた、というのが見つかりました)

ListViewに4000件程度のデータを登録する
という極端な状況を想定しているのですが
(160GB HDDの全フォルダに相当する数です)
処理時間の1/3位
ListItemHogehoge->ImageIndex = n;
に持っていかれてるみたいです

まあ、そんなわけで、C++Builder-MLやら
ここのログやら見てみたのですが

・BeginUpdate、EndUpdate
→やってます
・ViewStyle = vsIcon にする
→Captionが2行以上になると急に遅くなる
・仮想リストビューを使う
→ ttp://www.microsoft.com/japan/developer/library/vccore/_core_virtual_list_controls.htm

どうも、仮想リストビューかなぁ、という気がしてるのですが
これはVCLのサポートは無い状態でやることになるんですかねぇ。。。
MFCはサポートしてるのにヽ(`Д´)ノウワァァン!!

それとも、VCLのリストビューでオーナードローがりがり、なのかしら?
ちと混乱気味なので、Delphi-MLでも覗いてみよう。。。

# なんか独り言みたい
0155138NGNG
おお!
ちゃんとVCLがサポートしているじゃないか<仮想リストビュー
TListView の OwnerData を true にして
OnData、OnDataFind、OnDataHint、OnDataStateChangeの記述、と
0156デフォルトの名無しさんNGNG
>ListViewに4000件程度のデータを登録する
>という極端な状況を想定しているのですが

仮想リストビューだったら100万程度でも余裕だよ。
0157デフォルトの名無しさんNGNG
すごい超低レベル質問でごえんください。

gccやlccのコンパイラを使おうとすると、BCBやDelのmake.exeが
悪さをすることがあります。つまり、先にBCBをインストして、あとで
WideStudioなどを使おうとして、Path設定にWSのBinディレクトリを
指定すると、BCBのmake.exeが優先されてエラーになるのです。

Win2000を使っているのですが、環境変数でPathの二重登録をして
場合によってmakeを使い分ける方法を教えてください。
0158デフォルトの名無しさんNGNG
>>151
ん?作者の宣伝?
0159デフォルトの名無しさんNGNG
TScrollBarってフォーカスもってるせいか自分にフォーカスがあると
点滅しているのですが、この点滅をやめる方法を教えてください。
TScrollBarにフォーカスがある状態でね
0160デフォルトの名無しさんNGNG
漢字対応のstrtokがほすぃ(゚д゚)
0161デフォルトの名無しさんNGNG
>>160
文字列をwchar_t*に変換してwcstokではだめ?
という自分はそんなときもっぱらboost::tokenizerを使うけど。
0162 NGNG
MD5値を算出するにはどうすればいいのでしょうか?
0163デフォルトの名無しさんNGNG
>>162
ttp://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc1321-Ja.txt
0164デフォルトの名無しさんNGNG
おめーらさっさと>>159教えれやボケが
0165 NGNG
>>163速レス感謝!
ご紹介のサイトを拝見しましたが僕の実力では理解困難です(´・ω・`)
MD5を簡単に算出できるVCLかAPIなどがあれば助かるのですが・・・
0166デフォルトの名無しさんNGNG
>>165
リンク先にはCソースがまるごと載ってんだけど。しかも日本語訳だし。

Delphiでの実装
ttp://forum.nifty.com/fdelphi/samples/01242.html
DSPでの検索結果
ttp://dsp.href.com/scripts/runisa.dll?DSP.131508:DATA:413196.5637:.keepckb,results
0167 NGNG
>>166
実装のサイトとても参考になります。どうしようもないヘタレなのでまた分からないことがあったらよろしくお願いします。
0168 NGNG
>>166
たった今MD5値取得に成功しました!!ありがとうございました。
0169デフォルトの名無しさんNGNG
質問です。

 任意の変数の値が書き換えられた時に
 プログラムの実行をブレークする

っていうのって、BCB6Pro でできますか?
できるとしたらその方法を教えて下さい。

監視式に関するヘルプを読んでみたけど、
それっぽいものを見付けられませんでした。
0170160NGNG
>>161
Thanks!!
0171デフォルトの名無しさんNGNG
自動で名づけられたTForm1とかのクラス名を変更する方法ってありますか?
0172デフォルトの名無しさんNGNG
>>171
あるよ。>>116-117参照。
0173無職PGNGNG
>>171 インスペクタでNameを変更するだけでできます
0174デフォルトの名無しさんNGNG
C++Builder使ってる人ってレポートはどうしてるんですか?
何か便利なものがあるんですか?
0175デフォルトの名無しさんNGNG
すいませんが教えてください。当方pascalはまったくわかりません。
参考文献がDelphiしかなくそのソース読んでいたら、
with 〜 do
という部分があったのですが、これはどんな意味なのでしょうか。
ぐぐってみたのですが、withは一般的すぎるので検索できないと言われてしまい
うまく検索できませんでした。
0176デフォルトの名無しさんNGNG
>>175
bcbインストールディレクトリ/help/op.hlp
0177デフォルトの名無しさんNGNG
oplg.hlpだった∧||∧
0178デフォルトの名無しさんNGNG
Google 検索: pascal "with文"
http://www.google.com/search?hl=ja&lr=lang_ja&q=pascal+"with%95%b6"
0179175NGNG
>>176 >>177 >>178
ありがとう、さんくす、わかりました。
0180デフォルトの名無しさんNGNG
データベースでフィールドでテーブルの関連付けってどうやってやんですか?
0181デフォルトの名無しさんNGNG
インストール時に
bordbk51.dllが上書きできません、使用中です
ってでてインストールできないんですけど
どうしたらよいのでしょう?
誰か教えてください
0182デフォルトの名無しさんNGNG
BCB初心者なんですが、不可解な減少が起きてこまってます。

ボタンを1つ置いて簡単な処理を記述してるんですが、
ボタンをエンターキーを押すと、2回押すごとに例外エラーが発生します。
マウスでクリック連打したときは何もおこらないのに・・・
■ このスレッドは過去ログ倉庫に格納されています