トップページ⇒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/
0478かみかみNGNG
>>477
どうもありがとう。
早速やってみたところ、ちゃんとできました。
昨日からずっと考えていたことだったので、
とても助かりました。
ほんとにありがとう。
質問の仕方は、以後気を付けますね。
0479デフォルトの名無しさんNGNG
StringGridのDrawCellイベントでカーソルのあるRowにしかイベントが入らないのですがなぜですか?
0480デフォルトの名無しさんNGNG
あ、おまいらごめん、わかったわ!
DrawCell引数のAColじゃなくてStringGridのColでアレしてたからだわ
ほんとおまいら氏ねよ
0481デフォルトの名無しさんNGNG
お茶目ね
0482デフォルトの名無しさんNGNG
ビルダーでアセンブラファイルを出力したいですけど
どうすればできますか?
ラーニング版だとできないのですかおしえてください。
0483デフォルトの名無しさんNGNG
>>482
bcc32 -s target.cpp
0484デフォルトの名無しさんNGNG
>>483
ありがとう
といいたいところですがTASM32.EXEが必要かも

それのやりかた(コマンドオプション)のこともよくわからないし
0485デフォルトの名無しさんNGNG
>>484
まずは手を動かせ
0486デフォルトの名無しさんNGNG
>>484
tasmはasmからobjを生成する時に必要(-Bオプション指定時)

とりあえずヘルプの「Borland C++Builderツール」->「C++コンパイラ: BCC32.EXE」を読め
0487デフォルトの名無しさんNGNG
ファイルはどこにおけばいいのだ。
bcc32はつかえるみたいだけどわからん
そもそも総合開発環境じゃないの?
DOSプロンプトをつかわんといけないの?
0488デフォルトの名無しさんNGNG
>>487
BCCはコンパイラ
BCBが開発環境
ここはBCBのスレ

BCCなら専用スレがあるのでそちらへ
0489デフォルトの名無しさんNGNG
>>488
BCB上でアセンブラのファイルを出力できないかを聞いてるんでしょ
0490デフォルトの名無しさんNGNG
動的に生成したTTabSheet上に、Memoコンポーネントを置きたいのですが
pts[i] = new TTabSheet(this);
pts[i]->PageControl = ppc;
pts[i]->Caption = ppcTabTitles[i];
mem[i] = new TMemo(this);
TTabSheetとTMemoの関連付けのやり方が分かりません。
ご教授をお願いします。
0491デフォルトの名無しさんNGNG
>>490
TControl::Parent
0492デフォルトの名無しさんNGNG
>>491
thx!!
0493デフォルトの名無しさんNGNG
すいません、TTreeViewコントロールを使っているんですが、
ノードをドラッグして動かそうとした途端にノードのOnClickやOnMouseDownイベントが実行されてしまうので
困っています。
試しにOnDragOverなどのイベントを一度全部取り外してからOnClickのみにして実行してみたのですが、
やはりノードを動かそうとした途端にOnClick判定が実行…。
これってどうやって避ければよいのでしょうか?
よろしくおねがいします。
0494デフォルトの名無しさんNGNG
>>493
ドラッグ中を示すフラグを定義して、ドラッグ中だったらOnClickは何もせずにreturnさせれば?

0495デフォルトの名無しさんNGNG
2つの同じTTableがあって、片方にレコードを追加したら
もう片方はいったんCloseしてOpenしないと更新されないのですが
Closeせずに更新する方法をおしえてください
0496デフォルトの名無しさんNGNG
BCB6でこの実行結果、何か変だと思いません?それはそれとして
何とか回避できないだろうか。これじゃうっかりif文にビット演算入れられん。

#include <iostream>
using namespace std;

typedef const unsigned char cuc;

