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

C++Builder相談室 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C++Builderに関する質問・回答や議論等を行う相談室スレッド。
過去スレ・関連サイトは>>2-5あたり。
0598デフォルトの名無しさんNGNG
>>597
ただそれだけのためにスレッドを作るの!?
かなり非効率でしょ…

Timerで直接TStringGridのCanvasに色を塗ったら?
0599デフォルトの名無しさんNGNG
QuorityCentrulにメモリエラーのレポート出しといたけど
あれは英語しかつかえない専用プログラムになってしまってようだね?
初めて使ったよ。
と言う訳で本当にバグレポートを送れたかどうか怪しいけど
一応出しといた。英語も適当だし上手く行ったか分らんけど。

0600デフォルトの名無しさんNGNG
そりゃBorlandにいるのは外人なんだから英語で書かなきゃ意味無いだろ
0601デフォルトの名無しさんNGNG
#include <iostream>
using namespace std;
int main()
{
AnsiString a = "a";
return 0;
}
をコマンドラインからコンパイルしたい
bcc32 hoge.cpp
なにをincludeすればイイのですか?
0602デフォルトの名無しさんNGNG
よく覚えてないけど
コンソール(VCL使用)用のプロジェクトを作ってみて
それを真似したら?
0603デフォルトの名無しさんNGNG
>>601
vcl.hもしくはsystem.hpp
さらにrtl.libをリンクする必要がある。

//includeディレクトリをgrepすれば必要なヘッダはわかるはず。
//そのままdstring.hをインクルードするとsystem.hpp使えと怒られるが(゚∀゚)
0604デフォルトの名無しさんNGNG
>>603
追加
iostreamを先にincludeすること
そうしないと
AnsiString str = "hoge";
std::cout << str << std::endl;
でエラーになる
0605デフォルトの名無しさんNGNG
>>604
BCB5を使っているのですが、rtl.libがありません。

BCB6ではあるのですか?
0606デフォルトの名無しさんNGNG
>>605
6しか持ってないからわからないが./Lib/Releaseか./Lib/Debugに入ってないか?
BCB5じゃなくてBCC5.5.1ってオチだったら知らん
0607本田NGNG
>BCB5を使っているのですが、rtl.libがありません。
少なくともBCB6と同じディレクトリには見つからない。

>BCB6ではあるのですか?
ある。

0608デフォルトの名無しさんNGNG
TCppWebBrowserを使い、HTTPアプリと接続してみたところ、
あるマシンではググルのページ検索サービスにつながってしまいます。

これはどうしたことでしょう。
0609デフォルトの名無しさんNGNG
あらまあ。どうしたことでしょう。
0610デフォルトの名無しさんNGNG
あらあら奥さん。お気の毒ですわね〜
0611デフォルトの名無しさんNGNG
HTTPアプリと接続ってどゆこと?
0612デフォルトの名無しさんNGNG
>>611
HTTPサーバみたいなアプリで、HTML文書をリターンする。
0613デフォルトの名無しさんNGNG
それをNavigateしたらぐぐるのページが表示されたとゆうことかな
0614デフォルトの名無しさんNGNG
>>613
ググルのページですが、ググルのIPサーチページみたいな。

XXX.XXX.XXX.XXX ページを探しましたが見つかりませんでした、みたいな。
で、直リンテキストみたいなのが貼ってあって、それをクリックするとHTTPアプリにやっと接続する。
0615デフォルトの名無しさんNGNG
意味和漢ねー
キャプチャしてうぷろだにでもうぷしろよ
0616デフォルトの名無しさんNGNG
>>614
ふむふむ。