int main()
{
cuc uc = 0xff;
cuc uca[] = { 0xff };

std::cout << std::showbase << std::hex << "uc = " << static_cast<int>(uc) << ", uca[0] = " << static_cast<int>(uca[0]) << std::endl;
std::cout << "~uc = " << ~uc << " は 0で" << ((~uc) ? "はありません" : "す") << std::endl;
std::cout << "~uca[0] = " << ~uca[0] << " は 0で" << ((~uca[0]) ? "はありません" : "す") << std::endl;
}

-- 結果 --

uc = 0xff, uca[0] = 0xff
~uc = 0xffffff00 は 0ではありません
~uca[0] = 0xffffff00 は 0です
0497デフォルトの名無しさんNGNG
>>496
わかりません
配列じゃないときはintに拡張されるからかな



あとなんでstdをつけてるの
0498デフォルトの名無しさんNGNG
>>497
これかな
ttp://fujitake.dip.jp/sealsoft/namespace.html
0499デフォルトの名無しさんNGNG
Builder6エディタのフリーカーソルを禁止に設定出来ないですかね?
0500デフォルトの名無しさんNGNG
>>499
http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&c2coff=1&q=Builder+%83G%83f%83B%83%5E+%83t%83%8A%81%5B%83J%81%5B%83%5C%83%8B&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0501デフォルトの名無しさんNGNG
BCB6のエディタもBuilderXと同じようになればいいのにね
0502デフォルトの名無しさんNGNG
Builder5にて、Excelファイルへ書き込むプログラムを作成したいのですが、
参考になるオープンソースは無いでしょうか?
0503デフォルトの名無しさんNGNG
VisualC++でコンパイルしたコードをC++Builderで実行したら
符号付き値と符号なし値の比較
とかいう警告が出てくるんですが…
ついでに結果がVC++とC++Builderで違います。
STLを使っているのですが、なにか移植に関して注意するようなことはないのでしょうか?
よろしくお願いいたしますm(_ _)m
0504デフォルトの名無しさんNGNG
>>502
この前Delスレでもあったけど、TExcelApplicationはダメか?
あれ?BCB5にあるんだっけ?
0505デフォルトの名無しさんNGNG
>>497
using namespace std;
してるじゃん
0506デフォルトの名無しさんNGNG
>>504
レスありがとうございます。
多分OLE経由でやるってところまでは分かるんですが、
プロジェクトごとソースがあれば参考になると思いまして。
全く分からなかったので質問させていただきました。
0507デフォルトの名無しさんNGNG
>>504
読み込みだけでしたら、こちらのサイトで分かったのですが・・・
http://www.geocities.co.jp/SiliconValley/4805/bcbtips/bcbtips078.htm
0508デフォルトの名無しさんNGNG
>>506
Delだけど、真似してみれば?
ある程度までできたら、残りはExcelVBAだから。
ttp://www.geocities.jp/lupin_home/delphi/index.html#21
0509デフォルトの名無しさんNGNG
>>508
ありがとうございます!
Delphiですか、初めてですが、とりあえずそのままコピペしてみます。
ちなみに、 「CreateOleObject」を使用する際、
Serversコンポーネントの「ExcelOLEObject」をFormに貼り付ける必要はあるのでしょうか?
(初心者ですみません)
0510デフォルトの名無しさんNGNG
>>500
ありが�d^^
0511デフォルトの名無しさんNGNG
>>509
いや、いらないはず。
0512デフォルトの名無しさんNGNG
>>511
早速のレスありがとうございます。
[C++ エラー] Unit1.cpp(31): E2268 未定義の関数 'CreateOleObject' を呼び出した
と、エラー発生するのですが、原因わかるでしょうか・・・
0513デフォルトの名無しさんNGNG
>>512
必要なライブラリをリンクしたか?
0514513NGNG
あ、この場合はプロトタイプがないからかな。
だとしたら必要なヘッダーファイルをインクルードしていないから。
0515デフォルトの名無しさんNGNG
>>513
ヘッダーをインクルードする必要があるのですか、なるほど。
この場合、なんというヘッダでしょうか
ヘルプには見当たらなかったのですが・・・
0516デフォルトの名無しさんNGNG
>>513さん
何から何までお世話になり申し訳ありません。
それと同時にサクサク教えられるので尊敬のまなざしです。
0517デフォルトの名無しさんNGNG
>>516
ヘルプにComObjと書いてあるけど
0518デフォルトの名無しさんNGNG
>>513
どのヘッダーをインクルードしなければならないか、
と言うのは、何かヘルプになる資料はあるのでしょうか?
(それとも、すでに常識で皆さん暗記が必須事項でしょうか?)
もし参考になるものがありましたら教えていただけると助かります。
0519デフォルトの名無しさんNGNG
>>518
ヘルプで関数なりを引けば「ユニット」という項目に書いてある。
0520デフォルトの名無しさんNGNG
>>517
おおおぉー
これが、必要なヘッダだったんですか。
すみません、知りませんでした・・・
ComObjをインクルードする場合、#include ComObj ではありませんよね?
c++は素人で、今までCしかやったことが無く
質問ばかりでご迷惑おかけします。
0521デフォルトの名無しさんNGNG
>>520
そろそろ自分でヘルプを見ることを覚えませんか?
0522デフォルトの名無しさんNGNG
>>520
申し訳ありませんでした。
ヘルプに
「COM オブジェクトを作成するには,CreateComObject を使用してください。」
と書いてありました。CreateComObjectを調べてみます。
0523デフォルトの名無しさんNGNG
>>522
ぉ〜ぃ、ちゃんと読め。
ヘルプにそんなことは書いてない。
0524デフォルトの名無しさんNGNG
>>523さん
あら?CreateComObjectは関係ないということでしょうか。
「説明」に書いてあることをもっとよく読んでみます。
(違うところを読めという事?)
とにかく、ご指摘ありがとうございます。
0525デフォルトの名無しさんNGNG
>>524
>IDispatch インターフェースをサポートしない COM オブジェクトを(以下省略)

つーか、なんでCreateComObjectだと思ったわけ?

朝早いんで寝る。
0526デフォルトの名無しさんNGNG
>>524
すみません、ヘルプに書いてあったのでまずはCreateComObjectかなと思いまして。

おやすみなさいです〜
0527デフォルトの名無しさんNGNG
本人が寝たみたいだからこそっと言うけど、
>>520の「c++は素人で、今までCしかやった事が無く」
って、あんた、そのレベルではCも初心者じゃねーか!!

と突っ込むのは無しですかね。
0528デフォルトの名無しさんNGNG
>>497>>498
レス送れました。ありがとうございます。
using namespace std; は取り忘れました。
それにしても配列とそうでない変数の時は挙動が違うと、
安心できませんね。当分ビット演算は直接if文に突っ込ま
ないようにします。
0529デフォルトの名無しさんNGNG
×送れました
○遅れました
0530デフォルトの名無しさんNGNG
7まだ?
0531現調中NGNG
VisualBasicで、フォームにラベルを貼りフォントサイズを20くらいにして
Form1.PrintForm で印刷すると文字がアウトライン化され非常に綺麗なのですが、
C++Builderでフォームに同じようにラベルを貼ってフォントサイズを20で
Form1->Print(); で印刷するととても汚いです。
VBとBCBでは印刷の仕組みが違うのは分かりますが、
どうにはVBのように綺麗に出す方法はないでしょうか。
Shapeなどを使用し罫線を引いたりしたものを一緒に印刷したいので
RichEditを使う方法は使えません。
色々と調べて何度もチャレンジしてみたのですが出来ませんでした。
教えて君で申し訳ないですが是非解決策を教えてもらえないでしょうか。
今日も帰れそうにないです。。
0532デフォルトの名無しさんNGNG
>>531
Printerオブジェクトを直接使う方法しか知らないなぁ・・・。
役に立たないけど、応援の言葉だけ。