いやもう僕にはさっぱりですな '`,、(´∀`) '`,、
0617デフォルトの名無しさんNGNG
BCB9は?
0618デフォルトの名無しさんNGNG
TNMPOP3で新着メールの判断方法を教えてください
0619デフォルトの名無しさんNGNG
やだ
0620いなむらきよしNGNG
僕、奇形(*^_^*)
0621デフォルトの名無しさんNGNG
夏だねぇ〜
0622デフォルトの名無しさんNGNG
IndyのPingはどこにありますか?
0623622NGNG
TIdIcmpClientにありますた。
pingで取れる以上の情報をとる手段を教えて欲しいで津。
0624デフォルトの名無しさんNGNG
ポートスキャソ
0625デフォルトの名無しさんNGNG
TXMLDocument
ってどうやって使うの?
0626デフォルトの名無しさんNGNG
IndyではSubnet Maskは分かりませんか?
0627608NGNG
>URL 192.168.2.200に関する情報は見つかりませんでした。
>
>URLが正しい場合は、ここから192.168.2.200を開いてみてください。
>"192.168.2.200"を含むページの検索
↑
こんなページが開いてしまいます。
で、リンクをクリックしてやっとHTTPアプリに繋がる。
何ででしょうか。
0628デフォルトの名無しさんNGNG
単に"http://192.168.2.200/"と指定すればいいんじゃないの?
0629デフォルトの名無しさんNGNG
>>628
その入力結果が >>627 でつ。
IEコンポーネントだけでなく、IE本体でも同じ結果でした。
ということは、回避策は無いのか?
0630デフォルトの名無しさんNGNG
MemoryStream を String にセットするにはどうしますか?
0631デフォルトの名無しさんNGNG
char *buf = new char[MemoryStream->Size+2];
buf[MemoryStream->Size+1] = '\0';
MemoryStream->Read(buf, MemoryStream->Size);
std::string str(buf);
delete[] buf;
0632デフォルトの名無しさんNGNG
ありがとう。>>631

AnsiString buf; として、
buf.SetLength(MemoryStream->Size);
MemoryStream->Read(buf.c_str(), MemoryStream->Size);

てのもOKですか?
「buf.c_str()」が一時的なバッファのポインタ返したらアウトだけど。
0633デフォルトの名無しさんNGNG
なんか戻り値はconstになってますが、c_str()は書込に使わない方がいいです。
newしたくないなら
std::vector<char> buf;
buf.resize(MemoryStream->Size);
MemoryStream->Read(&buf[0], MemoryStream->Size);
AnsiString str(&buf[0], MemoryStream->Size);
0634デフォルトの名無しさんNGNG
×constになってますが
○constになってませんが
0635デフォルトの名無しさんNGNG
度々ありがとうございました。>>633-634
0636デフォルトの名無しさんNGNG
すみません、もう一つ教えて下さい。
>std::string str(buf);
または、
>std::string str;
>str.assign(buf);
と書くとき、
このとき、bufの途中にNULL文字が入ってても大丈夫なんですよね?
0637デフォルトの名無しさんNGNG
駄目です。NULL文字が入ってるならこうやって下さい。
std::vector<char> buf;
buf.resize(MemoryStream->Size);
MemoryStream->Read(&buf[0], MemoryStream->Size);
std::string str(buf.begin(), buf.end());
0638デフォルトの名無しさんNGNG
>>637
うゎ、そうでしたか。
stringの使い方が分かるようになりました。
0639デフォルトの名無しさんNGNG
ポインタのグローバル変数ってNULLで初期化されましたっけ?
0640デフォルトの名無しさんNGNG
>>639
される。
0641デフォルトの名無しさんNGNG
>>629
アドレスに変な文字が入っていて検索ページに飛ばされているんじゃないの?
それかIEがおかしいか。
0642デフォルトの名無しさんNGNG
鯖側がまともに動いてるのか激しく疑問。
0643デフォルトの名無しさんNGNG
>>641-642
実はIE単体で使用しても同じ現象なのでIEの問題ポイでつ。
ググルのリンクをクリックすると鯖に繋がるので鯖はOKポイでつ。
0644デフォルトの名無しさんNGNG
TMemoの任意の行にスクロールさせるのはどうやりますか?
0645デフォルトの名無しさんNGNG
int targetLine = 任意の行;
int firstLine = SendMessage(Memo1->Handle, EM_GETFIRSTVISIBLELINE, 0, 0);

SendMessage(Memo1->Handle, EM_LINESCROLL, 0, targetLine - firstLine);

一発で飛べるメッセージとかあるかもしれないけど、一応これででけた。
0646デフォルトの名無しさんNGNG
SendMessageよりもPerform使えよ
0647デフォルトの名無しさんNGNG
>>646
なんで?
0648デフォルトの名無しさんNGNG
美しさ
0649デフォルトの名無しさんNGNG
はあ
0650デフォルトの名無しさんNGNG
タイプ数
0651デフォルトの名無しさんNGNG
へえ
0652デフォルトの名無しさんNGNG
見た目
0653デフォルトの名無しさんNGNG
たいした理由はないってことね。
0654デフォルトの名無しさんNGNG
速度
http://216.239.57.104/search?q=cache:ZHmrhhdPVFAJ:member.nifty.ne.jp/h_kova/faq/main.htm+perform+sendmessage+%E9%80%9F%E5%BA%A6&hl=ja&lr=lang_ja&inlang=ja
0655デフォルトの名無しさんNGNG
そんなに変わらないのね。
0656デフォルトの名無しさんNGNG
OOっぽいから
0657デフォルトの名無しさんNGNG
>>653
ジャブをおろそかにするボクサーみたいな態度だな
0658デフォルトの名無しさんNGNG
>>657
ジャブが上手かどうかなんて関係ないね。
勝てばいいのさ。
0659デフォルトの名無しさんNGNG
BCB次回作はいつごろ出ると踏んでいますか?
0660デフォルトの名無しさんNGNG
BCB6もバグだらけでお笑いレベルだし、
6.5とか出して欲しいな。
0661デフォルトの名無しさんNGNG
>>658
お前じゃ勝てないな
0662デフォルトの名無しさんNGNG
>>658
そういうやつが世界戦でアウトボックスに完封されるんだよ。
0663デフォルトの名無しさんNGNG
定義済みアクションの TFileOpen を登録すると、
「それは保存だろ!」と突っ込みたくなるようなアイコンになってしまうんだけど、
うちだけ?開くらしいアイコンってどこかにないかな?
0664デフォルトの名無しさんNGNG
dll
0665デフォルトの名無しさんNGNG
質問させてください。

1つのアプリケーションで複数のFormに不特定多数のコンポーネント
を貼り付けているのですが、現在アクティブなFormとフォーカスのある
コンポーネントが分かるよう、色のついた枠をつけたいのですが
良い方法見つかりません。どなたかアドバイスください。
0666デフォルトの名無しさんNGNG
TPanelを派生したコンテナパネルコンポーネントを作る。
自分の管理しているコンポーネントにフォーカスがきたら色表示。
0667665NGNG
>>666

たとえばListViewにフォーカスがきたときにListViewの
周りを2pixの黄色い枠で囲いたい時にTPanelに前後左右
2pix小さいTListView貼り付けてPanelの色を変える
ということですか?

ちなみにOnReturnで色付け、OnExitで色はずしって
感じでしょうか?
0668666NGNG
今家でBCB持ってないから即答出来ないな。

フォーム来るメッセージハンドラで(イベントハンドらではない)、
フォームが自分に貼り付けられてるコンポーネントを全部見てフォーカスのあるコンポーネントを探す、
なんてことは出来るだろうね。
で、コンポーネントのParentのオブジェクトを見てコンテナパネルだったら枠を書いてやるとか。

もっとスマートな方法思いついた人よろ。
0669666NGNG
超だっさい処理で良いなら。

コンテナパネルの初期処理で、
コンテナパネル自身に貼られたコンポーネントのOnEnter/OnExitイベントハンドラを設定する。
そのイベントハンドラでコンテナパネル自身のメソッドをコールしてやる、と。

で、この方式の欠点はOnEnterイベントを他に使えないことかな。
0670デフォルトの名無しさんNGNG
「モジュール'xx.exe'のアドレスxxxxxxでアドレスxxxxxxxに対する読み込
み違反がおきました」
といったメッセージが表示されたときに、xxxxxxアドレスからエラーにソースコードの位置
を知ることは可能でしょうか?

コンパイル時につくったマップファイルから調べるか、デバッグでアドレスを指定するなど
してみましたが、うまくいきませんでした。
0671本田NGNG
>BCB次回作はいつごろ出ると踏んでいますか?

WindowXPの64Bit版が遅れてるので、来年後半にずれ込むと思う。
0672デフォルトの名無しさんNGNG
>>670
CodeGuardをONにしれ。出てきたログファイルを読めば大抵わかる。
Personalではあいにくと付いてないけど。
0673デフォルトの名無しさんNGNG
多重継承できないってどういうこと?
つかえね
0674デフォルトの名無しさんNGNG
VCLがだろ?
まあいいやん。
0675デフォルトの名無しさんNGNG
Delphi側はimplementsで委譲で多重継承モドキができるんだが、C++B側に対応する機能は無いの?
0676デフォルトの名無しさんNGNG
つか、職業プログラマでBCB使ってる人っている?
漏れの部署ではVC++しか使うことはない
0677デフォルトの名無しさんNGNG
VCLオブジェクト(TObjectから派生してるオブジェクト)をXMLでシリアライズ/デシリアライズ
したいんだけど、どうすればいいの?
0678デフォルトの名無しさんNGNG
現在のBCBの最新版は6でいいんだよね?
0679デフォルトの名無しさんNGNG
そうです。んで次は9という話。
0680デフォルトの名無しさんNGNG
>>677
TWriterの必要なメソッドはvirtualになってないし、
ObjectBinaryToTextを参考にObjectBinaryToXMLみたいなのを作る、ぐらいかなあ…
既にあるような気もするけど。

COMオブジェクトにしてしまうのは無しですよね
0681デフォルトの名無しさんNGNG
6から飛んで9なんですか。
6・7は何処にいったんでしょうね〜
0682デフォルトの名無しさんNGNG
インターネットプロトコルと同じさ
0683デフォルトの名無しさんNGNG
>>675
__interfaceあたりくらいしか思いつかん。

>>673
その代わりにキャストしても元の型がわかる強力なRTTIがあるじゃないか。
0684デフォルトの名無しさんNGNG
>>681
6なら今あるけど。
0685デフォルトの名無しさんNGNG
>>676
ノシ

うちは請負中心の零細で、お客さんも理解があるから、ほとんどのアプリがBCB6Proで開発。
VCLをスタティックリンクにしてあるから、「バイナリがでかいYO!」って言われるくらいかな。

打ち合わせのときに、お客さんが「自分でも直したいからVBかVC++で。」って言ってくることがよくあるけど、
「本当に自分で直す根性ありますかぁ?大変ですよぉ。」って言うと、たいていは尻込みする。

もちろん、ソースコードは渡しているし、わざわざBCBを買ったお客さんもいた。でも、タンスの肥やしになったようだけど(w

0686デフォルトの名無しさんNGNG
>>685
うちはちょっと業務が特殊なので、BCBメインです。
客にソースコード込みでアプリケーションを提供するときには(あんまり無いけど)、
「VCでもいいですけど、GUI部分の工数を余分に頂くことになります」
と言っている。
別に水増し請求してる訳じゃなくて、BCBだと安く済むってだけなんだけどね。
0687デフォルトの名無しさんNGNG
>>683
>>>673
>その代わりにキャストしても元の型がわかる強力なRTTIがあるじゃないか。
そういう問題じゃない。
VCLで多重継承が使えないのはつらい。
0688685NGNG
>>686
> 「VCでもいいですけど、GUI部分の工数を余分に頂くことになります」
> と言っている。
> 別に水増し請求してる訳じゃなくて、BCBだと安く済むってだけなんだけどね。

これ、俺も同じ。(w
そしてよくあるのが、打ち合わせの時に「Excelのような表形式でデータ入力がしたい。」と言われる。
だから、BCB5のデモ版でTStrinigGridを試してからBCBに乗り換えた。
あと、ADOExpressが使えるから、AccessのDBをデータファイルとして使って、レポートが定義してある
別のAccessDBにテーブルをエクスポートして帳票印刷したりしたこともある。

その前はGUIをVB、内部処理をVC++のDLLで作ったり、MSHFlexGridをインポートしていたんだけど、
デバッグが面倒すぎた。特に、GUIをVBで作っていたときはIDEごとコケたりするし。
0689デフォルトの名無しさんNGNG
VCでUIつくるのそんなに面倒か?
慣れだろ?
0690デフォルトの名無しさんNGNG
TStringGridでもExcelのように入力を期待されると結局自前で作るしかないし
つか、BCBが用意しているコンポーネントは業務でそのまま使えることは
極めて稀
結局VC使うのとほぼ同じ
0691デフォルトの名無しさんNGNG
そう思うならVC使ってりゃいいんだよ。
0692デフォルトの名無しさんNGNG
俺はBCBで簡単に出来るときはBCBで作ってるね。
>TStringGridでもExcelのように入力を期待されると結局自前で作るしかないし
難しくなりそうになったらVCにしてる。

BCB使うときは基本的にUIがポトペタですむときが多いね、中身のロジックは
純粋にC++で作るのでVCとかBCBとか関係ない。
で、VCLを自分ではほとんど作らないんだけど
>VCLで多重継承が使えないのはつらい。
この辺はどうなんでしょうか? VCLを多重継承するときってどんなとき?
0693デフォルトの名無しさんNGNG
まともに多重継承を使いこなせてるのは極少数のハッカーだけだと思うが・・・
0694デフォルトの名無しさんNGNG
C++Builder1に対応するDelphi2は、単一継承だけだったんだけどね
Delphi3でinterface,Delphi4でimplementsと、Delphi側がその後委譲多重継承とでも言うべき
C++とは噛み合わない独自の多重継承の方法を作り上げてしまった

で、C++Builder側がおいてけぼりをくらってる、と
0695デフォルトの名無しさんNGNG
>>683
__interfaceって何だろうと思ったら、
#define __interface class
だったw

> 純粋仮想関数だけを持ち,データメンバーを持たないクラスがある場合,
> C++Builder のコンパイラは,これを Object Pascal の
> インターフェースに対応するクラスとして認識します。
> このように,VCL スタイルクラスを作成して,多重継承を使用することが可能です,

こんな機能もあったのね。まあ漏れがお世話になることは無いかもしれないけど。
0696デフォルトの名無しさんNGNG
↑大嘘
0697デフォルトの名無しさんNGNG
>>696
ナニが?
■ このスレッドは過去ログ倉庫に格納されています