ま、ゆっくりしていけ。
0533現調中NGNG
>>532
応援ありがとうです。
はぁ・・こんな所で引っかかるとは思いもしなかったな・・。
出来ればゆっくりしたくないので引き続き調べてトライしてみます。
0534デフォルトの名無しさんNGNG
>>533 ちょっとかわいそうなのでVCL読んでみた。
やっぱりPrinter.Canvasに直接描画っぽい。

Print()はグラフィックとしてTFormをTBitmapにコピーし、それを
スケーリングして印刷してる。つまりハードコピーしたグラフィックを
拡大してるからフォントは汚くなる。

で、考えたのだが、TLabel等文字関係を非表示にしてTBitmapにコピー、
それをプリンタのスケールに拡大して、そこに文字列を描画ってのは
どうだろ? 結構面倒そうだが。

他の手段として、レポートツールとかでこの辺を楽にできないのかな?
俺使ったことないからわからんのだわ。
 




やっぱり、ゆっくりしていけ。
0535現調中NGNG
>>534
優しい>>534様。
文字関係を非表示にしてフォームをコピーで罫線とかを覚えてて・・・
プリンターのスケールに拡大で文字ですか〜。。頭が逝きそう。
いまさきほどから実験してるのは、フォームに散乱したラベルや罫線の
パーツ類を取得し座標を計算して、ラベルならその内容を・・・
->Canvas->TextOutA(x, y, str); で置いていくみたいな事を
やってました。
やりながらVBで1から作った方が早いような・・とか悩んでますが
先方がDLLだのランタイムだの必要とせずEXE1本でとうるさいので・・。

ということでゆっくりしたくないのでもっと実験します・・
0536デフォルトの名無しさんNGNG
PaintToメソッドでメタファイルキャンバスに一旦書き出し、
それをスケール調整してPrinterキャンバスに描いてみては
いかが?
0537デフォルトの名無しさんNGNG
よく知ってそうな人が出てきたので撤収。
 
 
 
 
 
一日は24時間あるさ。
0538536NGNG
ヒントはここまで。
ついでいうとPaintToはコンボボックスの中身だけなぜか描いてくれない。
0539現調中NGNG
だめだ〜〜〜。もうだめっぽい・・。
先方説得してVBで組むか・・・
0540デフォルトの名無しさんNGNG
Delphiの例なら
ttp://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=041956
0541デフォルトの名無しさんNGNG
ここで結論に達してる。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=042110
0542かみかみNGNG
いつもお世話になっております。
以下の件について、ご存知の方おられましたら、ご教授願います。

Microsoft ACCESSのデータベースを作成する方法

今のところ、まったくもってやり方が分からずにおります。
ご存知の方おられましたら、是非ご教授願います。
0543デフォルトの名無しさんNGNG
C++BuilderにVisualC++の関連づけとDelphiの関連づけを勝手に変えられた
すげぇむかつく
0544デフォルトの名無しさんNGNG
>>542

Access形式のファイルを自動作成するやり方は知らないけど、
テーブルも何もない空のAccessのファイルをあらかじめ作っておいて、
そいつに動的にテーブルを作って、データファイル的にAccessのDBを扱ったことはある。

そのときは、ADOCommandのCommandTextに"CREATE TABLE〜"でテーブル作成SQLを
設定してやって、ExecuteでSQLを実行した。
 
0545デフォルトの名無しさんNGNG
>>543
インストール時に関連付けをどうするか聞いてくるだろが!





まあ俺もDelphiの関連付けを乗っ取られたわけだが_| ̄|○
0546デフォルトの名無しさんNGNG
すみませんです。BCB6 Personalの「ActiveX の取り込み」で
「Microsoft Internet Controls (Version 1.1)」をインストールし、パレットに出来た
TCppWebBrowserコンポーネントを単純にフォームに貼り付けてビルドすると、

[リンカ エラー] 外部シンボル '__fastcall Shdocvw_tlb::【A】::【B】
が未解決(C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ が参照)

がたくさんでてしまうのですけども、なんか手順しくじってますか?
Windows98se+Ie5/5.5/6と2000+Ie5.5です

【A】は、TCppSearchAssistantOC、TCppCScriptErrorList、
TShellFavoritesNameSpace、TCppShellUIHelper、TCppShellWindows、
TCppShellBrowserWindow、TCppInternetExplorer がそれぞれ、
【B】は、BeforeDestruction()、InitServerData()、InvokeEvent()、
Connect()、Disconnect() がそれぞれ組み合わさります。
0547デフォルトの名無しさんNGNG
ボタンをかっこよくしたいんですが
どうすればいいですか?
0548デフォルトの名無しさんNGNG
>>547
センスを磨いてください。
0549デフォルトの名無しさんNGNG
>>546
BCBのincludeディレクトリ以下のどこかにshdocvw_ocx.hというファイルがあるので、
それを削除すればOKなはず。
0550デフォルトの名無しさんNGNG
BCB6にIndy9のインストールをしようとして、Fullc6.batを実行しC6というフォルダにできた
dclIndy60.bplをパッケージのインストールで追加しようとすると、「プロシージャエントリポイント
@Idresourcestring@_RSBindingAny がダイナミックリンクライブラリ Indy60.bpl から見つかりませんでした。」
と言われます。アップデートは当ててあるのですけれど・・・。
0551デフォルトの名無しさんNGNG
タイトルバーに色をつけたり
閉じるボタンを自作のアイコンに変更したりしたいんですが...
0552デフォルトの名無しさんNGNG
>>551
頑張って下さい
0553デフォルトの名無しさんNGNG
リージョンでクライアントエリアくりぬいて自分で描画&メッセージ処理
XPでやってる奴。
0554デフォルトの名無しさんNGNG
てゆうか、そうゆうことやる前に内容きっちり作りこんでほしいね。
0555546NGNG
>>549
ありがとうございます。できました。感謝です!
0556デフォルトの名無しさんNGNG
BCB5でスマートポインタ及びその配列を使いたくて
そのためにテンプレートを書くのはちょっとと思い、

以前に使ったことのあるATLに含まれる
CAutoPtr
CAutoPtrArray

を使おうと思ったんですがどうしてもうまく行きません……。
(そもそもコンパイルを通せません)
Proを使っていますのでATLをサポートしていると思うのですがヘッダにそれらしきものもなく。

BCBには同様の機能として
TPtr、TAPtrの二種類があるようなのですが、
これらはリファレンスにものっていないし、コードを見る限り挙動がおかしくて
(TAPtrのコンストラクタにTPtrを渡すと、TPtrのProtectedな関数を直接呼び出そうとしていたり……。)
困ってしまっています。

何か良い解決策は無いものでしょうか?
ご教授戴けますと幸いです。
0557デフォルトの名無しさんNGNG
つ ttp://www.sun-inet.or.jp/~yaneurao/yaneSDK.html
こんなんどうよ
 
0558デフォルトの名無しさんNGNG
>>557

そんな特定の個人Dependな実装を使わなくても、

boost:shared_ptrとかSTL:auto_ptrを利用すれば?

俺はBCB4.0でコンテナには boost:shared_ptr、VCLは状況で auto_ptr 利用しているけど。
STLはまあいいとして、boostは ttp://www.boost.orgでどうぞ。
0559デフォルトの名無しさんNGNG
自分もboostのshared_ptr使うな。
コピーしないことを明示したいときはscoped_ptr使ってるよ。
0560デフォルトの名無しさんNGNG
春休みプログラムしようと思ってます。
ヤフーオークションでBuilder6が500円とかであるんですが買って大丈夫なんですか?
登録したらつかえませんとかないですか?
違法になったら怖いなぁー
0561デフォルトの名無しさんNGNG
>>560
どうぞ
http://www.borland.co.jp/products/cbuilder6_license_jp.pdf
0562デフォルトの名無しさんNGNG
ちなみにプログラム組んでみたいとかの動機ならDelphi6 Personalで十分かと‥‥
0563デフォルトの名無しさんNGNG
>>550
INDYは最初からついてるやつ使ったほうがいいよ。新しいの駄目駄目。
0564デフォルトの名無しさんNGNG
一番新しいのはダメダメだけど、ちょっと古いインストーラ付きのやつならいいと思う。
0565デフォルトの名無しさんNGNG
>>550
Borland\CBuilder6\Bin\ ディレクトリの indy60.bpl をリネーム
0566560NGNG
>>561
規約違反みたいですね・・
ソフトウェアの出品自体ほとんど違法なんですかね・・
0567デフォルトの名無しさんNGNG
>>566 BCCならタダダゾ・・・
ttp://www.kumei.ne.jp/c_lang/bcc/
0568デフォルトの名無しさんNGNG
 初めまして。BCB4.0で、VCLを使ったdllを作ろうと
しています。
 BCB4.0のヘルプファイルには「VCL コンポーネントを含む
DLL の作成」という項目があり、「YES」「NO」という2つのボタン
を有するフォームを作成する例が掲載されています(多分、BCB
5.0以降でも同じような内容があると思います)。
 しかし、実際に作ろうとしてBCBの「ファイル」→「新規作成」
→「ダイナミックリンクライブラリ」を選択すると、フォームの無い
プロジェクトが作成されてしまいます。dllを作成するプロジェクト
にフォームを追加するにはどうすればよろしいのでしょうか?
0569デフォルトの名無しさんNGNG
#define DBG_MSG(format, ...) OutputDebugString(AnsiString().sprintf(format, __VA_ARGS__).c_str());
上のマクロをBCB6で実現する方法ってないでしょうか‥‥
0570デフォルトの名無しさんNGNG
ない
0571556NGNG
スマートポインタのことを質問した556です。
>>557さん、>>558さん、>>559さん、お答え戴き有り難う御座います。

>>557さん
やねうらおさんのYTLは知っていたのですがそれだけを分離して使えないので、困っていました。
しかし、ゲームをつくる上での使い勝手は良さそうですね。
ご紹介戴き、有り難う御座います。

>>558、>>559さん
boost使ってみました。
かなり良いです!

boost:shared_ptr
がvectorの要素に対して格納できるのが良いですね。
紹介戴きありがとうございました。
auto_ptrでは駄目な部分もあり、色々と迷っていたのでした。
こんな使い勝手の良いライブラリが無償で提供されているなんて
何だか感動です。

本当に有り難う御座いました。
0572デフォルトの名無しさんNGNG
>>568
フォームは別に作って、それをインクルードしたらいい
0573558NGNG
>>571(=556)

>>auto_ptrでは駄目な部分もあり、色々と迷っていたのでした。
vectorにはauto_ptrは*絶対に*使えませんよ。

この辺の詳しいことは、Effective STLの第7項に書いてあります。
#最終的にはshared_ptrを使うのが例外安全の意味もありBESTとなってます。

Effective STL:
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894714108/249-4661473-2133910
0574568NGNG
>>572 できました。ありがとうございました。
0575デフォルトの名無しさんNGNG
Builder6ですが、文法チェックのため”コンパイルのみで実行しない”
というのは出来ますか?
0576デフォルトの名無しさんNGNG
>>575
Ctrl+F9とかAlt+F9とか。
メニューの「プロジェクト」見れ。
0577ぬるぽNGNG
>>576
サンクスです。
「実行」メニューしか見てなかった^^;
■ このスレッドは過去ログ倉庫に格納されています