C++Builder相談室 Part8

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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/
<Tipsなど>
C++Builderのお部屋(Tips系)
http://www.ne.jp/asahi/nagoya/ahomaro/builder/
C++Builderによるプログラミング(Tips系)
http://market.agr.tottori-u.ac.jp/ken/
Delphian World(コンポーネントライブラリ)
http://home1.infonia.ne.jp/~delphian/delphi/
C++Builder Bugs
http://www2.justnet.ne.jp/~tyche/bcbbugs/index.html
Borland C++Builder最新リンク2003(リンク集)
http://www2.famille.ne.jp/~akio1998/l_cpb.html
ビギナー向けtips
http://www.yukibow.com/bcb/index.html
<関連サイト>
公式サイト
http://www.borland.com/cbuilder/
http://www.borland.co.jp/cppbuilder/

builder-ML 過去ログブラウザ
http://leed.issp.u-tokyo.ac.jp/~takeuchi/builder/browse.cgi
http://www.sfdata.jp/ML/cbuilder/newlog.php?ml=cbuilder

C++Builder メーリングリスト
再登録が必要
http://www.sfdata.jp/ML/menu.php?ml=cbuilder

<Update>
BCB6/US SP1 は BCB6/JP 製品版に含まれています。

C++Builder 6 Update4 日本語版
ftp://ftp.borland.co.jp/pub/cbuilder/
<VCL兄貴のDelphiスレ>

くだすれDelphi Part8 (超初心者向け)
http://pc2.2ch.net/test/read.cgi/tech/1068201045/l50
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その11
http://pc2.2ch.net/test/read.cgi/tech/1068564708/l50
Delphi相談室(上級者用)その12
http://pc2.2ch.net/test/read.cgi/tech/1064766880/l50
Delphi相談室(中級者以上)その12
http://pc2.2ch.net/test/read.cgi/tech/1064420818/l50
【Delphi初心者】今から始めるDelphi Part01
http://pc2.2ch.net/test/read.cgi/tech/1062422335/l50
>>1
乙です。
indyの日本語ヘルプってどこでダウソできたっけ?
>>6
BorlandのDelphi7のアップデートに入ってた様な気がしないでもない。ごめん。
8デフォルトの名無しさん:03/12/01 17:07
AnsiStringのFormatとsprintfの速度を比べて見た
まあこっち使ったほうが早かったわ
IDE使わずVCLって使えんの?
暇そうだな
1000 名前:gw.borland.co.jp[sage] 投稿日:03/12/01 19:51
記念カキコ
C++Builderのpathってどうやって見れるの?
C++Builder4のlearning持ってるんだけど
作ったプログラムが他のパソコンでは動かない
なんで?
ランタイムかなんかかな
>>12
> ランタイムかなんかかな
たぶんそういう設定になってるんだろうね。変えるべし。
14デフォルトの名無しさん:03/12/02 09:47
>>11
自分の作った実行ファイルならApplication->ExeNameにフルパスはいっとるから
ExtractFilePath( Application->ExeName );で最後¥つきのパス

>>12
4はわからんけど5なら、共有RTL DLLを使うのチェックをはずすとか
C++Builder使ってからコマンドラインもC++Builderのコンパイラーとつながってるけど、
ほかのコンパイラーでしたいんだがどうすればいいんだ?
16デフォルトの名無しさん:03/12/02 14:34
StringGridのDrawCellイベントでセルに画像を張りたいのですが
セルをまたがると他のセルにかぶってる部分の画像が表示されないのですが
どうやったら表示できますか?
>>15
言ってる意味がいまいち判らんのだけど、バッチファイル作ったらいいんじゃないの?

>>16
なぜにTStringGrid?
18デフォルトの名無しさん:03/12/03 12:42
>>17
そんなの貴様に言う必要ねえ
さっさと>>16知ってたら教えろq
19デフォルトの名無しさん:03/12/03 14:41
Utf8ToUnicodeは引数が多くて使い難い、というか、
wchar_tのエリアを確保しといて、int MaxCharsで最大長決まってますよね。

1行で書けないというか、String型に比べて使い難いんですが、何とかなりませんか?
20デフォルトの名無しさん:03/12/03 15:05
DM来た
某年末だから売り上げ上げなんとか伸ばそうと必死なのだな。
>>19
WideString使うラッパーな変換関数自作すれば?
22デフォルトの名無しさん:03/12/03 15:27
エディタでカーソルが文字に重なると
砂時計になってしばらく操作できなくなるんだけど
どうすれば良いですか?

>>22
エディタの自動支援機能を使わない。
自動支援を使わなくてもキー操作で入力支援は呼び出せる。
>>22
switch (〜)
{
case:エディタのID_〜
でbreak;してる?
或いは、デバックでステップさせてって、どこでそういう現象起こり始めるか探ってみたら。
処理がLOOPしてるかもしれないし。
>>24
debuck
26デフォルトの名無しさん:03/12/03 18:27
AppendRecordでTVarRec型にTDateTime型の変数を入れるとコンパイルエラーがでるのですが
どうしたらエラーでずに格納できるようになりますか?
2722:03/12/03 19:15
レスありがとうございます
エディタの自動支援機能を切ってもなってしまうのです。
コード書いてるときにこの状況なって作業しづらくて。
だいたい6秒ぐらい作業が中断されます。
タスクマネージャーのCPUの使用率は100%です。

たぶん変数の宣言の場所(unit1.cppの30行とか)を表示しようとしているみたいです。
クラスの宣言をcppに書いてあるのが4ファイルぐらいあるのがいけないのでしょうか?
cppが一つのはこの状況になりません。
みなさんはなったことありませんか?
2822:03/12/03 19:34
エディタの支援機能の
「識別子定義の表示」
だと思うんですけど
ヘルプだとチェックを外せば良いと書いてあるのですが
チェックボックスが「式評価」の下にあるようなのですが
一つ分の空白しかない。

ver6.0のパーソナルです。UPデートはしたと思います。
6秒待ちは本当にストレスがたまって悲しくなります。
2922:03/12/03 20:17
最終手段としてレジスタをいじりました。
起動してない状態で
ビルダーのCode InsightのDeclaration Information(直訳で宣言情報)を
falseにすることにより解決しました。
いじることによる悪い作用はなさそうです。

やっとストレスから開放されます。
ひとりで騒いでしまってすいませんでした。
30 :03/12/03 22:34
ボーランドC++personalの購入を検討しています。グラフィックを描きたいのですが、できますでしょうか?
>>30
そんなものはボーランドでは作ってなかったと思ったが?
Borland C++ Builder のpersonal版なら可能。
ただし、当然だが必要なコードは自分で書く必要がある。
3230:03/12/03 22:49
>>31
レスありがとうございます。
そのコンパイラです。これで購入にふみきれます。
>>30
予算があるならProfessional買った方がいいかも。
ListViewやTreeViewの編集時にInplaceEditが表示されますが、
表示される位置を変えたりすることはできるでしょうか…
3530:03/12/03 23:09
>>33
他のソフトと組み合わせて使うのであれば
高い方を買う必要があるのかと思いました。
他にも安いなりの理由があるのでしょうか?
>>35
Personalの問題点:
・ライセンスが非商用利用限定
・VCLソースがない
・デバッガが貧弱
あたり。
あと、グラフィック周りやるなら
・インラインアセンブラが書けない
のも影響する予感。
(もっともdcc32はインラインアセンブラ使えるので、アセンブラ使うところだけPascalで書けばtasmなくても何とかなるが)


あと、今だとPro版が安くなってるというのも‥‥
VCLクラス派生させる時にソースがないのは意外と不便です。
まともなドキュメント付けてください。おながいします。
3735:03/12/03 23:34
>>36
参考情報ありがとうございます。
自分はC言語だけ使えればとりあえず大丈夫ですので、
やっぱりpersonalにします。商売目的でもないです。
38デフォルトの名無しさん:03/12/04 00:05
うちにもDMきますた。
C++Builder5Professional -> C++Builder6Professional 25,200円
とりあえず5で満足してるし、6は出たときバグ多いって聞いたし、機能的にも新規性が見えなかったし
って訳で今だに5を使い続けています。
7が出たら即購入のつもりなのですが、そろそろ6も安定してきたのではないかとか思うし
7はまだしばらく出ないのではないかなとか色々考えたりして、
5->6って今の時期に、意味ありでしょうか?
7まで待つ予定がちょっと揺れてます。
つまり何だ。7以降が出るかどうかの問題だな。
40デフォルトの名無しさん:03/12/04 00:52
すいません、本来PageControlのタブを使って切り替えを行いたかったところで、
うまくPageControlが使えないことに気づきました。

説明がややこしいのでわかりやすく画像でまとめてみました。

http://cgi.members.interq.or.jp/www1/q-mail/gh/img-box/img20031204005107.gif

このような場合どうしたらいいのかアドバイス頂けないでしょうか?
よろしくお願いします。
4140:03/12/04 00:54
あ、(3)のページコントロールを使ったら、というのは画像の中の緑のパネル内で、ということです。
すいません。
>>40
だからよぉ、各PanelのALignmentがどうなってて、どこにPageControl使って、
それとToolBarがどういう関係になってるのか的確に示してくれなかったら
だれも何も言えんがな。

ただし、説明したとして、それに回答してくれる人間がいるかどうかは別問題だけどな。
>40は、コンテナ内で複数のコントロールが存在する場合のAlignの意味を理解していないものと思われ。
4440:03/12/04 01:32
失礼しました。
補足の画像をあげてみました。

http://cgi.members.interq.or.jp/www1/q-mail/gh/img-box/img20031204013137.gif
>>44
それを見るかぎりでは問題ない。
よって問題があるのはコード。
つか、最初からコードは晒してくれないと。
情報を小出しにする質問者は歓迎されないよ。気をつけるべし。

なお、コントロールを出したり隠したりしたい場合は、それが乗ってる
コンテナのVisibleを切替えるのが普通。
>>44の例だとToolBarをPanel2から出した上でPanel2->Visibleを
切替えるという手もある。
4640:03/12/04 02:39
>>45
要領の悪い質問で申し訳ありません。
レスを拝見して、

ToolBarをPanel2から出す → 出したToolBarをPanel3の中に入れてそのToolBarのAlignをLeftに変える

これで上手いこといきました。コントロールの表示もWidthをいじるよりVisibleをいじった方が楽ですね。
どうもありがとうございます!

47デフォルトの名無しさん:03/12/04 11:45
TTableのFilterでTDateTIme型の月のみで絞り込みをするにはどう記述すればいいのでしょうか?
48デフォルトの名無しさん:03/12/04 22:30
どうか教えてください。
MDIで画像ビューアのようなものをつくっています。

子ウィンドウに対して開いた画像を表示しているのですが、
開いたときやズームをしたときに子ウィンドウを画像の大きさに合わせたいと
考えています。
それで、
フォームにスクロールボックスとペイントボックスを貼った状態で画像をペイ
ントボックスに描画できるようにロードし、

int w = MainBMP->Width;
int h = MainBMP->Height;

// ペイントボックスの大きさを変える
MainPaintBox->Width = w;
MainPaintBox->Height = h;
// ウィンドウの大きさを変える
ClientWidth = w;
ClientHeight = h;

としているのですが、ウィンドウと画像をちょうどの大きさに合わせている筈
なのに
スクロールバーが表示された状態になってしまいます。
微妙な差なのかと思いましたがそうでもないようです。

原因がわかるかたおられましたらどうかお教えくださいませ。
ヘタレな質問でもうしわけないですがコンポーネントを配列みたいに扱いたいのですがどのようにしたらよいです
か?(表現が変かもしれませんが)
Image[a] みたいな感じで。
TImage* Image[10];
for (int i=0; i<10; i++)
 Image[i] = new TImage(this);
>>50
サンクス
>>48
亀レスだけど、たんにScrollBoxの余白分だと思う。
いまちょいと試してみたら、上下左右2pix必要としますね。
だからClientWidth = w+4; ClientHeight = h+4; でちょうど。
53デフォルトの名無しさん:03/12/05 10:53
CBuilderからDAOを操作する方法を教えてください
54デフォルトの名無しさん:03/12/05 14:11
ソースとヘッダーを両方表示したいのですが
どうすればいいのですか?
ver5の時はできたのですがver6だと片方表示すると
もう片方が表示できません。
ソースから必要なものだけヘッダーに移すのがやりづらいので
教えてください。ヘルプなどを探しても見つけられませんでした。
TCollection、TCollectionItemについて質問なんですが

class TMyItem : public TCollectionItem
{
public:
void* Data; // Bitmapを挿す
AnsiString Caption;
int Height;
int Width;
__fastcall ~TMyItem(); // Dataで挿してるBitmapを削除
};

class TMyCollection : public TCollection
{
public:
TMyCollection(TMetaClass* Class) : TCollection(Class) { }
__fastcall ~TMyCollection();
TMyItem* Add() { return (TMyItem*)TCollection::Add() };
};

な感じのクラスで、
TMyItem* Item;
TMyCollection* Collection = new TMyCollection(Item->ClassType());
Item = Collection->Add();

とやりたいんですが、TCollection::Add()で例外が。
どうすりゃ動くんでしょ。分かる方ヘルプを…たのんます。
56デフォルトの名無しさん:03/12/05 14:44
>>54
Ctrl+F6
57デフォルトの名無しさん:03/12/05 15:55
>>56
やってみましたが切り替えるだけで
同時に表示されませんけど
>>57
右クリックから「別の編集ウィンドウを開く」
59デフォルトの名無しさん:03/12/05 16:21
>>54
俺5使ってるが同時になんてやりかたわからんぞw
Ctrl+F6で別タブでやってっが、
絶対昔やったときは同時に表示できたって。
4か5.5だと思うけど。
同時に表示できないと使いづらくありませんか?
61デフォルトの名無しさん:03/12/05 18:37
いや全然もうCtrl+TabやCtrl+Shift+Tabに慣れた
62デフォルトの名無しさん:03/12/05 23:03


★★★★★常時接続の方におすすめビジネス★★★★★

1日二時間ネットを利用する人だと1ヶ月20000円は稼げます。

ネットサーフィン中に広告バナーを表示させているけでお金になります。
ネットサーフィンだけでなくワープロソフトやホームページビルダーなどを使って
お仕事していてもバナーを表示させていれば課金されます。
広告バーの使用時間は無制限。極端なことを言えば、1日24時間稼動させてもOK。

紹介制度も8段階あり頑張れば1ヶ月50万以上も可能です。もちろん登録も無料。
今までクリック保証のビジネスやメール受信をしましたがこれが一番お金になりました。

英語が苦手な方もホームペーシに解り易く登録方法を載せましたので登録できると思います。
ぜひ登録してみてください。確実に稼げます。

http://members.goo.ne.jp/home/taizou326

6355:03/12/06 04:14
自己解決しました。
×TMyCollection(TMetaClass* Class) : TCollection(Class) { }
○TMyCollection() : TCollection(__classid(TMyItem)) { }


6448:03/12/06 14:34
>>52
有り難う御座います。
きちんとあうように出来ました。
ちょっとした余白が必要だったのですね。
助かりましたです。
>>60
5までは、.cppと.hが別タブだったと思う。
6ではインクルードガードのマクロ変数を書き換えちゃうと別タブになるみたいです。
>>65
#ifndefとかをコメントアウトとか名前変えても別タブになりません。
ユニットだからかひとまとめになってるのね。
ヘルプの説明見てもガードをいじればよさそうなのだができませんでした。
6766:03/12/06 20:10
Unit2にを、ヘッダーガードをいじってcppファイル形式で
保存して開きなおししたら分けられました。
Unit2にもとのヘッダーガードをつけて
ユニットで保存すると元にも出るみたいです。

Unit1は、できないみたいですね。一応解決しました。
68デフォルトの名無しさん:03/12/08 11:47
DBで質問

テーブルが2つある場合に
DataSourceとTableがある場合に
テーブル1つにDataSourceとTableとしたほうがいいのか、
それともDataSourceとTableは1つづつでTableのTableNameを変えてやったほうがいいのか
そのプログラムのアレとかによって変わってくるかもですが
一般的にはどっちでやるものでしょうか?
69デフォルトの名無しさん:03/12/08 21:04
Builder Entepriseのトライアルのキーが何回申し込んでも送られてこない。
なぜだ。
C++BuilderEnterprise 36万円を買うとしたら
送料とかでぶっちゃけどんくらい掛かる?
71デフォルトの名無しさん:03/12/09 09:57
コマンドラインで、プログラムを実行するオプションって何でしょうか?
よろしくお願いします。m(_ _)m
>>71
質問の意味が分かりません。
頭を下げる前に明確な表現で質問してください。
>>72
失礼しました。
C++Builder5で、C:\CBuilder5\Bin\bcb.exe C:\Test.bpr のようしたものを
実行すると、C++Builderが立ち上がり Test.bprのプロジェクトが、読み込まれ
ます。その後、実行させるには、どのようなコマンドラインの指示をすれば、
いいでしょうか?さらにm(_ _)m
BCB6 PersonalのShellTreeView/ListView/ComboBoxなんですが、
ソートが変というかうまくされていない感じです。
ソース見てもよくわからなかったのでどなたか原因判明or修正できる方いたらお願いしたいです…
75デフォルトの名無しさん:03/12/09 22:49
プラグイン機能を持たせるようなアプリを作成したいのですが、良い意見はないですか?
ファイルをとあるディレクトリに入れるとアプリの機能が増えるような・・・
>>75
SPI_API.TXTでも読んどけ
>>73
ヘルプを見るかぎりでは、ビルドしたりデバッガ呼び出したりは出来るみたいだが
「実行させる」ってのは出来なさそう。

>>74
だからさ、どう変なのか書いてよ。ただ「変だ」じゃあんたが勘違いしてるだけかもしれんし
検証してみる気にはなれない。

>>75
SPIもそうだが、普通、DLLとして実装するケースが多いと思う。
というか他の手を考えるのは大変だ。
78デフォルトの名無しさん:03/12/10 11:31
DLLでアレしたらLoadLibraryはいいがGetProcAddressでエラーになる
なんとかしてくれ
>>78
エラーの内容も書かない独り言はご遠慮ください。
8074:03/12/10 12:15
>>77
すみません不足でした。

Delphi 6の方のコンポだと大丈夫なんですが、
例えばマイコンピュータを開くとエクスプローラでのドライブ順にソートした状態になります。
本来はフォームに貼り付けた状態でこうなるはずなんですが、
これがTextの値順でソートされている感じです。
コンボボックスについてはソート周りのプロパティやメソッドが見つからなく、
他の二つもプロパティいろいろ弄ったんですが解決できなかったので質問させて頂きました。

Delphiのコンポを流用する、ってのが一番楽かもしれないですが…
>>80
すまんが>>80も意味不明だ。何を言っているか全く分からん。
1つだけ言えることはShellTreeViewはおれのBCB6Proにはついてないってことだけ。
82デフォルトの名無しさん:03/12/10 15:04
初心者丸出しの質問で申し訳ないのですが、
CPPファイルの頭の
> TFormMain *FormMain;
との部分で、
> Declaration syntax error
というエラーが出るようになってしまいました。

最初はなんともなかったのに、クラスを追加した途端出てきて、
そのクラスを削除しても直りません。
どのような原因が考えられるでしょうか?

よろしくお願いします。
8374:03/12/10 15:18
むぅ…すみません説明へぼくて…
要はちゃんとエクスプローラみたいにアイテムが並んでくれないというだけです…
コンポはPersonalだと $(BCB)\Examples\ShellControls にあるんですが…
Proで無いってことあるのかな…
とりあえずdelphiのコンポ流用でしのぎます…

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

かなりバギーではっきりいって使い物にならないので
素直に別のコンポを探すか自分で組みなさい。
>>86
どもです。やっぱ使えないですか…
途中まで作ってはあるのでやっぱりそっちを完成させることにします。
delphiの方のは正常に動くってのが腑に落ちないですが、気にしないことにします。
ありがとうございました。
8873:03/12/11 09:32
>>77
やっぱりないみたいですね・・・
VB だと/run があるので、なにかあると思ったんですが
残念です。
超既出かもしれないんですが、TEditやTScrollbarなどのメンバ(TextやPosition)を
関数にポインタで渡して書き換えることはできないんでしょうか。
前者の場合、Ansistringという良くわからない型のためにchar *に渡せないし、
後者の場合、const int型ということで、&(Scrollbar1->Position)などでアドレス渡ししても
変更は受け付けてくれないみたいです。
なんかソースがだら長くなって遺憾だなあとおもうのですが・・・
なんか良い方法はないでしょうか? C++は初心者ということでお願いします。
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
>>90
「extern "C"」でくくってみるとか……

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

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

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

Edit1->Text=*URL;

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

Variant *URL から「\」の字を失わないでAnsiStringにキャストする良い方法ってないんでしょうか?
>>105
試してみたが、ローカルのファイルパスとUNCどちらの場合も問題はない。
まさかとは思うがURLを渡して「\がない」と言っているわけではないな?
107105:03/12/13 18:04
>>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)は元のページのものです。
同一ページにアンカー貼ると自動的に付加されるようですね。当たり前か。
で、情報として利用したい「#」以後のパスはご覧のとおり\が消えちゃってます…。

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

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

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

プロジェクト内のユニットすべての総行数は表示できませんか?
ソースどのくらいと聞かれたときにしょうがないから自分足してます。
コンパイルのときに表示される行数はVCLとか<math.h>を含めた
行数みたいですから自分が書いた文だけ知りたいのですけど。
>>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のオフィシャル・コースウェア
と重なる内容だったので買わなかった。
>>130
サンクス!
C++Builder 6の本ばかり探していたので
今度、Delphiの本も見てみます。
Builderの書籍って実践的なプログラミング内容のものってないんですよねぇ。
ページ数はいっぱいで分厚くても操作マニュアルではね・・・
133112:03/12/14 14:58
>>123
>>124
ありがとうございます、できました!
うっかりしてました。
>>130が書いてるけど、Delphi本を探した方がいいと思う。
C++を書けるならDelphiを読むのは難しいことではないし、
VCLソースを読むためにもDelphiは必須だから読めるように
なっておくとその差は大きい。

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

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

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

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

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

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

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

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

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

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

ありがとうございました
>>148
師匠、ご無沙汰してます。
>>151
そんなのがあるのか今度つかってみよ
154138:03/12/17 06:07
プロファイラが見つかって
どうにか使いこなしてボトルネックも見えてきました
(やっぱり思わぬ所で時間を取ってた、というのが見つかりました)

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でも覗いてみよう。。。

# なんか独り言みたい
155138:03/12/17 06:33
おお!
ちゃんとVCLがサポートしているじゃないか<仮想リストビュー
TListView の OwnerData を true にして
OnData、OnDataFind、OnDataHint、OnDataStateChangeの記述、と
>ListViewに4000件程度のデータを登録する
>という極端な状況を想定しているのですが

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

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

Win2000を使っているのですが、環境変数でPathの二重登録をして
場合によってmakeを使い分ける方法を教えてください。
>>151
ん?作者の宣伝?
159デフォルトの名無しさん:03/12/17 10:36
TScrollBarってフォーカスもってるせいか自分にフォーカスがあると
点滅しているのですが、この点滅をやめる方法を教えてください。
TScrollBarにフォーカスがある状態でね
160デフォルトの名無しさん:03/12/17 11:52
漢字対応のstrtokがほすぃ(゚д゚)
>>160
文字列をwchar_t*に変換してwcstokではだめ?
という自分はそんなときもっぱらboost::tokenizerを使うけど。
162 :03/12/17 14:08
MD5値を算出するにはどうすればいいのでしょうか?
164デフォルトの名無しさん:03/12/17 14:26
おめーらさっさと>>159教えれやボケが
165 :03/12/17 14:34
>>163速レス感謝!
ご紹介のサイトを拝見しましたが僕の実力では理解困難です(´・ω・`)
MD5を簡単に算出できるVCLかAPIなどがあれば助かるのですが・・・
>>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
167 :03/12/17 15:14
>>166
実装のサイトとても参考になります。どうしようもないヘタレなのでまた分からないことがあったらよろしくお願いします。
168 :03/12/17 17:16
>>166
たった今MD5値取得に成功しました!!ありがとうございました。
169デフォルトの名無しさん:03/12/17 22:40
質問です。

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

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

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

ボタンを1つ置いて簡単な処理を記述してるんですが、
ボタンをエンターキーを押すと、2回押すごとに例外エラーが発生します。
マウスでクリック連打したときは何もおこらないのに・・・
>>181
PC再起動して常駐ソフトを含め一切のアプリを起動しない状態でインストールする。
つか、こらWindowsの初歩だろ。この板で聞くことじゃない。

>>182
それは貴方が何か間違いをしでかしてるからです。
本気でアドバイスが欲しかったら自分の書いたコードを晒しなさい。
DBChartの使い方が詳しく記載されているページってないでしょうか?
builder-MLでも値を直接x,y軸に設定しているものはあったんですが、
DBの値を設定する方法がわかりませんでした。
>>184
とりあえずこんなのがあるけど。
http://www.borland.co.jp/qanda/delphi/d0003062.html
>>185さん

おおおっ!ありがとうございます。参考にしてみます。
187デフォルトの名無しさん:03/12/19 19:07
BCB6で2次元バーコードを使いたいのですが、実現する方法がわかりません。
BCBには標準搭載していなさそうです。市販のコンポーネントを買えば出来るのでしょうか?
もし、市販のコンポーネントを使わないと実現できない場合は、製品名を教えていただけるとうれしいです。
BCBは最近使い始めたばかりで何もわかりません。ご存知の方よろしくご指導お願いします。
>>187
http://www.vector.co.jp/soft/win95/writing/se261885.html
表示だけなら。
解読用コンポーネントは知らん。

ちなみにQRコード開発元のデンソーにいけば
QRコードの詳細なデータがあるから
気合があれば自力で組むこともできる
バーコード OCX でググったら?
BCBで作ったソフトがあるんですが、BCBをインストールしているパソコンだと
問題なく実行できるんですが、インストールしてないパソコンだとdllがないって
エラーがでて実行できません。自作ソフトでどのdllが必要なのか調べる方法は
ありますか?
191デフォルトの名無しさん:03/12/19 21:41
Microsoft dependency walkerを使いたまえ
>>191
へぇー、こんなんあるんだ。しらなんだよ。
つか、>>190は、ランタイム使わなきゃいいんじゃ? という回答もあるがな。
>>190
1)[プロジェクト] - [オプション] - [パッケージ] - [実行時パッケージを使って構築] チェックをはずす
2)[プロジェクト] - [オプション] - [リンカ] - [リンク] - [ダイナミックRTLを使用] チェックをはずす
じゃないの?サイズでかくなるけど。
>>191
サンクス。
>>192-193
サイズが大きくなるので小さくすます方法はないかなと思ったわけです。
>>194
ツールが見つかったようなので参考程度に。

愚直に探すならBCBインストール済みとインストールしてないPCを1台ずつ準備して

インストールしていないPCでプログラム実行
→足りないDLLの名前が出るのでインストール済みのPCからコピペ

これを実行できるまで繰り返す。

というかBCBのヘルプかマニュアルに配布可能な共有DLL一覧があったはず。
ListViewのSmallImagesとLargeImagesにそれぞれImageList1, 2がセットされていて、
オーバーレイのイメージを大小それぞれImageList3, 4に用意してあるとします。
このときオーバーレイイメージにImageList3, 4のイメージを使うことはできますでしょうか
197デフォルトの名無しさん:03/12/20 19:57
フリーのボーランドのC++コンパイラーをインストールしようとしたら下
のような指示がでたんですが。。。まったくやり方が分かりません(bin
ディレクトリの操作の説明がまったく分からないんです。。。)。
だれかお願いします教えてください!!ほとんど知識がないので馬鹿な質
問だとは承知ですが先輩方本当にお願い致します。

コマンドラインツールのインストールと実行
-----------------------------------------------

1. freecommandlinetools.exe を実行します。無料の C++Builder 5
コマンドラインツール開発システムをインストールしたいドライブと
フォルダを選択します。

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"
>>197
コンパイラの環境設定から読んでみて
http://www.mgs2.com/online.lesson/language.c/02.html
>>197
専用スレあるよ。
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
200デフォルトの名無しさん:03/12/20 20:41
ありがとうございます!!これからやってみます!!
201196:03/12/20 22:05
カスタムドローでどうにかそれっぽくなりました。
ViewStyleがvsReportじゃないとOnDrawItemはこないんですね…
202デフォルトの名無しさん:03/12/21 11:52
BCB6で、オーディオソフトを作っているのですが、
以下のAPIがうまく使えません。

waveOutOpen(&hwo,
nDevId,
&wfx,
(DWORD)waveOutProc ,
(DWORD)this ,
CALLBACK_FUNCTION);

第4引数で、waveOutProcというコールバック関数を指定しているのですが、
ここでコンパイルが通りません。
エラー内容は、
「メンバー関数は呼び出すかそのアドレスをとらなければならない」
です。

ちなみに、waveOutProcの宣言はこんな感じです。
void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);

試しに、
(DWORD)&waveOutProc ,
としてみると、
「'void (__stdcall * (_closure )(void *,unsigned int,unsigned long,unsigned long,unsigned long))(void *,unsigned int,unsigned long,unsigned long,unsigned long)' から 'unsigned long' へのキャストはできない」
というエラーがでます。

どう書けばよいでしょう?
204202:03/12/21 12:32
>>203 ありがとうございます。staticにして解決できそうです。
>>202
もし、普通のプレイヤー作ってるならDirectShow使った方が楽だぞ
>>205
webで公開されているフィルタなどのアルゴリズムを試して遊ぶのに、
土台にするアプリを作ってます。
DirectShowは、難しそうなのでとりあえず置いておこうと思ってました。
今の知識では無理っぽいです。
207デフォルトの名無しさん:03/12/21 15:01
  ∧ ∧
 (・Д・ ,,) { ………。 )
  (u u__)〜
>>207
E2188 式の構文エラー
E2379 ステートメントにセミコロン(;)がない
>>204
googleでポインタ示されるのは、答えてくれてるんじゃなくて。
「googleで検索しろよカス消えろ」って意味なんだよ。
やれやれ・・・カルシウムが足りない方が居られますね。
Q: 23歳男性です。最近ちょっとしたことでイライラすると友人に相談したところ、
アスパラCAというカルシウムの薬をすすめられました。成分は天然に存在する
カルシウムなので、副作用もなく安心ということなのですが、いかがなものでしょうか。

A: おすすめできません。飲まない方がいいと思います。
 第一に、イライラとカルシウムは関係ありません。なぜかイライラするのは
カルシウムが足りないせいだという俗説がありますが、根拠がありません。
おそらくは、神経細胞の活動にはカルシウムイオンが重要な役割を持っていることから、
誰かがそれならカルシウムを摂れば神経が安定すると考えたのかもしれません。
これは全く意味がありません。エセ科学の見本のようなものです。
 第二に、カルシウムを摂りすぎると尿管結石や腎臓結石の原因になります。
アスパラCAは、何かの病気のためにカルシウムが不足している場合(たとえば
副甲状腺の病気)の薬で、それ以外の時に飲むのは意味がないばかりかかえ
って害になります。どんな薬でも、「副作用がない」といわれた場合は詐欺であると
考えるべきです。その薬が自然の成分によるものであっても同じことです。
212187:03/12/22 09:26
>>188-189
ありがとうございます。
試してみます。
213sora:03/12/22 10:02
こんにちは。
今回OSをWin95からWinXPに変更したのですが、
C++Builder3とImageKit4で作成したプログラムを
C++Builder6とImageKit6にバージョンアップしようとしたのですが、
C++Builder6とImageKit6はサポートされないという事でした。
そこでImageKitに替わるC++Builder用の画像処理用支援ツールを探しています。

ぱっ!と思い付いたのがLaedToolsだったのですが、どうもC++Builderには対応していないようです。

そこでどなたかC++Builder6に対応した画像処理用の外部コンポーネントツールをご存知の方が居ましたら教えて下さい。

やりたい事は、スキャナで取りこんだイメージをマウスで任意範囲選択し、その部分イメージを切り出し、
別イメージとしてDBに保存すると言う機能です。

Web等で検索したのですが、中々見つかりません。
どうそ宜しくお願いします。


すいません質問です。
TComboBoxのアイテムに現行のTComboBoxのTextを追加する際、
すでに同一のものがある場合はかぶってるものを全て削除してるんですが、
その削除の部分をwhile文でこんな風に書いてます。

while(ComboBox1->Items->IndexOf(ComboBox1->Text) !=-1){
ComboBox1->Items->Delete(ComboBox1->Items->IndexOf(ComboBox1->Text);
};

こんな感じで、自分が書くと同じものが二度出てきたりかなり不細工になっちゃうんですが、
マクロ使ったりコードの行数をこれ以上増やさないで(つまりwhile文と中の一行だけ)、もっと
エレガントに書けちゃったりする方法があれば教えてもらえないでしょうか。

いや、TComboBox関係ないC++の基本みたいなことを聞いてお恥ずかしいかぎりですが
なんか条件制御文の左項を表す記号「%d」(適当)、とかがあればなぁと思ったんですが。
215デフォルトの名無しさん:03/12/23 10:29
最近C++使ってないけど、こんな書き方できなかったっけ?
while((int ix = ComboBox1->Items->IndexOf(ComboBox1->Text) )!=-1){
ComboBox1->Items->Delete(ix);
};
おれも>215の書き方するな
・・・っていうかカッコの数が合っていないぞ>214
>>215をよくみたら、それはエラーと思われ。

int ix;
while((ix=ComboBox1->Items->IndexOf(ComboBox1->Text) )!=-1){
ComboBox1->Items->Delete(ix);
};
でよいと思われ。
217デフォルトの名無しさん:03/12/23 12:35
C++BuilderXって、Windows以外のにMacのプログラムも組めるのでしょうか?
218デフォルトの名無しさん:03/12/23 15:21
>>215
>>216
あぁ、条件制御の中ってカッコでくくれば if((a=b)==c) みたいな書き方できたんですね。
これは知りませんでした、かつ自分にはかなり有用で助かります。

あと先ほどからどうしても理解できないことがあるんですが、
下のコードでやると項目数が二つ以上ある場合、コンボボックスのTextが消えてしまうんですが、
これってどういうことなんでしょうか。

TComboBoxのTextってプルダウンのItemsとは別個のもののはずですよね?
そんなものを削除した憶えはないんですが…。
自分が何か勘違いしてるんだとは思うんですが、どこを間違っているのやら。


(現在ComboBox1に表示されてる文字列をアイテム先頭に追加。TButtonのOnClickに書いてます)
int ix;
AnsiString ComboText=ComboBox1->Text;
if ( ComboText!="" ){
 while((ix=ComboBox1->Items->IndexOf(ComboText))!=-1){
  ComboBox1->Items->Delete(ix);
 };
ComboBox1->Items->Insert(0, ComboText );
}
219デフォルトの名無しさん:03/12/23 19:07
MCIで多重音声再生できますか?
「へぇ〜」ボタン(趣味で)作りたいんだけど何かいい方法は?
220デフォルトの名無しさん:03/12/23 19:42
すいません、OpenDialogでフォルダだけを選択できるようにしたいんですが、
どうやってやるんでしょうか。
拡張子でフィルターかけたりする方法はわかるんですが、フォルダが選択できなくて…。
221デフォルトの名無しさん:03/12/23 22:24
質問です。
初期設定用のダイアログとしてTPagesDlgを使ってます。

で、親元のTFormからShowModalで呼ばれてダイアログ開いた時に、
初期設定用ということですでに設定されてる値は
TMemIniFileのReadString()とかで呼び込んできますよね。

でもIniファイルを読み込むって作業はアプリケーション立ち上げた時に行っているので、
TPagesDlgに同じようなのをもう一度書くのもメンドウです。

なのでForm1ですでに読み込んでグローバル変数にしているIni値をそのまま使おうと
考えたんですが、哀しいことに書き方がよくわかりませんでした…


//TPagesDlg内にて
//変数FolderPathはForm1側のグローバル変数

Edit1->Text=Form1::FolderPath;

[エラー]Form1がクラス名または名前空間名ではない


こんな感じでうまくいきません。
この場合どのように書いたら他フォームのグローバル変数を受け取ることが出来るんでしょうか?
>>221
普通の書き方は多分
//Form1.h
extern AnsiString FolderPath;

//Form1.cpp
AnsiString FolderPath; //実体の定義

んでFolderPathを使いたいユニットでForm1.hをincludeする。
ただし、使用する変数の数が少ないなら引数で渡すことを考えたほうがいい。
>>222
結構手続きがいるんですねー。でもちゃんと出来ましたです。
どうもありがとうございます。
>>223
いや、ほんといえば、includeを使わず直接使う側のユニットに
extern AnsiString FolderPath; って定義してもいいんだけど
それは推奨されないってこと(実体がどこにあるか分からなくなる)。

でお薦めはやはりTPagesDlgを呼び出すための関数を定義すること。
これなら引数も戻値も使えるし、なにより使い回しがしやすくなる。
225デフォルトの名無しさん:03/12/24 03:13
すいません、CppWebBrowserを動的に作成してすでに作ってあるOnNavigateComplete2イベントを
くっつけようとしてるんですが、上手くいきません。
同じようにくっつけたOnNewWindow2イベントとかOnTitleChangeイベントはエラー無しなのに
どういうことなんでしょうか。

CppWebBrowser->OnNavigateComplete2 = CppWebBrowser1NavigateComplete2;

「コンパイルエラー内容」
'void (_fastcall * (_closure )(TObject *,IDispatch *,Variant *))(TObject *,IDispatch *,Variant *)' 型は
'void (_fastcall * (_closure )(TObject *,IDispatch *,tagVARIANT *))(TObject *,IDispatch *,tagVARIANT *)' 型に変換できない


一応書いておくとこのコード自体は別のCppWebBrowserのOnNewWindowイベントに書いてます。
まぁ関係ないとは思いますが。

どなたか解決法がわかる方、よろしくお願いします。、
>>225
型が違うってコンパイラーが言ってくれてるじゃん。
>>226
いや、型が違うと言われてもこのイベントのデフォルトの定義のままなんですけど…。
実際のイベントみても、こんな感じで。

void __fastcall TForm1::CppWebBrowser1NavigateComplete2(TObject *Sender,LPDISPATCH pDisp, Variant *URL)

これで何故型が違うと言われるのかわからないんですが。
自分じゃちょっとわからないんですが、他の部分に問題があるかもしれないんで、
一応もうちょっとコード出してみます。


TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(this);
CppWebBrowser->Align=alClient;
CppWebBrowser->OnNewWindow2 = CppWebBrowser1NewWindow2;
CppWebBrowser->OnNavigateComplete2 = CppWebBrowser1NavigateComplete2;//コレだけがエラー
CppWebBrowser->OnTitleChange = CppWebBrowser1TitleChange;
CppWebBrowser->TOleControl::Parent = TabSheet;
TVariantだよん。
>>225
実験してないけど、多分キャストしてしまえば通るはず。
最後の引数がIDEのつくるイベントハンドラはVariant*形なのに
TCppWebBrowserの定義ではTVariant型になっているのが原因。
多分古いバージョンとの移植性を保つための処置だと思うけど。

なんか以前も別のコンポでこういう事があったような気がする。
よく覚えてないけど。
230225:03/12/24 08:55
>>229
うー、ありがとうございます。
しかし、場数も全然足りないしこういうことははじめてなので、
どこをどうキャストすればいいのかわからないんですじゃよ…
231 :03/12/24 14:47
>>230
CppWebBrowser->OnNavigateComplete2
= (TCppWebBrowserNavigateComplete2)&CppWebBrowser1NavigateComplete2;
>>232
ありがとうございます。文字列のキャストくらいしか知らない自分には不可思議なキャストですが、
同じような局面でガンガン応用したいと思います。
>>233
文字列も何も、キャストはみんな同じなんだが・・・。
C++のキャストはいろいろバラエティがあるけど。
235デフォルトの名無しさん:03/12/25 02:43
C++Builderでコンソールアプリを作成しようとしてます。
RS232Cの送受信を簡単にできないかとおもってfopenあたりで
COMポートを開いてみたのですが、送信は簡単にできたのです
が受信がうまく反応しませんでした。バッファをなしとかにしてみ
てもだめでした。

つぎにopenあたりで開いてみると、送信、受信できるのですが、
受信文字があるかどうかをチェックする方法がわかりません
&うまくいきませんでした。
1バイト読み込みをすると、読み込みにいったまま1バイト受信
するまでライブラリにいったままになってしまいます。

本質的にはC++Builderの質問ではないのかもしれないのです
が、fopenまたはopenあたりで受信文字数を検出することはで
きないでしょうか?
実行ファイルのリソースからアイコンを抽出するツールを作っているんですが、どうもうまく動いてくれません。
アイコングループ毎の初めのアイコンの情報は多分ちゃんと取得できているのですが、
その後のアイコンの情報がうまく取得できません(取得される値が明らかに変)。
使用しているリソースヘッダの構造体はMSDNに載っていたものと、
他にも調べた物と合わせたので大丈夫だと思うんですが…

とりあえず、実行ファイルのリソースからアイコングループを検索、
そこから得た情報を列挙するものを作成しました。
よろしければ見て頂いて気付く点があればアドバイスお願いしたいです。
BCB6 personalで作成しましたが、多少古くても問題ないと思います…

ttp://xtp0001.s3.x-beat.com/cgi-bin/up/source/Sonata_5759.zip
237236:03/12/25 20:14
すみませんパスかけたの忘れてました bcb です
238デフォルトの名無しさん:03/12/25 20:51
おいもまいら!
ぷろORパーソナル どっち使っているんですか?
すたんだーど
240デフォルトの名無しさん:03/12/25 21:46
つ ま ん ね ー
>>235

普通の C ライブラリでやろうとするのは少し無理があるように思われ。
Windows の API を叩く方向で考えて下さいな。

CreateFile とか、ReadFile、WriteFile といったファイル入出力 API の他に
シリアル通信用の API があるから、そっちも使わないと

「受信データが無い時に受信しようとするとそれっきりになる」

という現象を回避する事はできませんよ。

あとは Windows API スレの住人の方々に尋ねてみて下され。
http://pc2.2ch.net/test/read.cgi/tech/1069339866/
243デフォルトの名無しさん:03/12/25 22:52
スレ違いなのは承知ですが、、
C++ BuilderXを今使ってるのですが、Ctrl-Spaceでコード補間(補完?)してくれません。
ヘルプ見てもないようです。。確かC++ Builder5.0からコード補間ってありましたよね?
なんで退化するんだよぉー。コード補間がないとプログラムを書くのがつらいんじゃー。
スレ違いを承知で意味のない愚痴を並べてageるような香具師は氏ね。

Borland C++ BuilderX
http://pc2.2ch.net/test/read.cgi/tech/1065260556/l50
245235:03/12/26 02:25
>>241
ありがとうございます。
WindowsのAPIをたたく方向で考えるようにします。

>>242
会社のほうがファイルを何も持ち込んじゃいけないって
感じのところになっちゃって、その割には業務時間を使
わずRSの対応ツールがあったほうがいいって感じにな
り、普通のCライブラリならさっと組みあがるかなぁって
感じなので・・・

お教えいただいたAPI関連を自宅で使って見てパターン
を覚えて会社でやってみます。みなさんありがとう〜
246236:03/12/26 03:16
解決しました…
sizeof(構造体) と、構造体内のそれぞれの変数の型のサイズ合計に差があったせいで
ズレが生じていたみたいです。読み込み方も変えて、正確な値が取れるようになりました。
ソースも大して役に立つような物じゃないので消しますね
247243:03/12/26 07:14
>>244 殿
海鮮切手首吊り増す。
ム板にも冬厨がわくのか。ハァ
249sora:03/12/26 09:33
こんにちは。
再度ご質問します。
今回OSをWin95からWinXPに変更したのですが、
C++Builder3とImageKit4で作成したプログラムを
C++Builder6とImageKit6にバージョンアップしようとしたのですが、
C++Builder6とImageKit6はサポートされないという事でした。
そこでImageKitに替わるC++Builder用の画像処理用支援ツールを探しています。

ぱっ!と思い付いたのがLaedToolsだったのですが、どうもC++Builderには対応していないようです。

そこでどなたかC++Builder6に対応した画像処理用の外部コンポーネントツールをご存知の方が居ましたら教えて下さい。

やりたい事は、スキャナで取りこんだイメージをマウスで任意範囲選択し、その部分イメージを切り出し、
別イメージとしてDBに保存すると言う機能です。

Web等で検索したのですが、中々見つかりません。
どうそ宜しくお願いします。
C++Builder 6 verupの受付は今日でおしまいか‥。
未だに悩んでるのは私ぐらいなものか?
C++Builderって死滅しちゃうんですか?
252デフォルトの名無しさん:03/12/27 19:19
すいません
今CppWebBrowser1のBeforeNavigate2イベントの引数( Variant *URL)を使ってこれからジャンプする先の
URLを捕まえて、そのリンク先を書き換えてます。

でもhtmlのアンカータグa hrefのターゲットが_blankになっていた場合、
つまり新規タブの新規コンポCppwebBrowser2がターゲットになった場合のことなんですが、
その時の動作はというと

1)元のCppWebBrowser1のBeforeNavigate2は作動せず。(自身は変化しないから当たり前)
2)新規CppwebBrowser2のBeforeNavigate2の引数*URLには
  ジャンプ前のURL (CppWebBrowser1のURLアドレス) が代入されてしまう。

という結果になってしまいます。
TCppWebBrowserのイベント発生順序は
BeforeNavigate2→NewWindow2→NavigateComplete2
の順番で、NavigateComplete2ではもちろんジャンプ先URLを受け取れるんですが
それじゃ遅いので、なんとかhtmlが読み込まれる前にURLを捕まえたいです。

なんとかBeforeNavigate2かNewWindow2のどちらかで
ジャンプ先のURLを捕まえる方法をご教授くださいませんでしょうか。
よろしくお願いします
253250:03/12/27 23:17
あ〜、昨日は飲んでたらBCB6のことをすっかり忘れてしまってたよ(;´Д`)

まぁ、いいか‥
254デフォルトの名無しさん:03/12/28 01:40
すいません、単純な質問ですが、ToolBarでボタンを縦に並べるってどうやったらいいんでしょうか?
なんか前にインスペクタのStyle設定かなんかでそういう設定を見たような気がしたんですが、
今見たらToolBarにスタイル設定なんかありませんでした。
よろしくおねがします。
>>253

俺も悩んでたけど、結局見送った。
BuilderXの今後の展開も気になるし、LHもあるし。
第一今のBCB4減価償却してない!
アップグレード敬遠。
初期化とテンプレートの実装がヤだね。
MingW-gcc3.3.1でいくわ。杉本さんバイバーイって感じ。
258 :03/12/28 23:55
>>256
C++のコンパイラ、初期化とテンプレートがおかしいの?
具体的に教えてくれませんか?
C++BuilderでDirectX使おうと思っているんだけど、DelでDX使うよりは簡単?
260デフォルトの名無しさん:03/12/29 23:41
まだプログラミングをかじったばかりのころ、VC++を買ってしまった、、、
今思えばBCBにしとけば良かった (´Д⊂
261デフォルトの名無しさん:04/01/01 22:27
おめでとうございます

URLエンコードされた文字列をデコードする方法を探してリファレンスを見てると、
そのものズバリURLDecode( )って関数を見つけたので使ってみたんですが
未定義だと言われてコンパイルエラーが出てしまいます。

IdGlobal.pasっていうのが関係ありそうなんで、
ヘッダファイルとかcppの先頭で
#include "IdGlobal.pas"
みたいなことを書いてもオープン出来ませんと言われる始末…。

Googleで検索かけても情報が全然ないし、途方に暮れてしまいました。
どなたかURLDecodeの使い方、もしくは違う方法でのURLデコード方法などあれば
教えて頂けないでしょうか、よろしくお願いします…
>261
Indy の関数じゃないのかな?
263デフォルトの名無しさん:04/01/02 02:25
2つのTLabelコンポーネントの全部、または一部が重なっている時、どちらが前面に表示されるかは、
どのように決まるのでしょうか?
決定するプロパティなり、順番を入れ替えたり、指定したコンポーネントを
最前面に表示するメソッドを教えてください。
(Visibleをfalseにする訳にはいきません。一部のみが重なっている場合、両方を表示させたいので・・・)
>>262
ありがとうございます。色々試した結果
#include <HTTPProd.hpp>
#include <HTTPApp.hpp>
#include <IdComponent.hpp>
をヘッダに書けばデコード関数が動くみたいです。

どうもありがとうございます。
>>263
TControl::BringToFront

例えば
Label1->BringToFront();
266デフォルトの名無しさん:04/01/02 20:30
すいません、TComboBoxでボックスの中身を編集不可にしたいため、
スタイルの設定をopDownListにしてるんですが、
それをやるとデフォルトで入れてるTextが空になってしまいますよね。

編集不可にしつつ、デフォルトの状態でTextに文字を入れておくにはどうしたらいいんでしょうか?
スタイルを編集可能にしつつ、実行時に編集不能にするってのは、
どうかね?
>>267
だめですー、StyleをcsDropDownListに変更したとたんに
デフォルトのTextに入ってる文字列が飛んじゃいますー。とほ
>>268
csOwnerDrawVariableでどう?
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
>>269
だめですー。csOwnerDrawFixedにしてもダメでした。
しょうがないのでデフォルトの文字列をアイテムの一番先頭にして、実行時に
ComboBox->ItemIndex=0;

とやることで代用することになりそうです。

とここまでやって気づいたんですが、そんなことしないでも、インスペクタで初期値を指定できたようです…。

ただし編集不能といってもデリートボタンを押すとTextが空になってしまうので、
汎用的にOnChangeイベントにこんなコードを書くことで完璧になりました。

if(dynamic_cast<TComboBox*>(Sender)->Text.IsEmpty()==true )dynamic_cast<TComboBox*>(Sender)->ItemIndex=0;

おつきあいくださりどうもありがとうございました。
if (...IsEmpty() == true)
は、VCLを使うBCBでは非常によろしくないような
>>272
どういう意味?
詳しく教えていただけます?
274271:04/01/02 23:57
>>272
あぁ、自分もよくわかんないで使ってたんですが、、、
もうちょっと正当な書き方があるんでしょうか。
275デフォルトの名無しさん:04/01/03 04:37
プログラム初心者で趣味でやってます。
配列とかって動的に項目増やしたり項目数の調べたりするの面倒そうだし、
webでも詳しい使い方のってないので、代わりに全部TStringList使ってます。

これならBCBのレファレンスで詳しく使い方とかメソッドとか説明されてるんで安心。

…でも正直ちょっと不安です。
やっぱ何でもかんでもVCLばっかり使う(というかソレしか使えない)のってカッコ悪いですか?
>>275
TStringListを普通の配列に使うのは流石にやめれ。
std::vectorかTList使っておけと
漏れは構造体CSVに変換して
TStringListに格納して構造体配列の代わりに使ってた時期があるぞ。
当時は若かった…
278275:04/01/03 08:53
なんかvectorってのがカッコ良さげだったのでとりあえず、
StringList使ってたとこを全てvector式に置き換えて見ました。

しかし、ただひとつsort使ってるとこだけコンパイルエラーが出ます。
「'sort'は'std'のメンバーではない」
ごく単純なミスだとは思うものの上手く修正できないのでどなたか見て頂けないでしょうか。

cppファイル
#include <vector>

フォームのメンバ
std::vector<AnsiString> hoge;

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){

hoge.push_back("田中");
hoge.push_back("加藤");
hoge.push_back("江田島");
std::sort( hoge.begin(), hoge.end());

}
#include <algorithm>
280275:04/01/03 13:00
>>279
さんくす
何故若者は格好に拘るのだろう…
配列の末尾に追加するのにvectorのpush_back()とStringListのAdd()の速度を比較してみました。


AnsiString Tex="けっこう!君の手は犬のヨダレでベトベトだァ!それに荷物はさっそく召使に運んでもらう!";

int BeforeTime = Idglobal::GetTickCount();
for(int n=0;n<1000000;n++){
G_NameSearchPath.push_back(Tex);
}
int Time =Idglobal::GetTickCount() - BeforeTime;


int BeforeTime2 = Idglobal::GetTickCount();
for(int n=0;n<1000000;n++){
G_Source->Add(Tex);
}
int Time2 =Idglobal::GetTickCount() - BeforeTime2;

結果、ベクターの方のTimeは765、StringListの方のTime2は282でした。
頻繁に追加したりするには向いてないとは聞いてたもののベクター遅いっす…
>>282
ループ前にG_Sorce->reserve(1000000); してみ

つか、配列とリスト構造とその他の違いを勉強した方が良いとは思うが。
284デフォルトの名無しさん:04/01/05 02:25
質問です。
TCppWebBrowserのNavigateでwebページ読み込んだ後、
マウスホイールでくるくるとページをスクロールしようとしても出来ません。

一度TCppWebBrowser内をクリックしてやるとくるくるホイールでスクロール出来るようになるのですが、
二度手間というか、スマートじゃなくて困ってます。

TCppWebBrowserがアクティブ状態になっていないんだと考えて、
CppWebBrowser->SetFocus() とかやっても効かないのでどうしたらよいのかと。

どうかお知恵を貸して頂けないでしょうか。
>>284
TCppWebBrowserの機能ではできない。

フォーカスを当てる
http://hogehoge2001.at.infoseek.co.jp/note-delphi.html
Delphiでのコードだけど。
ADO Expressを使用してAccessに接続しようとしたのですが、出来ません。
ttp://www.borland.co.jp/cppbuilder/papers/ado/ado02.html
1.フォームにTADOConnectionコンポーネントを配置し、ConnectionStringプロパティで接続文字列を指定する。
ということなのですが、そもそも、ADOConnectionが何処にあるのか分かりません。。。
助けてください。
>>285
遅ればせながらありがとうございます。
なんとか出来そうですー
288デフォルトの名無しさん:04/01/06 08:40
すいません、PageControlに並んだTTabSheetを削除すると、
すぐ右隣のタブに強制的にアクティブが移りますよね。

そうではなく削除後のアクティブタブを自分で指定したいので、


TTabSheet *ActTabSheet =アクティブにしたいタブシート;
TTabSheet *DelTabSheet = 削除するタブシート;

DelTabSheet->PageControl=NULL;
delete TabSheet;
PageControl1->ActivePage=ActTabSheet;


といった風に書いてみると、確かに削除後に指定のタブシートがアクティブになるんですが、
その一瞬前にピョコっと削除したタブの右隣にあったタブにフォーカスが移ってしまいます。

この一瞬のピョコって動きがなんともみっともなくてイヤなのですが、
どう書けばこのピョコって動きなしに指定タブにアクティブを移せるんでせうか。
よろしくおねがいします。
ピョコっ
>>288

試していないのですが(もし試してもらえたなら結果をおしえてほしい)
「ピョコっと」なる所でWM_SETREDRAW を送って描画を止めてみたらどうだろう。
291デフォルトの名無しさん:04/01/06 17:13
BCB5 LearningEdition
コンポーネントのインストールやろうとしたら
致命的リンカエラー:DSNIDE50.LIBがない

と、言われました。
しかし、コンピュータ内を探しても他の拡張子のはありますがDSNIDE.LIBと言うファイルはありません。
VirtualTreeViewを入れて見た頃から何かおかしくなりますた。

誰か助けて・・・
>>288
フォーカス移動してから削除じゃダメ?
>>286
 ミ,,゚Д゚ミつ Pro版の機能なのではないかと。
>>291
初歩的なミス、ググレ
295288:04/01/06 22:53
>>290
それって
PageControl1->Perform(WM_SETREDRAW, false, 0);
  //削除してアクティブを移す処理
PageControl1->Perform(WM_SETREDRAW, true, 0);
PageControl1->Repaint();

↑こういうののことですよね。
やってみましたがやはりピョコたん効果は解消されませんでした。

>>292
フォーカスにするというのが

・これから削除するタブ
・削除後にアクティブにするタブ
・これから削除するタブの右隣のタブ

のどれのことかわかりませんでしたが、
とりあえず上二つについてはあらかじめSetFocusしておいても効果ないようです。

他に一時的にEnableをfalseにするなどもしてみましたが意味無し。
個人的になんかあの動きが気持ち悪くて困るんですけどねえ。

まぁ玄人さんなら難しいコード書いてサクっと直しちゃうのかも知れないけど、
自分にはどうも無理そうです…。
296291:04/01/07 19:18
英語読めません・・・(鬱
>>296
じゃあ諦めろ
298デフォルトの名無しさん:04/01/08 10:57
TChartで実行中にシリーズを変える方法を教えてくださ
Delphi でよければ。

TChart に SeriesList プロパティがあります。
これは StrlingList から継承された TChartSeriseList クラスです。
これを使って Serise を追加/削除したり列挙できます。

断片的ですが
ttp://www.berneda.com/publicnews/public/teechart6/general/76010000.htm
これが参考になるかな
>>299
ありがとうございます!
301デフォルトの名無しさん:04/01/08 12:54
下記のようにMessageBoxの辺値でスイッチするコードを書いてみたのですが、NO
ボタンを押してもcase(IDNO):に飛んでくれません。
どこがおかしいのでしょうか?
よろしくお願いします。

switch (MessageBox( Handle,"変更しますか?","更新", MB_YESNO )){
case (IDYES): // 更新OK
break;

case (IDNO): // 更新NG
Abort;
break;
}
一見、正しそうだけど...

そこの前後でデバッグしたほうが簡単では?
MessageBox の返値をいったん変数に格納し、値をみてみなされ
303デフォルトの名無しさん:04/01/08 15:15
TToolBarでShowCaptionをtrueにしたときに
ButtonWidthを指定した幅にする方法を教えてください
それは出来ないんじゃないかな?>>303
キャプションが全部表示できるように幅が勝手に広がるんだと思ったけど。
プログラム作って、自分のマシンでコンパイルしたんですが、できたexeファイルを
他のマシンで実行すると、ペイントボックスとかの大きさが変わってしまいます。
もちろん自分のマシンで実行するときは、作ったとおりのフォームになります。
これってコンパイラのバグなのか仕様ってよく分からないんですが、exeを使用するターゲット(OS,CPU)によって
コンパイラのオプションを変えなきゃいけないんでしょうか。
それともソースを使いたいマシンでそれぞれコンパイルするしかないんでしょうか。
>>305
もしかして単に画面の解像度が違うというオチじゃ・・・・
307デフォルトの名無しさん:04/01/09 13:38
MDI子フォームのタイトルバー左のアイコンを消す方法を教えてください
>305
具体的に大きさがどのように変化したのかを家計
309デフォルトの名無しさん:04/01/09 16:11
Builder5です。
整数a,bを引数として,aがbの倍数であれば1を、そうでない場合は0を戻り値として返す関数
int baisuu(int a, int b)
を作成する。この関数を利用して、入力した数が3の倍数であるか否かを判定するアプリケーションを作成せよ。

If(baisuu(x,3)==1){
Label1->Caption=”3の倍数です”;
}else{
Label1->Caption=”3の倍数ではない”;
}
を使うみたいです。Editに入力してButtonフォームを押したら判別されるらしいでのすがさっぱりです。誰か教えてください。
>>305
画面のプロパティの、デザインの「フォントサイズ」が、
「大きいフォント」になってるとかじゃないの?
とりあえず、TFormのScaledをfalseにしてみれば?
!(値1%値2)
>309
宿題は宿題スレ池
それに内容がレベル低すぎ。
おまいの頭寒すぎ。
もちっとまじめに勉学に禿目よ。
>>309
そもそも何を聞きたいのかわからない。
314デフォルトの名無しさん:04/01/09 16:30
とりあえず自分で作ったのはこれです。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int ans=0,a,x,baisuu();
{
a=StrToInt(Edit1->Text);
ans=a%3;
x=baisuu();
{
if(ans==0)
{
return (1);
}
else
{
return (0);
}

-------------------------------------------------------------
double TForm1::baisuu(int x,int y);
{
if(baisuu(x,y)==1){
Label1->Caption="3の倍数です";
}else{
Label1->Caption="3の倍数ではない";
}
}
}

値が返せなくて困ってます。
>>309
やらしてくれる娘を世話してくれるなら、
「なんだ、こんなに簡単なことだったのか」
と顔を赤らめるくらいにまで、基礎を仕込んであげてもいいぞ。
baisuu って引数を二つ持つのに、どうして呼ぶときは引数無いの?

とりあえず、コンパイラエラーが出ない程度に修正してみましょうね
305です。

>>306
そういうのじゃなくて、例えば、正方形の縦が半分になっちゃう、とかだから。
具体的には、グラフを表示してるんですけど、下のほうが表示されませんでした。

>>308
具体的には上のとおりです。横軸は時間で、
縦軸はy = 300 - data8bit; みたいにして、dataが1増えると、1ピクセル上に行くという感じです。
ペイントボックスのHeightは、オブジェクトインスペクタで300以上の値が指定されてます。

>>310
とりあえず、自分のマシンが大きいフォントだったので、小さいフォントに変えてみました。
すると、ペイントボックスのHeightが300以下に変わりました・・・
オブジェクトインスペクタで指定する値って、単位はピクセルじゃないんでしょうか?
>>310
>とりあえず、TFormのScaledをfalseにしてみれば?
を確認したのか?
>>314
あまりに滅茶苦茶で、救いようがない。
>>314
まずBuilderではなくCの基礎を勉強しなおしてこい
321デフォルトの名無しさん:04/01/09 23:18
>>314
double TForm1::baisuu(int x,int y);
{
なんで";"が?
baisuuの中でbaisuを呼んでどうする?
最後に戻り値を入れろ

それよりも、倍数判定の方法を考えろ
算数レベルだぞ
ヒント:剰余
みんな優しいんだな
323263:04/01/10 06:17
>>265
亀で申し訳ない。
ありがとう!
出来ました!!
324デフォルトの名無しさん:04/01/10 10:03
DBGridを使用するときに毎回OnDrawColumnCellイベントで定型処理をするのでDBGridを継承したクラスを作成し、それを使おうと
思い下記のようにやってみました。
このままパレットから貼り付けて使う分には何とか使えるのですが、MYDBGridにOnDrawColumnCellイベントを書いてしまうと、せ
っかく書いた定型処理の部分が実行されなくなってしまいます。
それと、メソッドの隠蔽に関する警告を無視して使っているのもいやな感じです。
わかりにくいかもしれませんが、このような使い方をしたい場合には、どのようにすればいいのか教えていただけないでしょうか?

"MYDBGrid.h"
class PACKAGE TMYDBGrid : public TDBGrid
{
private:
TDrawColumnCellEvent FOnDrawColumnCell;
protected:
void __fastcall DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State);
};

"MYDBGrid.cpp"
__fastcall TMYDBGrid::TMYDBGrid(TComponent* Owner)
: TDBGrid(Owner)
{
TDBGrid::OnDrawColumnCell = DrawColumnCell;
}

void __fastcall TMYDBGrid::DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
/*
適当な処理
*/
TDBGrid::DefaultDrawColumnCell(Rect,DataCol,Column,State);
}
325デフォルトの名無しさん:04/01/10 10:05
DBGridを使用するときに毎回OnDrawColumnCellイベントで定型処理をするのでDBGridを継承したクラスを作成し、それを使おうと
思い下記のようにやって、コンポーネントとしてインストールしてみました。
このままパレットから貼り付けて使う分には何とか使えるのですが、MYDBGridにOnDrawColumnCellイベントを書いてしまうと、せ
っかく書いた定型処理の部分が実行されなくなってしまいます。
それと、メソッドの隠蔽に関する警告を無視して使っているのもいやな感じです。
わかりにくいかもしれませんが、このような使い方をしたい場合には、どのようにすればいいのか教えていただけないでしょうか?
VER:BCB6 OS:Win2K

"MYDBGrid.h"
class PACKAGE TMYDBGrid : public TDBGrid{
private:
TDrawColumnCellEvent FOnDrawColumnCell;
protected:
void __fastcall DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State);
};

"MYDBGrid.cpp"
__fastcall TMYDBGrid::TMYDBGrid(TComponent* Owner) : TDBGrid(Owner){
TDBGrid::OnDrawColumnCell = DrawColumnCell;
}

void __fastcall TMYDBGrid::DrawColumnCell(TObject *Sender,const TRect &Rect, int DataCol, TColumn *Column,TGridDrawState State)
{
/*
適当な処理
*/
TDBGrid::DefaultDrawColumnCell(Rect,DataCol,Column,State);
}
326324:04/01/10 10:07
連続で揚げてしまいました。すいませんでした。
>>325
DrawColumnCellじゃなくてDefaultDrawColumnCellかDrawCellをオーバーライドする。
DrawColumnCellじゃ駄目なのはヘルプを読むと分かる。
DefaultDrawColumnCellとDrawCellのどちらを使うかは定型処理に照らし合わせて判断する。
328324:04/01/10 12:44
さっそくありがとうございます。
自分でいろいろやってみたのですがうまくいきません。
できれば宣言方法などをおしえていただけないでしょうか?
やりたいことは、行によって文字色を変えることです。

//-----------------------------------------------
// 奇数行時処理
//-----------------------------------------------
if( DataSource->DataSet->RecNo%2 !=0 ){
Canvas->Brush->Color = FOddColor;
Canvas->Font = FOddFont;
//-----------------------------------------------
// 偶数行時処理
//-----------------------------------------------
}else{
Canvas->Brush->Color = FEvenColor;
Canvas->Font = FEvenFont;
}
329324:04/01/10 13:18
なんどもすいません。
Protectedに宣言し、下記のように実装してみたのですが、Brushの設定が反映されません。
どの辺が間違えてるのでしょうか?
普段DBGridのOnDrawColumnCellイベントでやってることを内包したコンポーネントを作りたいんですが。

void __fastcall TMYDBGrid::DrawCell(int ACol, int ARow, const Types::TRect &ARect, Grids::TGridDrawState AState)
{
//-----------------------------------------------
// 奇数行時処理
//-----------------------------------------------
if( DataSource->DataSet->RecNo%2 !=0 ){
Canvas->Brush->Color = clRed;
//-----------------------------------------------
// 偶数行時処理
//-----------------------------------------------
}else{
Canvas->Brush->Color = clBlue;
}
TDBGrid::DrawCell(ACol,ARow,ARect,AState);
}
330デフォルトの名無しさん:04/01/10 13:46
割り込んで申し訳ないですけど
すでに書いてるコードのインデントとかを一括で揃える機能ってありますか?
関数とか条件分岐のカッコの下がりとかのことなんですけど。

自分で書いてあちこちにコピペしたり削除したりしてると、どうも見栄えが悪くなっちゃったんですが、
今さらいちいち1行ずつタブとかでインデントを調整するのも面倒でして。

もしBCBにそういう機能がなければ、既存の有名アプリで代用できたりできないでしょうか。
Dreamweaverとか、無理か…。
ウィンドウズです。よろしくおねがいします
>>329
実験してないから保証は出来んが、多分。
×Canvas->Brush->Color
○Columns->Items[ACol]->Color

DefaultDrawColumnCellをいじった方が楽かも?
>>330
ブロック単位のインデントの上げ下げなら、領域選択後、Ctrl-K-O / -K-I だったような...
ヘルプに乗ってると思う
>>332
全部一括で自動インデント、てのは無理そうですが、
これでも大分助かります。
ありがとうございます
334324:04/01/10 14:41
>>329
CustomDBGridのDrawCellないでBrushが再設定されているようなので、呼び出し前にColorプロパティを設定することで解決しました。

しかし、できればDefaultDrawColmunCellをオーバーライドしたいのですが、やってみてもコードが実行されません。
DefaultDrawColumnCellを実行させるにはどうしたらよいのでしょうか?
335デフォルトの名無しさん:04/01/10 14:44
>>330
-------------------------------------------------------
〔Ctrl〕+〔Shift〕+〔I〕ブロックをインデントする
〔Ctrl〕+〔Shift〕+〔U〕ブロックをアウトデントする
-------------------------------------------------------
だとさ
さっき

F1001 コードジェネレータの内部エラー

が出ますた。どうすればいいですか?
・そのコードを QC にポスト
ボタンが押されたときに呼び出される関数をプログラム中で変更したいのですが
どうすればいいのでしょうか

とりあえず
button->OnClick= 関数ポインタ
とやってみましたがだめでした
339 :04/01/11 13:35
元のイベントハンドラ

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Button1Click");
}

新しく呼び出される関数

void __fastcall TForm1::NewFunc(TObject * Sender)
{
//TODO: この下にコードを追加してください
ShowMessage("New Func");
}

イベントハンドラの変更処理

void __fastcall TForm1::ChangeButtonClick(TObject *Sender)
{
Button1->OnClick = NewFunc;
//正確にはButton1->OnClick = this->NewFunc;
}

ちゃんとできたよ。ただの関数じゃなくてTOject型の派生クラスのメンバ関数で引数、戻り値は一致してなくちゃいけない。
代入するのはただの関数ポインタじゃないけど。
ヘルプで __closure を調べてみたら。
340 :04/01/11 13:37
>>339
>引数、戻り値は一致してなくちゃいけない。
引数、戻り値の型が一致してなくちゃいけないだった。
関数のシグニチャとか言うやつだっけ。
>>339-340
ありがとうございました(TдT)
Button1->OnClick=Button3Click;

TButton型OnClickイベントの引数は(TObject *Sender)。
呼び出される関数とちゃんと合ってる?

あとだめでしたってどうダメだったのか、あるいはどんなエラーが出たのかを書くこと。
余所見してたら一足もフタアシも遅かったか(;´Д`)
344 :04/01/11 14:01
ヘルプの__closureみてもほとんど何ものってなかったね。
メンバ関数のポインタとオブジェクトの二つを渡さなくちゃいけないんだけどBuilderではC++から拡張されてて

TNewObject* NewObject;
だったら
Button1->OnClick = NewObject->NewFunc;
とか書ける。

さっきのはForm1のメンバ関数内だから省略したけど、違うオブジェクトのメンバ関数を呼ぶようにするときは関数だけじゃ駄目だよ。
NewObject->NewFunc とオブジェクト名も書かなくちゃいけない。
345 :04/01/11 14:08
>>344
>メンバ関数のポインタとオブジェクトの二つを渡さなくちゃいけない

「メンバ関数のポインタとオブジェクトへのポインタの二つを」だった。
無駄にスレ消費してすみません。
TChartのx軸のラベルを変更するにはどうすればいいでしょうか?
(縦棒グラフを利用しています。デフォルトの0,1,2,…の値を変えたいです)
BottomAxis辺りのプロパティを探ったのですがわかりませんでした。
347デフォルトの名無しさん:04/01/13 09:55
おいてめーらさっさと>>307教えれ
透明なアイコンでも・・・
やなやつ >>347
あそこはクライアント領域ではないから書き換えるのは難しいと思うが。
MDI の Non-client 描画を分捕って処理しなきゃいけないよ。
という説明でピンとこなけりゃひっこんでなさい
350デフォルトの名無しさん:04/01/13 11:38
やっぱめんどいか、ぶっちゃけ>>348のが簡単だな
>>349は普通にうんこだな、あばよ
簡単なやり方があるのに... >> 350
352デフォルトの名無しさん:04/01/13 12:55
俺は350だが釣られんぞっ!!
あそ。ならいいよん。
354デフォルトの名無しさん:04/01/13 15:33
ごめんなさい、教えてください
355デフォルトの名無しさん:04/01/13 23:28
ワラタ
APIでフォームスタイルを定義すればいいだけの話じゃないの?
質問なんですが、コンパイルしてみると
Fatal: ファイル6.0BJが開けません
と出ます。
どうすればいいでしょうか・・・
>>357
ファイル6.cppを「プロジェクトに追加」
ファイル名に2バイト文字を使うのはDQN以下。
いや、「以下」だと含むから訂正。

ファイル名に2バイト文字を使うのはDQN未満。
え〜と。未だDQNじゃないって意味ですか?
Linuxで「予定」という名前のフォルダを作るとなぜか「嵐」という
名前に変化し、削除不能になる。
362むこうの249:04/01/16 23:14
このスレには
http://pc2.2ch.net/test/read.cgi/win/1068705330/248-
の症状の人はいないかな?
俺以外にいなければBCBとは関係なしってことになるんだけど。
363362:04/01/16 23:39
原因はともかく、解決しました。
お騒がせしました。
364デフォルトの名無しさん:04/01/18 00:14
BCB6Pro + Indy9.0.14でSocks越しにHTTPでGETする方法を教えてください。
365デフォルトの名無しさん:04/01/18 02:24

>>364
exampleフォルダになんかそんなようなのあったぞ
367デフォルトの名無しさん:04/01/18 03:49
質問です。
IEやSleilpnirのお気に入りのようなTreeViewを作ってるのですが、
上記のソフトではドラッグして項目を移動する時に、
項目と項目の間にくれば上、もしくは下に太いラインが表示されますよね。
その、「項目と項目の間を判定する」というのと「太いラインを表示する」という
2点のやり方がわからないんですが、どうしたら可能ですか?

とりあえず、項目の間の判定はDisplayRectを駆使すれば何とかなるかも知れませんが、
移動位置を示す太いラインの表示がどうしてもわからなくて…。

よろしくお願いします。
>>367
TreeViewで普通にドラッグするのは駄目なの?
>>368
それだと、移動位置にあの太いラインが出ませんよね。
移動位置を明確に示すあのインターフェイスがとても明確でわかりやすいと思うので、
ぜひ取り入れたいと思うんですが、何をどうやってるのかさっぱりで。

最初はDragCursorプロパティとかで簡単に出来ると思ってたんですが。
370デフォルトの名無しさん:04/01/18 20:03
>>366
それ、Indy8ならともかく、9以降ではエラーが出るだろ
プログレスバーは通常posithionに応じて左から右に進むんですが
これを右から左に進むようにする方法はありませんか?
372デフォルトの名無しさん:04/01/18 23:25
>>371
バーの色を変えて、Position = 100 - 値 とすればいいじゃん
373デフォルトの名無しさん:04/01/18 23:31
>>370
それ以前にお前、>>366のはsocks鯖じゃねーか
>>372
バーの色変えられないんですよ

ImageにFillRectで代用することに決めたよ
375369:04/01/19 00:15
まだやってるけど出来ません…。
スレイプニルがどの言語で書かれてるかは知らないけど、
BCB使ってるわけじゃなさそうなので、VCLの仕様じゃ出来ない設定なのかなぁ。
376デフォルトの名無しさん:04/01/19 01:02
相談にのってください。
builderを使ってCで作ったプログラムの実行ファイルの作成とデータファイルを作りたいんだけど、
どうすればよいですか?
目標とするところは、データファイルの作成とそれを使ってのグラフの作成なんです。
他に良い方法があるなら、そちらでもかまいません。
とりあえずはCを使いたいので、その点だけは許してください。
お願いします。
>>376
きみ、>>309じゃないか?
また君かね!
妙齢の兄弟は居るか。話はそれからだ。
379デフォルトの名無しさん:04/01/19 07:15
>369
OnDragOverで
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
TTreeView* tree = (TTreeView*)Sender;
TTreeNode* node = tree->GetNodeAt(X, Y);

if (node != NULL) {
TRect rt = node->DisplayRect(true);
tree->Canvas->MoveTo(rt.left, rt.Bottom);
tree->Canvas->LineTo(rt.Right, rt.Bottom);
}
}
こんな感じか?まぁ上のままだとかなり不都合があるが。
onCustomDraw使った方がいいかもね。
380379:04/01/19 07:52
スマン。onCustomDrawじゃドラッグ判定ができんわな。
少し修正。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TreeView1->DoubleBuffered = true; //ちらつき防止
}
void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source,
int X, int Y, TDragState State, bool &Accept)
{
TTreeView* tree = (TTreeView*)Sender;
TTreeNode* node = tree->GetNodeAt(X, Y); //ドラッグの位置にノードがあるか

if (node != NULL) {
tree->Refresh();
TRect rt = node->DisplayRect(true);
int b = rt.Bottom - Y;
if (b > rt.Height()/2) { //ノードの上半分にマウスポインタがある
tree->Canvas->MoveTo(rt.left, rt.Top +2);
tree->Canvas->LineTo(rt.Right, rt.Top +2);
} else { //ノードの下半分にマウスポインタがある
tree->Canvas->MoveTo(rt.left, rt.Bottom +2);
tree->Canvas->LineTo(rt.Right, rt.Bottom +2);
}
}
}
void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
TTreeView* tree = (TTreeView*)Sender;
tree->Refresh();
}
381376:04/01/19 08:42
>>309とは違います。質問が初歩的すぎましたね・・・
リナックスでemacs+gnuplotという環境で過ごしてきましたが、
この度windowsの方でもプログラムをしたいなと思いbulder6が評判よかったのでこちらを選んだんです。
>>381
初歩的過ぎるんじゃなくて(それもあるが)、質問が曖昧過ぎる。
>>376じゃ誰も回答できない。
結局何が聞きたいわけ?
>>382
曖昧な質問でも適当に補完して回答すればいいだろ。
俺が手本をみせてやる。











>>376
ヘルプ読め。
>>383
おいおい、ヘルプにゃデータからグラフ作成プログラムなんて
載ってないだろ。そこはこうだろ

>>376
Cygwin使えば?
385デフォルトの名無しさん:04/01/19 11:45
てst
386376:04/01/19 11:53
cygwin環境ではできたのですが、将来的に(今の仕事が終わったら)C++の方に移りたいのでできればbuilderでって感じです。
もっと具体的にいうと、非線形方程式をシミュレーションで動かして近似解をデータとして保存し、
それをグラフで出力し振る舞いをみたいのです。そのグラフをパワーポイントなどに貼り付けられれば言うことない、です。
当面はlinux使いで問題はないんですけどね・・
なんだなんだ、そういうことか。やっとわかってきたぞ。










>>386
「曖昧」の意味がわかるか?
俺が補完してやる







linuxでパワーポイント使いたいよー
389デフォルトの名無しさん:04/01/19 14:51
自作したclassのメソッドにTFormを渡したいのですが
何を渡せばいいのでしょうか?
>>389
TForm もしくは TFormから継承されたクラスのオブジェクト。
>>387
391デフォルトの名無しさん:04/01/19 15:15
>>390
よくわからんけどとりあえずthisでOKでたわ
ひどいな...
393デフォルトの名無しさん:04/01/20 14:25
質問ですが
LabelWndProc = Label1->WindowProc;
のようにカプセル化したときに
下のTMessageでLabel1のプロパティにアクセスする方法を教えてください
void __fastcall MaiWndProc(TMessage &Msg)
{
}
394 :04/01/20 17:07
Cマガにボーランドの外人さんへのインタビューがあったけど、はっきりとC++Builderの打ち切りは宣言してなかったね。
ユーザーの意見を聞いてどういう製品にするか参考にしたいとか。
次バージョンを発表できる段階には無いらしいが。
自分はBoost100%のC++コンパイラにしてくれて、IDEのエディタとか使いやすくしてくれれば良いな。
Eclipseみたいにリファクタリングとか支援してくれれば嬉しいけど。
>>394
そいつ、去年末にレイオフ喰らってもう某にはいないぞ。
396 :04/01/20 21:08
>>395
それマジなの?
C++Builder7に望むこと

トロくさいコード補完をなんとかしろせめてDelphiレベルにしてくれ
普通に使っていてエラーを吐くIDEはやめろ
アップデートをまじめにやれ頼むからライブラリのバグくらいは手を入れてくれ
>>397
>トロくさいコード補完をなんとかしろせめてDelphiレベルにしてくれ
無理なのだーC++Builderはキーワードが多すぎて。CPUをアップグレード
してください。

>普通に使っていてエラーを吐くIDEはやめろ
エラーを吐くのは仕様です。その後のエディット作業に支障を来さない
はずですのでそのままお使いください。

>アップデートをまじめにやれ頼むからライブラリのバグくらいは手を入れてくれ
DelphiやC++BuilderXの製品開発に精一杯で手が回りません。
399 :04/01/20 22:52
キーワードの多さとか言うよりC++の文法の複雑さが補完速度に影響してるのかも。
ObjectPascalと比較されても。
機能まででるふぃなみに制限してもいいですか?
401369:04/01/21 00:10
>>380
大分遅くなりましたが、ありがとうございます!
やっと時間が空きましたのでお礼の書き込みができました。

ラインを引くCanvasってややこしそうなイメージがあったんですが、
教えて頂いた通りにやると簡単でした。

ただマウスカーソルの方が少しチラつくようですが、それでもかなりの進歩です。
ありがとうございます。
>>396
まじ。MS にいった。
C++Builder7はMSから出るんだな
「Borland CTO,Blake Stone氏直撃インタビュー」

今回の C Magazine のインタービューは、タイミング最悪だったな。
インタビューしていた時点で既に MS に行く気だったのかなぁ。
406デフォルトの名無しさん:04/01/21 10:08
そんなことより>>393を教えてくだああ
>LabelWndProc = Label1->WindowProc
のところで Label1 も保存しておいたら?

ウィンドウプロシージャはクラスごとに同じものが使われるので WindowProc から
元のクラスのインスタンスを引くことはできない。(TLabel が二つあっても区別できない)

大体、MaiWndProc は誰の持ち物(どのクラスのメソッド)なんだ?
408380:04/01/21 12:47
>401
上で書いたやつは Refresh() を多用してるので
更新が必要な場所だけ外部にでも保存しておいて
InvalidateRect() でも使って必要な部分だけ再描画してくれ。
(↑の場合、 DoubleBuffered はいらん。まぁ、メモリに余裕があればそのままでもok)
409デフォルトの名無しさん:04/01/21 12:48
ボタンに、ビデオクリップを張り付けて、そのボタンをクリックして張り付けたビデオクリップを動作させたいのですが・・・

 ビデオクリップの取り込みは、「TAnimate」のコントロール使用しました
  @ボタン、ビットマップボタンを使用
   ・「TAnimate」のコントロールを、ボタンの下に重ねた
   ・ボタン、ビットマップボタンは、透過する事が出来ないので、当然ボタン上にビデオクリップが表示されなかった
  Aスピードボタンを使用
   ・「TAnimate」のコントロールを、ボタンの下に重ねた
   ・しかし、スピードボタンの前面にビデオクリップが表示され、ボタンとしてのクリックが不可能になった
   (メソッドで、前面、後背に移動の設定を行っても無理だった)

<質問>
 ・ボタン、ビットマップボタンを透過させることは不可能でしょうか?
 ・スピードボタンを、「TAnimate」のコントロールの前面に設定することはできないでしょうか?
 ・実現するとしたら、どのような対策があるでしょうか?

よろしくお願いします
410デフォルトの名無しさん:04/01/21 23:13
>>409
Ani,ateやめて、ボタンはBitBtnにして
乗せるビットマップ(Glyph)をタイマーで切り替えればいいんでないかい?
411デフォルトの名無しさん:04/01/22 08:36
少しスレ違いかも知れません。

TListViewなどのコントロールへ外部からWM的にメッセージを送る際の
定石みたいなのはあるのでしょうか?

具体的に言うと、ウィンドウが単なるListViewならSPY++とかで調べた
ウィンドウハンドルhwndに対して、

int count = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0);

が効いたりするんですが、hwndがTListViewだとダメなんです。


よろしくおねがいすます。
>>411
TListView::Handleで普通にできると思うが?
413 :04/01/22 12:00
>>411
メンバ関数のPerformがつかえるのでは?
414デフォルトの名無しさん:04/01/22 13:17
TTableで指定フィールドでソートする方法を教えてください
>>411
定石かどうか知らんが、マクロは結構使えるかも。
ListView_GetItemCountとか
ListView_EnsureVisibleとか
417デフォルトの名無しさん:04/01/25 00:27
Panel を透明にする方法はないでしょうか?
418デフォルトの名無しさん:04/01/25 00:59
下のイメージを取ってきて貼り付ける。
>>417
というか、コンテナコンポを透明にする必要性が判らん。
単に隠したいならVisible=falseだが、それでは不味い訳か?
BorderStyleやAlign等の設定で解決できることに気が付いてないだけと推測
421デフォルトの名無しさん:04/01/25 08:11
最大化ボタンが押下された際に処理を行いたいのですが、 OnResize イベントでは
変更後の WindowState が wsNormal のままでうまくできません。
どなたか方法を教えていただけないでしょうか?
WM_SYSCOMMANDメッセージを補足して
コマンドがSC_MAXIMIZEだったら処理する
423417:04/01/25 10:27
>>418>>420
何がしたいのかというと、XPのビジュアルスタイルで表示された
CoolBar 上にボタンなどを任意の大きさで載せたいと思い、panel を
使ったのですが、CoolBarが微妙にグラデーション表示になっているので
panelを貼り付けたところが分っていまいます。
(見た目の問題ですが、、)
何かいい方法はありますでしょうか?
>>423
XPは使ってないんで上手くいくかどうか保証は出来ないが、
そういう場合はTPanel->ParentColorをtrueにする。
425デフォルトの名無しさん:04/01/25 15:00
ちょっとはまってしまいましたので、教えを請いにきました。
環境は、Builder6でして、統計の標準偏差値を返す StdDev関数を使いたいのです。
ヘルプを見ると、ユニットはMath、カテゴリは統計ルーチンとあります。

void func(void)
{
double a[3] = {1.0, 2.0, 3.0};
double ret = StdDev(a,2);
}

のように使いたいのですが、コンパイルすると、
'未定義の関数StdDevを呼び出した'
というメッセージになります。

このMathユニットを使えるようにするにはどうすればよいのでしょうか?

>>425
#include <Math.h> とか。
>>425
VCLだと<Math.hpp>じゃないかな?
428soku:04/01/25 17:20
お邪魔します、質問させてください!
プログラマー初心者スレから誘導されてきました。

C++Builderで、ビットマップの表示に関して行きずまっています。
作っているのは、ある値の変化をメーターのように見れるように
タイマー割り込みでCanvasに描画する、といった感じのものです。
思惑通りに表示はできているのですが、問題は時たま画像が消える(描画が
とまってしまう)ことがある、というところです。

以前に同じようなことに挑戦していて、Penなどで描画するとことに限っては
ImageのCanvasが良くこの問題が出るのに対して、
PictureBoxのCanvasは安定していることを発見し、
PictureBoxのCanvasを使っていたのですが、ビットマップを読み込んで、
下地に使おうとすると(メーターの目盛りなど)、一定時間で下地だけ消えてしまう、
という問題がおきることがわかりました。

最初、ビットマップの読み込みは、ダミーのImageに取り込んだPictureを、
PictureBoxのDrawで吸い取っていたのですが、
以前上記のImageの問題に当たっていたので、Imageをできるだけ使わないようにと
(問題はImageにあると推測して)、
TBitmapのインスタンスを作ってそこにBitmapを取り込んでおき、
タイマーではTBitmapのインスタンスからのみ読み込むようにしてみたのですが、
やはりとまってしまうようなんです。

(長くて書き込めなかったので、次の番号に書かせていただきます)
429soku:04/01/25 17:22
(428の続き)

◇ソース要約

(宣言)
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();

(フォームSHOW時一回だけ)
pBitmap = Im_Mater->Picture->Bitmap;
  //Im_Masterに下地ビットマップが入っています

(タイマー割り込み処理)
Pb_speed->Canvas->Pen->Width = 1;
Pb_speed->Canvas->Pen->Color = clBtnFace;
Pb_speed->Canvas->Brush->Color = clBtnFace;
Pb_speed->Canvas->Rectangle(0,0,Pb_speed->Width,Pb_speed->Height);
   //PictureBox内消去

//Pb_speed->Canvas->Draw(0,0,Im_Mater->Picture->Bitmap);
   //メータービットマップ上書き(Imageを使うと、止まるため、下行の方法に変更

Pb_speed->Canvas->Draw(0,0, pBitmap);
   //ビットマップのインスタンスからコピーする

Pb_speed->Canvas->Pen->Color = RGB(0,0,255);
Pb_speed->Canvas->MoveTo(a, b);
Pb_speed->Canvas->LineTo(x, y);
   //ここでメーターの針を書いてます
430soku:04/01/25 17:23
(429の続き)

消え方は、別段操作しないでも、ふっと下地だけ消えて、
Penなどの描画処理している針だけがフラフラ動いているのが残る感じです。
(メーター等の場合)
タイマーのインターバルは、55msです。
一度消えてしまうと、Redraw()、Update()、Refresh()、Invalidate()等の
再描画を実行しても元に戻らず、ソフトを再起動するしかありません。

このような問題に出会われて、さらに解決された方がいらっしゃれば、
アドバイスなどいただければありがたいです!
よろしくお願いいたします。
それから、超長文大変失礼しました。
>>428
パッと見だけで言わせて貰うので、欲しい回答になっていないのがアレだけど、
宣言のところでオブジェクトを作っている pBitmap に
Im_Master->Picture->Bitmap を代入するのはまずいんでないの?
pBitmap が指しているオブジェクトが、Im_Mater->Picture->Bitmap の
代入によってどっかにいってしまわない?

それとタイマ割り込み内の Pb_speed はどんなオブジェクト?
内部で作った Graphics::TBitmap のオブジェクト?
432425:04/01/25 21:06
>>427

ありがとうございました。できました。

VCLだと*.hpp となるんですね。知りませんでした。
これで、知識がひとつ増えました。
433soku:04/01/25 21:55
>>431さん
レスどうもありがとうございます。
あうーなるほど・・・いわれてみれば、かなり無茶苦茶やってるです。
とにかく逃がしたくて、割と考えずにいろいろやっていたので・・・

それから、Pb_speedは、PictureBoxです。
これはコンポーネントをフォームに置いたやつですので、
TBitmapのオブジェクトではないです。

う〜ん勉強不足。
もうちょっといろいろやってみます。
どうもありがとうございました!
434^^:04/01/25 22:54
#include<stdio.h>

#define ORIG_STR "ymq\n"
#define CIPHERKEY 1

void cipher(unsigned char n, unsigned char *a)
{
while (*a !='0'){
*a=(unsigned char)(*a ^ n);
a++;
n++;
}
}

int main(void)
{
unsigned char a[4] = ORIG_STR;
unsigned char n=CIPHERKEY;

cipher(n,a);
printf("%s\n",a);
cipher(n,a);
printf("%s\n",a);
exit (0) ;
}プログラムを実行した結果は
xor
ymq
となりました。どうしたらこういう実行結果になるのですか?
ただし、英小文字をあらわすASCIIコードは、a〜zで16進数で61〜7Aです。


435デフォルトの名無しさん:04/01/25 22:59
void mani(void){
mani();
}
void main(void){
mani();
}
>>434
スレ違い。念の為に言うとそのコードは実行できないはず。
あとは他のスレで聞け。
437デフォルトの名無しさん:04/01/26 22:54
TForm の Height のみ AutoSize = true のようにしたいのですが、可能でしょうか?
borland のメニューフォームのイメージなのですが。
438soku:04/01/26 23:12
昨日の428のものです。
解決しました。
詳しくはわからないのですが、Bitmapなどのオブジェクトは同時に
4つまでしか保持できないみたいです。
ですので、新たな描画が始まると、あいている所を探して、
破棄してしまうことがあるみたいなんです。
そこで、描画前にCanvas->Lock()、
描画後にCanvas->Unlock()という手順を踏むと、
どうやら消えずにすむようです。
というか消えませんでした。

理由はまだあんまり良くわからないんですが、精進します。
どうもありがとうございました!

それから、ついでにまた質問なのですが、
Canvasに描画する作業をしているとよく、
「Canvasに対する描画ができません」というエラーが出てくることがあります。
最初はインターバルが短すぎるのかな、と思っていたのですが、
1msでも出ないときは出ない感じなんです。
これは何が原因なのでしょうか?

ご存知の方、一つよろしくお願いいたします。
>>438
んなもん、ソース見な誰も何も分からん
つか、デバッガ使って自分で追っかけることも覚えや
>>437
無理。自分でコード書くべし。
ヒジョーに初歩的な質問でガクブルなんですが、
int main(int argc, char **argv)
ってありますよね。このchar**argvと同じものを
AnsiString文字列を分解して作るにはどうしたらいいのでしょうか?
具体的には
int sub(int argc, char **argv)
という関数にAnsiStringを分解した引数を渡したいのです。
宜しくお願いします。
StringListじゃイヤなの?
443441:04/01/27 18:00
int sub(int argc, char **argv)
のargvにTStringList*は渡せません…シクシク
>>441

いまいち何がやりたいのかよくわからん。

"int argc, char **argv"でmain(や441のsub)に渡される情報は
*複数の*文字列、一方441が分解して云々したいといってる
AnsiStringは*一つの*文字列なので、そもそも情報の「質」が
違う。

>>442がいっているように、StringListを argc と **argv として
渡すのがNGということは、たとえば

int sub(int argc, char **argv);

...

AnsiString s = "Sample String";
char *Buf;

Buf = new char[100];
strcpy(Buf, s.c_str());
sub(1, &Buf);

delete[] Buf;

こんな感じのことがしたいのか?
strtokみたいにトークン分割したいだけダターリ
446441:04/01/28 10:43
>>444
説明が足らずに申し訳ありませんでした。

一晩考えて、こうしてみました。

static void sub(int argc, char **argv)
{
for (int i(0); i < argc; ++i)
ShowMessage(*argv++);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString as("This is sample string");
TStringList* listp(new TStringList);
for (int i(as.AnsiPos(' ')); 0 < i; i = as.AnsiPos(' ')) {
listp->Add(as.SubString(1, i - 1));
as = as.Delete(1, i);
}
listp->Add(as);

int argcnt(listp->Count);
char** argvp((char**)malloc(argcnt * sizeof(char*)));
for (int i(0); i < argcnt; ++i)
argvp[i] = listp->Strings[i].c_str();

sub(argcnt, argvp);
delete(listp);
}

何かおかしい点またはこうした方がいいという点がありましたら
引き続きご指導宜しくお願いします。
素直にTStringList渡せば?という気もするが、なんか理由があるんだろうな。

listpを設定している部分は
>listp->Delimiter = ' ';
>listp->DelimitedText = as;
で、置き換えられそう。

>argvp[i] = listp->Strings[i].c_str();
c_strが返すポインタは「その文でしか有効でない」というのが仕様。
ヘルプ参照。
448デフォルトの名無しさん:04/01/28 12:04
age
449441:04/01/28 12:09
>>447
Delimit関連はひとつ勉強になりました。ありがとうございます。

僕も出来ればTStringListでいきたいのですが、実はsub(int argc, char **argv)は
外部ルーチンなので、引数の仕様を変えられないのです。それで止む無く…。

c_strについてもありがとうございました。ヘルプを参照して

for (int i(0); i < argcnt; ++i) {
 char* cp(new char[listp->Strings[i].Length() + 1]);
 strcpy(cp, listp->Strings[i].c_str());
 argvp[i] = cp;
}

としました(あと、>>446ではfree(argvp);が抜けてました)が、
ループ内でnewした各cpについてはどうやってdeleteすればいいのでしょうか?
重ねてご指南宜しくお願いします。
>>449
やっぱりループでdeleteするしかないんじゃないかな。
ここ数年C++使ってないから詳しくはないんだけど。
451崖っぷち:04/01/28 13:13
誰か助けてください!
大学でレポートが出されまして、これが明日までに出来ないと留年してしまいます!
どなたか宜しくお願いします・・・・(T_T)

配列Aのデータをソートせよ。ただしAの入力は Void getdata(int *n,double *a)
を呼び出せば入力できるものとする。

っていうものです。このままでは本当に留年が確定してしまうのでどなたか助けてください・・・・・
>>451
宿題スレに行ってください
http://pc2.2ch.net/test/read.cgi/tech/1075217631/
>>451
自分の力でできないのであれば、留年した方があなたのためになると思います。
マルチ
とっとと留年せぇ
455デフォルトの名無しさん:04/01/28 15:15
>>441
つか、ParamStrじゃダメなのか?
>>455
コマンドライン引数が欲しいという話ではないようだぞ。
457ふぁむ:04/01/28 16:56
はじめまして

実はBCB6 proでDirectX9.0bを利用したいのですが
うまくいきません
そもそも使い方が良くわかっていないのも問題なのですが
DirectX9.0SDKをインストールし*.libをコンバートして
インクルードとライブラリを指定しました
新規のアプリにヘッダのインクルードを追加し
コンパイルすると
[C++ エラー] d3dx9math.inl(1552):
E2268 未定義の関数 'sqrtf' を呼び出した
と言うエラーが発生してしまいます。
たしかにBCBにない命令なのですが
皆さんは、どうやって回避していますか?

459ふぁむ:04/01/28 17:26
458さん

早速の回答ありがとうございます。
参考にして再度チャレンジします。

460ふぁむ:04/01/28 20:57
おかげさまでデファインやタイプは参照できたのですが
[リンカ エラー] 外部シンボル 'Direct3DCreate9' が未解決
が出るようになってしまいました(涙)
何が足らないのでしょう?
ソースはこんな感じなのですが。。。

#include "d3d9.h"
// 変数
D3DPRESENT_PARAMETERS param;

// オブジェクト
LPDIRECT3D9 lpD3D = NULL;
LPDIRECT3DDEVICE9 lpD3DDEV = NULL;

TForm1 *Form1;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
lpD3D = Direct3DCreate9(D3D_SDK_VERSION);
}
//---------------------------------------------------------------------------



リンカエラーにソースを持ち出してくる時点で
ライブラリをきちんと指定してない可能性が大だな
Form上にPageControlを配置してTabSheetを作って使いたいのですが、
Formの色を変えた時にタブの部分(デフォルトでTabSheet1って書かれてる部分)
の色だけが変わってくれないのですが、
どうしたら全て同じ色に変えることができますか?
ちょっとアドバイス下さい

this->Parent->Controls->Refresh();
BCBで上のようなコードを記述するとちゃんとコンパイルできますが
自分で作ったクラスはアロー演算子をつなげることが出来ません
これはfunctionとしてオブジェクトへのポインタを返しているからでしょうか?
propertyとして参照すればいいのでしょうか?

またBCBではなくgccのようなコンパイラだと
一度ポインタ変数に代入しないとダメなのでしょうか?

おしえて!えらい人
>>462
やったことないけど、OwnerDraw=trueで自力で描画だと思う。

>>463
一から勉強しなおせ。
お前さんの書いてる文章は支離滅裂。
1つ1つの用語の意味を理解していない。
どうしても教えて欲しけりゃ取敢えずソース晒せ。
アロー演算子というのか。今まで知らなかった・・・。
466ふぁむ:04/01/29 09:28
461さん
鋭いご指摘です(大汗)
同じ名前で複数見れてたのが原因だったみたいです。
ライブラリを追加しなおしたら動作しました
くだらない質問してすいませんでしたm(_ _)m
また勉強させてください^^
467デフォルトの名無しさん:04/01/29 12:01
構造体にAnsiStringを入れても問題ないですか?
無いよ。
469デフォルトの名無しさん:04/01/29 12:39
new した場合でも?
「newした場合」って、AnsiStringを? それとも構造体を?
いずれにせよ、然るべきdeleteを行うなら問題は何もないよ。
471かみかみ:04/01/29 13:45
以下のこと、ご存知の方おられましたら、ご教授願います。
作成したフレームをフォームに配置する方法。

フレームを新規作成し、
そのフレームへボタンなどのコンポーネントを配置しました。
その後、そのフレームをフォームへ複数配置したいと考えています。
「Standard」タブページからFramesコンポーネントを使えば、
作成したフレームをいくつでもフォームに配置することができるのですが、
それをプログラムで動的に行いたいと考えています。
フレームはすでに作成されているとして、
そのフレームをフォーム上に複数配置させる方法を調べています。
方法をご存知の方おられましたら、是非ご教授ください。
>>471
Parentを設定
つか、ヘルプ見りゃ書いてある訳だが。
473デフォルトの名無しさん:04/01/29 14:08
>>470
構造体をです。
どっちみち問題ないってことですかそうですか、ありがとう
474かみかみ:04/01/29 14:32
>>472
早速のレスありがとうございます。

現在の私の状況を簡単に説明させてください。
まずフレームを新規作成すると、
  class TFrame2 : public TFrame
というクラスが作られました。
そして、フレームにはラベルなどを配置しました。
次にForm1というフォームに、作成したフレームを配置しようと、
以下のようなコードを記述しました。
  TFrame2 *frame1 = new TFrame2(Form1);
frame1->Parent = Form1;
これだけなら、エラーはとくに出ることなく実行され、
Form1に作成したフレームが配置されました。
つづけてもう一個Form1に同じフレームを配置しようと、
  TFrame2 *frame1 = new TFrame2(Form1);
frame1->Parent = Form1;
  TFrame2 *frame2 = new TFrame2(Form1);
frame2->Parent = Form1;
のように記述しました。
すると、2つ目のnewのところで、
「コンポーネント名Frame2はすでに使われています」
というエラーが出てしまいました。
ここでつまづいております。
原因がお分かりの方いらっしゃいましたら、是非ご教授ください。
Socketについて詳しく説明しているサイト紹介してください
できれば日本語でお願いします
>>474
ヴォケ。最初から>>474の内容で質問しろ。
回答する方は二度手間なんだよ。
情報を後だしする質問はマナーに反するし、どのスレに行っても嫌われるぞ。
以後気をつけるべし。

んで、回答。
原因はエラー表示の通り。TFrameのインスタンスにはデフォルトのNameがある点に注意。
だから、フレームのインスタンス毎に別々のNameをつける必要がある。
たとえば、
TFrame2 *frame1 = new TFrame2(Form1);
frame1->Name="frame1";
frame1->Parent = Form1;

TFrame2 *frame2 = new TFrame2(Form1);
frame2->Name ="frame2";
frame2->Parent = Form1;
478かみかみ:04/01/29 16:29
>>477
どうもありがとう。
早速やってみたところ、ちゃんとできました。
昨日からずっと考えていたことだったので、
とても助かりました。
ほんとにありがとう。
質問の仕方は、以後気を付けますね。
479デフォルトの名無しさん:04/01/29 19:17
StringGridのDrawCellイベントでカーソルのあるRowにしかイベントが入らないのですがなぜですか?
480デフォルトの名無しさん:04/01/29 19:20
あ、おまいらごめん、わかったわ!
DrawCell引数のAColじゃなくてStringGridのColでアレしてたからだわ
ほんとおまいら氏ねよ
お茶目ね
ビルダーでアセンブラファイルを出力したいですけど
どうすればできますか?
ラーニング版だとできないのですかおしえてください。
>>482
bcc32 -s target.cpp
>>483
ありがとう
といいたいところですがTASM32.EXEが必要かも

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

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

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

495デフォルトの名無しさん:04/02/02 10:22
2つの同じTTableがあって、片方にレコードを追加したら
もう片方はいったんCloseしてOpenしないと更新されないのですが
Closeせずに更新する方法をおしえてください
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です
>>496
わかりません
配列じゃないときはintに拡張されるからかな



あとなんでstdをつけてるの
498デフォルトの名無しさん:04/02/02 20:03
Builder6エディタのフリーカーソルを禁止に設定出来ないですかね?
BCB6のエディタもBuilderXと同じようになればいいのにね
502デフォルトの名無しさん:04/02/02 20:58
Builder5にて、Excelファイルへ書き込むプログラムを作成したいのですが、
参考になるオープンソースは無いでしょうか?
503デフォルトの名無しさん:04/02/02 20:59
VisualC++でコンパイルしたコードをC++Builderで実行したら
符号付き値と符号なし値の比較
とかいう警告が出てくるんですが…
ついでに結果がVC++とC++Builderで違います。
STLを使っているのですが、なにか移植に関して注意するようなことはないのでしょうか?
よろしくお願いいたしますm(_ _)m
>>502
この前Delスレでもあったけど、TExcelApplicationはダメか?
あれ?BCB5にあるんだっけ?
>>497
using namespace std;
してるじゃん
506デフォルトの名無しさん:04/02/02 21:35
>>504
レスありがとうございます。
多分OLE経由でやるってところまでは分かるんですが、
プロジェクトごとソースがあれば参考になると思いまして。
全く分からなかったので質問させていただきました。
507デフォルトの名無しさん:04/02/02 21:40
>>504
読み込みだけでしたら、こちらのサイトで分かったのですが・・・
http://www.geocities.co.jp/SiliconValley/4805/bcbtips/bcbtips078.htm
>>506
Delだけど、真似してみれば?
ある程度までできたら、残りはExcelVBAだから。
ttp://www.geocities.jp/lupin_home/delphi/index.html#21
509デフォルトの名無しさん:04/02/02 21:52
>>508
ありがとうございます!
Delphiですか、初めてですが、とりあえずそのままコピペしてみます。
ちなみに、 「CreateOleObject」を使用する際、
Serversコンポーネントの「ExcelOLEObject」をFormに貼り付ける必要はあるのでしょうか?
(初心者ですみません)
>>500
ありがd^^
>>509
いや、いらないはず。
512デフォルトの名無しさん:04/02/02 22:38
>>511
早速のレスありがとうございます。
[C++ エラー] Unit1.cpp(31): E2268 未定義の関数 'CreateOleObject' を呼び出した
と、エラー発生するのですが、原因わかるでしょうか・・・
513デフォルトの名無しさん:04/02/02 22:39
>>512
必要なライブラリをリンクしたか?
514513:04/02/02 22:39
あ、この場合はプロトタイプがないからかな。
だとしたら必要なヘッダーファイルをインクルードしていないから。
515デフォルトの名無しさん:04/02/02 22:54
>>513
ヘッダーをインクルードする必要があるのですか、なるほど。
この場合、なんというヘッダでしょうか
ヘルプには見当たらなかったのですが・・・
516デフォルトの名無しさん:04/02/02 22:57
>>513さん
何から何までお世話になり申し訳ありません。
それと同時にサクサク教えられるので尊敬のまなざしです。
>>516
ヘルプにComObjと書いてあるけど
518デフォルトの名無しさん:04/02/02 22:59
>>513
どのヘッダーをインクルードしなければならないか、
と言うのは、何かヘルプになる資料はあるのでしょうか?
(それとも、すでに常識で皆さん暗記が必須事項でしょうか?)
もし参考になるものがありましたら教えていただけると助かります。
>>518
ヘルプで関数なりを引けば「ユニット」という項目に書いてある。
520デフォルトの名無しさん:04/02/02 23:07
>>517
おおおぉー
これが、必要なヘッダだったんですか。
すみません、知りませんでした・・・
ComObjをインクルードする場合、#include ComObj ではありませんよね?
c++は素人で、今までCしかやったことが無く
質問ばかりでご迷惑おかけします。
>>520
そろそろ自分でヘルプを見ることを覚えませんか?
522デフォルトの名無しさん:04/02/02 23:32
>>520
申し訳ありませんでした。
ヘルプに
「COM オブジェクトを作成するには,CreateComObject を使用してください。」
と書いてありました。CreateComObjectを調べてみます。
>>522
ぉ〜ぃ、ちゃんと読め。
ヘルプにそんなことは書いてない。
524デフォルトの名無しさん:04/02/02 23:44
>>523さん
あら?CreateComObjectは関係ないということでしょうか。
「説明」に書いてあることをもっとよく読んでみます。
(違うところを読めという事?)
とにかく、ご指摘ありがとうございます。
>>524
>IDispatch インターフェースをサポートしない COM オブジェクトを(以下省略)

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

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

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

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






ま、ゆっくりしていけ。
533現調中:04/02/03 17:45
>>532
応援ありがとうです。
はぁ・・こんな所で引っかかるとは思いもしなかったな・・。
出来ればゆっくりしたくないので引き続き調べてトライしてみます。
>>533 ちょっとかわいそうなのでVCL読んでみた。
やっぱりPrinter.Canvasに直接描画っぽい。

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

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

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




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

ということでゆっくりしたくないのでもっと実験します・・
536デフォルトの名無しさん:04/02/03 19:02
PaintToメソッドでメタファイルキャンバスに一旦書き出し、
それをスケール調整してPrinterキャンバスに描いてみては
いかが?
よく知ってそうな人が出てきたので撤収。
 
 
 
 
 
一日は24時間あるさ。
538536:04/02/03 20:04
ヒントはここまで。
ついでいうとPaintToはコンボボックスの中身だけなぜか描いてくれない。
539現調中:04/02/03 20:51
だめだ〜〜〜。もうだめっぽい・・。
先方説得してVBで組むか・・・
542かみかみ:04/02/04 19:34
いつもお世話になっております。
以下の件について、ご存知の方おられましたら、ご教授願います。

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

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

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

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





まあ俺もDelphiの関連付けを乗っ取られたわけだが_| ̄|○
すみませんです。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() がそれぞれ組み合わさります。
ボタンをかっこよくしたいんですが
どうすればいいですか?
>>547
センスを磨いてください。
>>546
BCBのincludeディレクトリ以下のどこかにshdocvw_ocx.hというファイルがあるので、
それを削除すればOKなはず。
BCB6にIndy9のインストールをしようとして、Fullc6.batを実行しC6というフォルダにできた
dclIndy60.bplをパッケージのインストールで追加しようとすると、「プロシージャエントリポイント
@Idresourcestring@_RSBindingAny がダイナミックリンクライブラリ Indy60.bpl から見つかりませんでした。」
と言われます。アップデートは当ててあるのですけれど・・・。
タイトルバーに色をつけたり
閉じるボタンを自作のアイコンに変更したりしたいんですが...
552デフォルトの名無しさん:04/02/05 18:04
>>551
頑張って下さい
リージョンでクライアントエリアくりぬいて自分で描画&メッセージ処理
XPでやってる奴。
てゆうか、そうゆうことやる前に内容きっちり作りこんでほしいね。
555546:04/02/06 01:04
>>549
ありがとうございます。できました。感謝です!
556デフォルトの名無しさん:04/02/06 06:18
BCB5でスマートポインタ及びその配列を使いたくて
そのためにテンプレートを書くのはちょっとと思い、

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

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

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

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

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

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

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

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

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

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

本当に有り難う御座いました。
>>568
フォームは別に作って、それをインクルードしたらいい
573558:04/02/07 05:29
>>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
574568:04/02/07 15:24
>>572 できました。ありがとうございました。
Builder6ですが、文法チェックのため”コンパイルのみで実行しない”
というのは出来ますか?
>>575
Ctrl+F9とかAlt+F9とか。
メニューの「プロジェクト」見れ。
577ぬるぽ:04/02/08 09:31
>>576
サンクスです。
「実行」メニューしか見てなかった^^;
TMemoのFontを「MSゴシック」固定にしたいのですが、
Charsetプロパティへセットする定数の値が分かりません?
 memo->Font->Charset = ?
教えてください、お願いします。
>>578
grep
構造体って、サイズが大きすぎるとエラーが出るらしいですが、
最大何バイトまでOKなのでしょう?
それから、AnsiStringみたいな可変長変数の扱いはどうなるんでしょう?
>>578
CharsetじゃなくてNameじゃないのか?
>>580
予約スタックサイズの設定次第
巨大な静的宣言された配列使わない限りは普通、問題は出ない

AnsiStringの様なクラスはプロパティの合計サイズと同じだったはず。
>>582
ありがとうございます。
予約スタックと静的変数を検索してみます。
初心者的な質問ですいません。
TCppWebBrowserを使った開発をやっているんですが、
Webが表示されたのはいいんですが、例えば2ちゃんねるなどの掲示板へのカキコの
際にエンターで改行して書くにはどうすればいいんでしょうか?
一番手っ取り早い方法を教えていただきたいです。
urlencode
>>582

staticだと、スタックとは関係なくなるんじゃないか?

・global/static/動的に確保
  ->heapに領域生成
   ->マシンの(OSの/処理系の)メモリに依存
・通常のlocal
  ->スタックに依存

でしょ。

MS-C4.00のころはそうでなくても乏しいメモリ環境の中で
環境変数をスタックにコピーしてたのですぐにスタックが
足りなくなってということもあったけど、
最近はそういうことはほとんど起こらないだろう>>580

というかそんな噂みたいな聞きかじりを心配しても意味が無いと思う。
ちゃんとしたソースなり文献なりをあさるべし。
タブ型テキストビューワー・アプリにて、エクスプローラー等外部から複数回 
起動された場合の対応として
 1)最初の起動時、ハンドルを共有メモリにセーブする。
 2)2回目以降の起動時は、共有メモリのハンドルに対しパス名+ファイル名
をSendMessage"WM_COPYDATA"し終了する。
  (初回、2回目以降の判断はミューテックス使用)
 3)通知されたファイルを新たなタブで開く。
こんな方法しか思いつかないのですが、もっと簡単な方法ってありますか?
DLL内のスレッドでキー入力を捕まえて中断処理に使いたいのですが、
うまくいかなくて原因がわかりません。
やったこと:スレッドのコンストラクタでAllocateHWnd()でハンドルを取って、
RegisterHotKey()でホットキーを設定してみました。
で、execute()内でkeybd_event()でダミー入力を起こしてみたのですが
WndProc()にWM_HOTKEYが帰ってきてくれません。
実際にキー入力しても反応ありません。
フォームを使わない入出力(というかDLL作成)は初めてで
勝手がわかりません。基本的におかしい所があるんでしょうか?
Mr.XRAYが作成した plButton のC++Builder版みたいなの
ないですか?
590デフォルトの名無しさん:04/02/11 03:12
Editを複数作って、"Hello."を出力するEditの場所を選びたい時にはどう書いたらいいのですか?
例)
int index;
Edit(…)->Text="Hello.";

(…)にはindexの数を当てはめたいのです。
教えてください!
配列に入れとけば?
switch/caseは?
593デフォルトの名無しさん:04/02/11 03:40
すみません、何を配列にするんでしょうか?indexですか?
Editがたくさんある場合を想定しています。
プログラム始めたのが最近でまだあまりよくわからない初心者なもので…。
あ、sage忘れました。m(_ _)m
>>593
Editがたくさんっていくつ?
たくさん置く実装のほうが間違っているよ。
あなたが初心者ならなおさら。

学習が目的ならC++の勉強からはじめな。
数時間から十数時間の勉強でわかるようになるよ。

あ、何か聞きたいことが違っていました!
indexが1〜20まで、EditBoxが1〜20まであります。

for(index=1;index<20;i++){
ここで、hogeがなんらかで決まる。
if(hoge=1)Edit(…)->Text="Hello.";
if(hoge=2)Edit(…)->Text="Hello2.";
………
if(hoge=20)Edit(…)->Text="Hello20.";
}
な感じにしたいのです。
別にhogeは20個に限りません。

やっぱり実装が間違っているんでしょうか…。
例を見ると学習ぽいですが、
本当は、複数あるグラフボックスの下にグラフの判定結果を出力したかったのです。
598デフォルトの名無しさん:04/02/11 04:10
TEdit *eba[20];
eba[0] = Edit1;
eba[19] = Edit19;

eba[hoge]->Text = "hoge"
実装的におかしいのは、普通、それだけのEditが必要なら
設計時にポトペタするんじゃなく、動的に作成するって事だな。

で、indexでアクセスするなら
TEdit *edits[] = ...
とすりゃいい。...の部分は
{ Edit1, Edit2, Edit3, ... } でもいい(これならローカル配列でも初期化できる)し
Create時にnewしてもいい(この場合は配列をFormのメンバにする)。
ありがとうございます!それでやってみます。
とても助かりました。(´ー`)♥
601587:04/02/11 06:40
>>587
簡単には出来ないのかなぁ・・・
>>590
FindComponent
>>601
DDE使ってみるのは?
簡単かどうかは知らんが。
604デフォルトの名無しさん:04/02/11 18:37
質問です。
CppWebBrowserで現在表示されてるHtmlのソースを取得したいんですが、うまくいきません。
IEの「ソースを表示」とかと同じことをしようとしてるんですが…。

IHTMLElement *el;
TComInterface<IHTMLDocument2> doc2;
wchar_t *wcpp;

doc2 = CppWebBrowser1->Document;
doc2->get_body(&el);
el-> get_outerHTML(&wcpp);
Memo1->Text=AnsiString(wcpp);

一応上のコードでhtmlの<body>タグ内のものは取得することが出来たんですが、
そうではなくドキュメント内の全てのコードを取得したいんですよね。
なので次のような書き方にして、

IHTMLElementCollection *el;
doc2 = CppWebBrowser1->Document;
doc2->get_all(&el);

みたいにget_all( )という関数がそのものズバリなのかと思ったんですが、
そこから全てのコードを取り出す関数が見つかりませんでした…。

どなたかお助け願います
605587:04/02/11 19:04
>>603
SendMessageだと共有メモリを介してハンドルの受け渡しが必要に
なるため、DDEの方がスマートに出来そう (たぶん・・・^^;)
情報サンクスです。
動的に生成したコントロールのイベントハンドラの
登録(コントロールとイベントハンドラの関連をコンパイラへ通知)
方法が分かりません。教えてくださいお願いします。
>>606
コンパイラに通知してどうする(w
イベントハンドラもプロパティだよ。代入すればいいだけ。
NewComponent->OnClick = OnHogeClick; //OnHogeClickが既存のイベントハンドラ
608デフォルトの名無しさん:04/02/11 20:43
TreeViewのDragModeをオートマティックにしてドラッグすると、
強制的にOnClickとOnMouseDownが実行されてしまいます。

OnDragOver内でドラッグ中にフラグを立てて、OnMouseUp時にフラグの値を元に戻す、
という方法も試してみたんですが、どうもうまくいかないです。

みなさんどのような方法でこれを回避してるんでしょうか?
>>607
そっかw、ありがd
>>608
具体的に何をしようとしているか分からんとアドバイスのしようがない。

一般的に言うなら、ボタンが押された時点で、エンドユーザの意志が
「クリック」なのか「ドラッグ」なのか判断するすべはない。
だからOnClick, OnMouseDownとドラッグとで互いに競合する処理を
割りつけるのがそもそも不味いわけ。

たいていのアプリでは、OnMouseUp時に処理を行うようになってるはず。
これならドラッグ後はスキップするようなことも簡単にできる。
611デフォルトの名無しさん:04/02/11 22:46
>>610
> 具体的に何をしようとしているか分からん

クリックすると処理の実行、ドラッグすると単に順番を入れ替えるだけ、です。

> 「クリック」なのか「ドラッグ」なのか判断するすべはない
> たいていのアプリでは、OnMouseUp時に処理を行うようになってるはず。

単純な指摘ですが盲点でした、そうか、それならOnMouseUpに書けば上手くいきますね!

で、こんな流れでコードを書きました。
まず、OnDragOver内でフラグを立てて、OnMouseUp時にもしフラグが立っていたら処理はキャンセルして
フラグの値だけ元に戻す。

これでイケルはず、と喜び勇んでやってみたんですが、驚くべきことにノードのドラッグを開始した途端に
なんとOnMouseUp内の処理が実行されてしまいます!!
調べてみたところ、OnDragOverよりも先だってOnMouseUpイベントが発生してる模様です。

しかし、そのまま一旦ドラッグしたものを放して、再度何かをドラッグすると、
次はちゃんとフラグが立って処理が実行されることはありません。
ただし、その後一度ドラッグなしにMouseUpイベントを実行させた後はまた同じように振り出しに…。


TTreeViewコンポーネントは一つだけ、動的に作成したものではない。フラグ用のメンバ変数もかぶってない。
イベントを他のイベントと間違えてつけてやしないかとインスペクタを見直してみてもちゃんと合ってます。
これは一体…。というか仕様ですか?BCB6なんですけど。


>>611
実験してないからなんとも言えんけど、その症状はフラグの管理を
失敗している気がする。
>>612
そうですか、もう一度見直してみることにします。
ありがとうございます。


確認のためにどなたかご存じの方にお聞きしますと、
BCB6(のVCL)ではノードのドラッグを開始すると
OnClickやOnMouseDownのみならずOnMouseUpも実行されるっていう仕様なのですよね?
614デフォルトの名無しさん:04/02/11 23:45
んなわきゃない
実験してみた。

DragMode=trueでは
クリック時
 マウスボタンアップ時に
 OnMouseDown, OnClick, OnMouseUpが連続して発生
ドラッグ時
 ドラッグ開始時にOnMouseDown, OnClick, OnMouseUpが連続して発生
 その後OnDragそしてドロップ時にOnDrop発生

というかなり変則的なイベント。
うーん、これは予想外。
対応策は・・・ちと思い付かんな(w

×DragMode=true
○DragMode=dmAutomatic
>>615
あー、お手をわずらわせてしまってすいません。
やはりかなり変則的な仕様になってましたか…。
自分で前に簡単に試してみても同じような結果になったんですよね。
ついでに言うとOnMouseMoveも連続発生組だったと思うのでどうしようもないですね。

初心者なものであまりそのことで難しいコード書いたりするのも何なので、
最終手段としてとっておいた、ダブルクリック時に処理を行う、という流れに変更したいと思います。
どうもありがとうございました、感謝。
618デフォルトの名無しさん:04/02/12 02:32
失礼します。TreeView関連で質問ですが、nodeをMoveToで移動させる時、
MoveTo( hoge , naInsert) でhogeの一つ前には移動できるものの、
一つ後に移動させる方法がわかりません。
hogeが最後の兄弟だったりしたケースなどを考えると解決策がどうも
浮かんでこないのですが、よろしければご教授くださいませ。
よろしくお願いします。
619デフォルトの名無しさん:04/02/12 08:49
BCBと関係なくて恐縮なんですが、
どなたかParadoxの仕様(最大レコード数とかサイズとか)が載ったサイトって
ご存知ないですか?
621デフォルトの名無しさん:04/02/12 14:59
BitBtnやSpeedButtonてToolButtonみたいに普通にビットマップを
表示させる方法を教えてください。
622デフォルトの名無しさん:04/02/12 19:27
DBGridのOptionを実行時に変更したくて、次のようにやってみましたが
変更されません。
どうしてでしょうか?教えていただけませんか?

if( CheckBox1->Checked ){
DBGrid->Options = DBGrid->Options << dgTitles;
}else{
DBGrid->Options = DBGrid->Options >> dgTitles;
}

BCB6 Win2Kです
>>622
プロパティに<< >>は使えないんじゃないの?
>>622
DBGrid->Options << dgTitles;
は?
>>622
書式そのものはそれでいいはず。
念のためそのコードが実行されているかトレース。
あと、dgTitles以外の値もダメ?
>>622
TDBGridOptions のような集合型は、極力モノグサしない方が
経験上、後腐れないですよ。

TDBGridOptions dgoTemp;

dgoTemp = DBGrid->Options;
dgoTemp << dgTitles;
DBGrid->Options=dgoTemp;

という感じで、一度変数として取り出し、操作してからまた元に戻す…
というのがよろしいかと思います。

なぜそのようにしないとうまく動かないのかはわかりませんが。
BCB6でSamplesパレットにあるTrayIconコンポーネントを使いたいのですが、
プロパティのVisibleの値を非常に早く変化させると
「EOutOfResourcesクラスの例外を生成しました。'Cannot Remove System Shell Notification Icon'」
というエラーが出てしまいます。
チェックボックスとトレイアイコン表示を連動させていると、
ユーザーにチェックを連打された時にこのエラーが発生するとまずいので、
エラーが出ない対処法を何か教えていただけませんか?
628デフォルトの名無しさん:04/02/13 17:33
>>622
それであってる、原因はほかにある

つうか>>621教えてくれ
>628
Glyphプロパティじゃ駄目なん?
630ML-:37332:04/02/13 18:17
互換性がないのは某が悪いけど、元に戻せないのは開発者が悪い。
業務に使えないのはBCBでなく、バックアップも取らないお前。
631622:04/02/13 18:23
激遅かつまとめレス失礼
>>623
Stringgridだといけたんですよ。

>>624
言葉足らずすんません、それもやってはみたんですが。

>>625
うぅ、トレースでは確実に実行されているんでInvalidateしたりもしたけどだめでした。

>>626
ありがとうございます、それでいけました。
623さんへのれすにもかいたようにStringgridだといけたのになぁ。

皆さんありがとうございました。
632デフォルトの名無しさん:04/02/13 19:57
>>629
ビットマップの大きさが変えられないんよ、それにあれって4分割でアレしてるから
>>632
TSpeedButtonなら大きさに合わせて表示できると思うけど。
4分割も使わなければいいだけのはずだし。

俺が勘違いしてるのかな?
634604:04/02/13 23:49
誰か機嫌良い人。
週末の前に僕の質問に答えてみませんかぁ!
636604:04/02/14 03:14
Delの上に英語…_| ̄|○

でも誰も答えてくれなかったので嬉しい_| ̄|○
637デフォルトの名無しさん:04/02/14 08:54
FormにC
ふぉ、ふぉーむにしー?
なんだろ
639初心者:04/02/14 16:31
FormにCppWebBrowserを二つ貼り付けて、片方を、リンクをクリックしたら読み込みにいかせて
結果はもう片方に表示させるなんて事はできるんでしょうか?
その必要性は別として。
640reiko:04/02/14 16:36
あのー。プログラマーの皆さんはウィルスとかにも詳しいのでしょうか。
私ウィルス対策のためウィルスの研究をしています。変わったウィルスを
お持ちの方、ご存知の方reikoに送信していただけないでしょうか。
お待ちしています!
C++で質問なんですが
2行3列の行列の和を求める関数 int sum(int x[][3],int y[][3],int z[][3])
で仮引数x[][3]をx[][]と出来ないのは何故ですか?

また、この関数だとn行3列の行列の和しか出せないのですが
n行m列の行列の和を出す関数は作れないんでしょうか?
642641:04/02/14 17:06
どうもスレ違い臭いので取り消します;
無視してください
bcc5.5.1を使用している初心者なんですが
WNDCLASSEXはサポートされているんでしょうか?
>>643
そら必要なヘッダさえインクルードしたらな。

以降、BCCの話題はこっちのスレへ
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
>>644
ありがとうございました。
次からそうします。
マジでヤヴァイたすけてくれ
C++Builder5からC++Builder6にアップデートしたら
.bprファイルのアイコンがC++Builder5のままだった。
「何でだよボケ」とか思いながら再起動したら、C++Builder6の新しいアイコン
に代わっていた、ところが次に再起動してみるとまたまたC++Builder5のアイコンに
戻っていた…
 再起動するたびに5のアイコンだったら6のアイコンだったり怖すぎ。
これには裏にBorlandの大いなる意志が働いてるんだと俺は思う。
((;゚Д゚)ガクガクブルブル
>>646
プログラマに向いてないと思うぞ。
>>647
そういうツッコミは野暮でしょ
649デフォルトの名無しさん:04/02/15 00:19
>>646
それは大いなる意志に違いない。
速やかにBCB6を俺によこせ。
もともとでDBには,1.23456というような小数第5位まであり,
これをDBGridに表示するときには1.23のようにしたいのですが,
DBGridの表示形式を変更するということは可能でしょうか?
>>650
TFieldのOnGetTextあたりで細工しれ。
DisplayFormatでもいいが。
__fastcall
これってなんなんでしょう?ヘルプをみても
「引数をレジスタで渡す関数を宣言できます」なんていわれてもぱっときません
どういうものなのでしょう?
>>652
CPUペイン見れ。できるだけ多くのレジスタを使って関数の
パラメタを渡すようになる。でも結局__fastcall関数内でその
レジスタを待避しなければならないので本当に速くなるか
どうかは疑問の点もあるが。
>>652
デルファイとの互換のためにあるので、
BCBしか使わないなら気にする必要なし。
655650:04/02/16 01:59
>> 651さん

レスありがとうございます!DBにもともとあるフィールドに対しては
できました.
例えばDBの第1回模試というテーブルの中に英語と数学というフィールドが
あったとして,
Select (t1.英語+t1.数学)/2 as 平均 from 第1回模試 as t1;
を実行したきの"平均"の表示形式を変更することはできるのでしょうか?
>>650
動的に項目作成するなら、プロパティもそのときにせっていしてやれば?
C++Builder6使ってるんだけど、コーディング支援の表示が遅いんです(TT
Delphi6も同じく使ってるんだけど、Delphi6はすごく早い。
ところがC++Builderはメンバー一覧がでるまで「がががが...」しばらく
swapしてから表示される。この待ち時間中はキーをたたいてもエディタに
反映されないので待つしかないのです。
これ早くする方法ないのですあ?…やっぱりデフラグですか?
>>657
ない
>>657
自動支援機能を全部切れ(・∀・)
必要な時だけCtrl+Space押せば問題なし
>>657
CPUを速くして、メモリを倍増させて、HDDを速いのに代えて・・・。
それでダメならユーザを交換しる!
661デフォルトの名無しさん:04/02/16 14:46
>>633
レスあり、遅レスすまん
えとTSpeedButtonは大きさに合わせてできなかったんだけど、できる?
4分割は使わなくていいんだけど、勝手に分割されて・・しかも変なふうにl
662650:04/02/16 21:25
>> 656さん

そうしたいんですけど...
実行するSQLにEditから入力した値を渡しているので,DisplayFormatが
使えないんですよ.
>>657
どれ位のスペックのマシンですか?
俺はPen4 3.2G、デュアルチャンネルDDR-SDRAM3200 1G、
Serial ATA7200rpm、WindowsXP等を使用しておりますが
ほとんどストレスなく自動支援が働いております。
BCB6 で XP のテーマに対応した描画をしようと思い
Uxtheme.h をインクルードしたんだが
宣言には識別子が必要と怒られた。
もしかしてマニフェスト使うしか方法無いの?
665デフォルトの名無しさん:04/02/17 07:36
PC9821V200s7cでBCB6してる漏れはガンガッテいいですよね?
>>663
Pen3 1Ghz、RAMは327MB
Win2kでHDDの回転数は不明です
メモリが少ない
668デフォルトの名無しさん:04/02/17 11:01
>>667
メモリってそんなにつむものなんですか?
669デフォルトの名無しさん:04/02/17 11:05
327MBっていつの時代だよ。
PIIIって815なんかだと512M以上積めないからなあ。
今だと開発機は普通に1GBくらいじゃないかな。
671デフォルトの名無しさん:04/02/17 11:16
うう、いつのまにかメモリは1GHzつむのがあたりまえみたいになってきてますね
わかりました、メモリ増設します。
Hzじゃねーw
673デフォルトの名無しさん:04/02/17 12:16
>>672
おっと、失礼w
674デフォルトの名無しさん:04/02/17 14:48
BCDって一旦文字にしないとintにできない?
>>674
なんでやねん?
676デフォルトの名無しさん:04/02/17 15:01
>>675
いや、つうかさ?
BCDの0x20てintで32じゃん?
これintで20ってするのにどうやってやりますか?
最近Cはやってないけど、こんな感じかな?
(x >> 4) * 10 + (x & 15)
せめて(x & 0x0f) と書いてくれ
BCBのRAD環境より、VCのVisual開発の方が最近RADな感じに思えてきた。
VCLさえあればRADな所は損なわれねーから
VCLを利用してVCでコードのみ作成したいんだけど、インクルードパスを設定しても
補完機能が働いてくれねー。

VCLはポトペタよりコーディングした方が管理しやすいので
補完機能を何とかしたいんだが、どうにかならんかね。
いっとくけど、MFC使えなんてのは無し。MFCはRADじゃねーから。

BCB5 Learning
VC6 Standerd
>>679
VCLのヘッダは某の独自拡張機能使いまくりなのでVCのIDEじゃ解析できないかと
681デフォルトの名無しさん:04/02/17 19:07
>>677
お、マジかいなー
どれどれ計算してみるわ、あんがとさん♥
682679:04/02/17 20:16
そうなのかー
Pro版買えってことですね。(鬱
サラ金行って来るかな・・・
684682:04/02/18 07:02
要するに>>683が言いたいのは、
ラーニングエディション買った俺がろくなプログラムを書けないから
誰か責任取れバカと言っている。

>>683はプロ版を使っており、
ラーニングエディションを買った俺がバカだと、言いたいわけだ。
>>683の心の師匠がエンタープライズ版を使ってもっと凄い物を作ってる。

ということかな?(w
>>684
気にせずPro版なりEnt版なり買え。切羽詰まったらマグロ相手の仕事を紹介してやる。
釣りが目的じゃないから、移動中にプログラム組めるだろ。

ということで。
64ビットのInt型整数を扱いたいのですが
C++Builderではどのようにすればよいのでしょうか?
__int64
688 :04/02/18 13:12
コンポーネントを自作すると、設計時のキャプション変更のときCM_TEXTCHANGEDメッセージが一文字変更するごとに飛んできません。
Delphiで作るとちゃんとキャプションを一文字入力するごとに飛んでくるのに。これは自分だけですか?

private:
void __fastcall CMTextChange(TMessage & Message);
protected:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(CM_TEXTCHANGED, TMessage, CMTextChange)
END_MESSAGE_MAP(TGraphicControl)

void __fastcall TSimpleButton::CMTextChange(TMessage & Message)
{
TGraphicControl::Dispatch(&Message);
Invalidate();
}
INT64
LONG64
LONGLONG
>>650

DataSet->FieldByName("平均")->DisplayFormat = 〜〜
どなたか、TButtonのボタンがフォーカス持った時に表示される
点線の四角形を表示させない方法を教えていただけませんか・・?
>>691
TBitBtnに代える。
693691:04/02/19 00:10
>>692
変えてみましたが点線の四角は表示されてしまいますが・・
>>693
ごめん。TSpeedBtnに代える。
695691:04/02/19 00:35
ありがとうございます。
TSpeedButtonはHandleプロパティを持ってないからどうしようか迷ってるんです・・。
BCBのデフォルトで付いてるコンポーネントでHandleも持ってて実現できるのは無いですかねぇ。
>>695
TButtonやTSpeedBtnのOnClickでFormのActiveControlをNULLにすると
フォーカスが外れる・・・と思ったけど押されている間はフォーカス表示が
出てしまう。う〜ん。
>695
私は押したままの状態になるボタンをTPanelで作った。
BevelInner/BevelOuterを両方bvLoweredにするとへこみ、bvRaisedにすると盛り上がる。
標準のボタンが気に入らないときは、たいていこれを使う。
698691:04/02/19 01:46
>>697
おお、OnMouseDown/UpでBevelプロパティを変えたらいい感じになりますね〜
どうもありがとうございます。
696さんもありがとうございました。
TreeViewについて質問です。
Node単位で文字コード順にソートを行いたいのですがどの様な方法が良い
でしょうか?
これまで調べた内容では、AlphaSortは文字コード順ではない事がわかりました。
CustomSortProcというメソッドを使ってみたのですが、使い方がよくわかりません。
strcmpで比較できるようにソートする事が最終目的です。
700699 :04/02/19 04:20
解決しました
>>700
どう解決したか書いてくれるとうれしいな。
DataSetで現在アクティブなフィールドを知るに
はどうすればいいですか?
誰もQueryPerformanceCounterを使ってないのかな?<ML
C++Builder6を使用しているのですが、画像を埋め込んだHTMLドキュメントを返す
CGIから画像を取得して取得したファイルをローカルフォルダに保存する方法が分
からなくて困っています。そもそもHTTPでネット上のリソースをダウンロードする事
って可能なんでしょうか?
>>704
WWWの基礎から勉強し直せ
>>679
俺はサクラエディタを使うようにしてる。
補完機能自体はキーワード登録 (設定ファイル編集)が要るし、正直原始的なものではあるが
Builderのエディタなんぞより1億倍使いやすい。
708デフォルトの名無しさん:04/02/20 16:10
固定長のファイルのレコードをTMemoryStreamで簡単に削除する方法教えてください
709デフォルトの名無しさん:04/02/20 17:06
ラベルなどのコントロールの複製をコード上で作る様にしたいのですが、
どうやったらよいでしょうか?
ボタンを押すごとにラベルが増えていく・・・
みたいにしたいのですが、Loadなんたらで検索しても
みつからないので困ってます。

CBはVCよりよほど使いやすくていいですね。
>>708
不要なレコードをそれ以降のレコードで詰めるしかない
あるいは必要なレコードのみを新しいファイルにコピーするか

>>709
new そして TControl::Parent
>>709
>>2のビギナー向けtipsのページの「コンポーネントを動的に作成する」を見るといい
712デフォルトの名無しさん:04/02/20 17:59
>>711
おー。なるほど。
わかりました。ありがとうございます。
猫のページのWinAPIプログラムのソース打ち込んでコンパイルしたら
Error: 外部シンボル’main'が未解決
って出てコンパイル出来ないんですが、どなたか何故か教えてくれま
せんか・・・
コンパイルというよりリンク出来てないのか・・・
>>713
-W
>>715
有難うございました!
初歩的な質問で申し訳ありませんでした・・・
>>716
それ以前にスレ違い

bcc32単独の話は↓
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/
718名無し:04/02/20 23:26
データベースデスクトップで扱っているDBで、
MySQLとPostgreSQLユーザーに最適なRDBMSを教えてください。
719704:04/02/21 10:16
>>706
遅レスすみません。
こういうページを紹介して貰えると非常に助かります。
ありがとう御座いました。
Builder6にて、フォームを追加したのですが
Unit2.cppを変更して実行(F5)してもコンパイルのみで
リンクされてないのか、実行したアプリは変更が反映されません。
再構築(F7)すると変更が反映されるのですが構築時間がかかってしまう・・・
効率の良い方法は無いですか?
乱数が毎回同じになるのでRandmizuを呼び出したいのですが、
ソース、ヘッダーのどの部分に、どよのように記述するかわかりませ。
ご教授おねがいします。
722721:04/02/21 23:44
誤字だらけでした。
Randmize,どのようにの間違いでした。
回線で首吊ってきまつ。
Randomize
どっかに起動時に一回通るところに
randmize();
って書くだけ。
725721:04/02/21 23:52
>>724
サンクス。
しょぼい質問、誤字だらけでスレ汚しすまそ。
726デフォルトの名無しさん:04/02/22 01:33
質問です。
Templete(汎用)クラスを作ったんですが、ソースファイルとヘッダーファイルに分離すると、リンカエラーが出てしまいます。
これはC++の仕様なんでしょうか?

ちなみにヘッダー部だけで実装すると、リンカエラー無し(正常)です。
仕様を満たしていない、が正解。
>>726
そらスレ違いだろ

>>727
今んとこメジャーなコンパイラで"export"をサポートしたものは確かないんじゃ?
729デフォルトの名無しさん:04/02/23 23:25
TStringGridでEXCELみたいにセルの結合ってできますか?
>>729
無理
731デフォルトの名無しさん:04/02/24 15:15
マウス位置の絶対座標をゲットするVCL教えれ
>>731
GetCursorPos APIではダメか?
733デフォルトの名無しさん:04/02/24 15:31
>>732
VCLつってんだろっ!

まあTMouseでOKでたからいいや
やれやれ
C++builder6で、監視式を複数登録しておいても、プロジェクトを
一度閉じて開き直すと、最初の1個以外は全て消えてしまうのですが、
消えないようにする方法があったら、教えてください。
736デフォルトの名無しさん:04/02/25 04:26
すいません、TStringListにCSVデータを読み込ませてるんですけど、

AnsiString str = "aaa , bbb , C:\Documents and Settings\hoge\デスクトップ\test.txt";

TStrings *csv = new TStringList();
csv->CommaText = str;

上のようにやった場合、「 and 」っていう半角スペースに挟まれた文字列のところでも
区切られてしまうんですよね。
これを回避するには、一旦TStringsに読み込ませる前に文字列「 and 」を
他のユニークな文字列と置換しておいて、
その後で、再度元の「 and 」に置換し直すって方法しか浮かばないんですが、
他にもっと簡単な方法ってありますでしょうか?
737736:04/02/25 04:28
あ、違う、「 and 」って文字列だけ区切り対象になるんじゃなくて、
半角スペースに挟まれた場所なら全て区切り対象になるようです!
やれやれ、とほほ。
>>736
QuoteCharでなんとかするとか。
>>737
言うとくけど、それが正常な動作。
CammaTextはシステムデータ形式なのでスペースも区切り文字として扱う。
ヘルプをちゃんと読むべし。
>>736
オレだったら何も考えず
boost::tokenizer
使うな。
741デフォルトの名無しさん:04/02/25 12:54
ActiveXフォームを作ろうとしてますが、
ユーザ定義のイベントをどうやって実装すればよいのか
わからず困ってます。
(引数あり、なし共に)

解説しているサイトもあるにはあるのですが、
断片的でちょっとわかりにくいので、
詳しく説明しているサイト、もしくは知っている方が
おりましたらお教えください。
742736:04/02/26 01:39
ありがとうございます。
boost::tokenizerなど色々検索してやろうとは試みましたが、
なんか#include<boost/tokenizer.hpp>
が開けないって言われちゃうし、
開けてもなんか
http://boost.cppll.jp/HEAD/libs/tokenizer/introduc.htm
↑こことか見ると、
hoge[2]で3番目の値を取得、みたいに簡単に出来そうにないし、
どうも難しそうなんでやめときます。

やっぱり、絶対にユニークな文字列を考え出して、置換→CammaText→最置換の攻撃で
ここはしのごうかと…。
>>742
アフォ。>>738-739をちゃんと読め。
というか、大抵のCSVファイルはスペースを含むレコードをクォーテーションしているはずだが?
>>742
絶対ユニークなんぞ存在しない。
boost::tokenizerつかえって。

>hoge[2]で3番目の値を取得、みたいに簡単に出来そうにないし、
君にとってなにが簡単かしらんが
std::advance か boost::nextの距離指定できる方を使え。

まあ、743が正しいこといってるよ。
745736:04/02/26 03:02
>>743
>>744

QuoteCharってのはイマイチレファレンス見ても使い方がわからなかったんであきらめました。
Webで検索してもVCLのそれは極端にドキュメントが少なかったもんで。

で、なんか言われたとおりに、項目を二重引用符でちゃんと括ってやると普通に読み込まれましたよ!
そうかー、CSVってのはこういうもんだったのか。

>>744さん、せっかく教えてくれたブースと上手く使えなくてすいません。
名前かっこいいし使ってみようかと思いましたが、またの機会にさせて頂きます。
std::advance か boost::next…、メモメモ。
746デフォルトの名無しさん:04/02/26 11:40
おまえらしらねーなら口だすなぼけ
>>736ー737
AnsiString str = "aaa , bbb , \"C:\Documents and Settings\hoge\デスクトップ\test.txt\"";
スペースが含まれると思われるとこは\"でかこんどけ
>おまえらしらねーなら口だすなぼけ
わかった。このスレでは今後回答しません。
>>746
( ´д)ヒソ(´д`)ヒソ(д` ) トックニカイケツシテイルノニ
リストビューで質問です。

追加するアイテムごとにフォントや背景色を変えるには
どうすればよいでしょう?
750デフォルトの名無しさん:04/02/26 17:15
フォームがアクティブになっていない時でも、
どのキーが押されたかの情報を取得するにはどうすればいいのですか(´・ω・`)?
751750:04/02/26 17:58
分かったー
ホットキーなんたらかφ(。。)メモメモ…
http://www.yukibow.com/bcb/index.html

>BCB Tips の全ページが、あるサイトのコンテンツのひとつと間違えられる形で無断リンクされておりました。
>当サイトのInformationにある通り、このような形でのリンクは禁じておりますし、管理者の意図する形態ではないため、
>残念ですが一時的に閉鎖と言う形を取らせて頂きます。


ヘタレなおれは愛用してたのにどこの馬鹿だ。
尻の穴が小さい奴だな
>>752
>あるサイトのコンテンツのひとつと間違えられる形で無断リンクされておりました。
何のことかよく判らんのだが、どっかのサイトが自分のサイトのコンテンツを装って
リンクしてたってことか?
それなら腹立てるのも無理ないが。
755デフォルトの名無しさん:04/02/27 01:38
newしたものはちゃんと消すってのが鉄則らしいですが、
素人のくせに動的にページコントロールのタブをぽんぽん作成したりとか、
色んなところでnewし倒して、アプリを閉じる時に結局どれが消し忘れで残ってるのかわかりません。

終了時に、newしたものの内どれを消去し忘れたか確認するにはどうしたらいいんでしょうか?
って、そんなことが出来るかどうかもよくわからないんですが…。

なんかデストラクタというのを使うと便利らしいというのは何となくわかってるんですが、
どこの位置にどういう風に書いたらいいのかよくわかりません。

なにやらアドバイスよろしくお願いします。
>>755
確認したいなら、コードガード使ってみたら。

あとは
std::auto_ptr

boost::shared_ptr
使ってみて。
>>755
つか、TComponent属ならOwnerを設定していれば自動で破棄されるがな。
つう訳でちゃんとOwnerを設定しろ。
もう一言
>なんかデストラクタというのを使うと便利らしいというのは何となくわかってるんですが、
デストラクタも知らんようでは話にならん。C++の解説書を1冊きちんと仕上げるべし。
ありがとうございます!

今まで
TTabSheet *TabSheet = new TTabSheet( this );
TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(this);

だったのを

TTabSheet *TabSheet = new TTabSheet( Owner );
TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(Owner);

に変更しました。
オーナーの設定って思ったより簡単ですね。

後は自力でデストラクタとやらの勉強をしたいと思います。
生まれて初めてプログラム書いてアプリ作ったのでわからないことばかりで大変でした。
みなさん、ありがとうございます。

あと、756さん。
またboostつかえなくてゴメンナサイ(´・ω・`)
>>759

メチャクチャなプログラミングをやってるな...。
「自力でデストラクタとやらを」っていうのも、C++を運転にたとえるなら
「あとは自力でブレーキとやらを」って言ってるのと同じだよ。

書籍スレで手も動かさずに「次は何を読めばいいでしょうか」と言ってる
初心者も問題だが、あなたのように基本無視で手を動かしだすのもかなり
問題だな。

ま、自分で楽しんでいる分にはいいんだろうけど。
とにかくここのスレでなんとアドバイスされようと、
boostを使うのにはまだまだ早すぎるのは確かだな。
>>759
おーい!勘違いしてるぞ(w
仮にForm1のイベントハンドラ(またはメンバ関数)の中の処理だとすると、

 TTabSheet *TabSheet1 = new TTabSheet( this ); //TabSheet::OwnerにForm1を指定
 TTabSheet *TabSheet2 = new TTabSheet( Owner ); //TabSheet::OwnerにForm1->Ownerを指定

TabSheet1の指すオブジェクトはForm1が破棄されるときに破棄される
TabSheet2の指すオブジェクトはForm1のOwner(通常はApplication)が破棄されるときに破棄される
基本的にはどっちでも構わないよ。
TComponent属以外のオブジェクトはOwnerなんて便利な機能はないから自力で破棄する手当てを
しなきゃならない。

BCBは見よう見まねでもそれなりにアプリが組めるが、それだと直に行き詰まる。
結局、C++なりオブジェクト指向の知識が大事。
まぁ、がんがって勉強してちょ。
うー、うー、みなさん、叱咤、励ましのお言葉どうもありがとうございます。
わかりやすい説明で勉強になります。

しかし自分ではガンダムに出てくるハロのようなものを工作してるつもりでいましたが、
実はハロどころか単なるたこ焼き以下のものだったとは…。

がんばります(`・ω・´)
ttp://www.gangslab.com/bcb/
こ、これは・・・!
この文書は http://www.yukibow.com/bcb/index.html に上って来ている
BCB 関連チップ整理文書です.
翻訳は翻訳機で回した後 Gangsが整理しました.
一応あまりにも多い関係でウェップ翻訳機にリンクをかけておきました.
日本語になった部分は元々文書でありゆっくり翻訳をする嵐閧ナす.
全然しないかも知れないが...分かって見てください...-_-;; 以下...本文..
というか、newとdeleteはいつもワンセットで書く癖をつけるのが一番良いと思うぞ。
明示的に消してやるほうが気分がいいし。
>>763
うわ、韓国語も対応でパワーアップして復活してきた!
ありがとう!ゆきぼうさん!
>>766
> >>763
> うわ、韓国語も対応でパワーアップして復活してきた!
> ありがとう!ゆきぼうさん!

違うでしょ。
ttp://www.gangslab.com/
ここから勝手にリンク貼られてるんですよ。試しに
ttp://www.gangslab.com/bcb/index.html
の上の「Home」ないし「Top」をクリックしてみ。
前者はttp://www.yukibow.com/home/index.htmlに
後者はttp://www.yukibow.com/にリンクが貼られている

ロクなもんじゃねえ韓国人が勝手にパクったと推測しているが。
ttp://www.gangslab.com/bcb/index.html
の中の韓国語コンテンツに見える部分は、navarというサイトにある
日韓自動翻訳cgiで翻訳する形でリンクされているようです。
【IT・電機】日韓技術情報総合スレ 42【機械・ナノテク】
http://ex2.2ch.net/test/read.cgi/korea/1077203043/
で相談しています
・・・・・>>767って素だったのか・・・・・・
↑766ですたスマン
すげー痛い。韓国人相手に解決なんてするか?
>>770
んなわけねーだろ(;´Д`)
>>768
>>769
そのスレじゃ韓国からのアクセスを蹴れって風に言われてるけど、
NAVERの翻訳にリンクされてるのは既にバックアップ取られて、
韓国野郎のサイトにアップされてる日本語版じゃん。

韓国のやつらにとってはttp://www.yukibow.comはすでに何の関係もないんだよ
まぁ自分でコツコツTips書きためて来た作者はたまらんだろうけど。
韓国のやつらに関係ないってのは著作権の話じゃなくてもちろんアクセスとかIPで蹴ればって話のことね。
じゃー解決は期待薄で、俺らはお預けを食ったままということですか
そうですか
どこの馬鹿の仕業かと思えば韓国人かよ・・・・
愛用してたのに・・・・(´・ω・`)


ところで、騒ぎの中質問スマソですが、BCBで、自作のマウスカーソルを使う方法は
あるのでしょうか?
resファイルいじってLoadCursorやってみたのですが、全然認識してくれません。
どうかよろしくお願いします。

ちなみにバージョンは6.0です。
>>777
TScreen::Cursors
779777:04/02/29 15:29
すみません、ヘルプにある通り、HInstanceを指定したら動きました。
お手数かけました。

//ぐぐってた漏れって一体・・・(-_-;)
780デフォルトの名無しさん:04/03/01 11:00
プロジェクトをメイクしようととしたら、bcbidl60.bplのアドレス違反が出て、コンパイルできなくなってしまいました。
どうすれば解消できるでしょうか?
BCBのバージョンは6.0
OSはWinXPです。

どうか、よろしくお願いします。
BCBの次バージョンってもう出ないの?
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

エンタープライズ:変わり始めたボーランドの製品戦略――「C++製品群は、C++BuilderXに統合される」
http://www.itmedia.co.jp/enterprise/0311/05/epn10.html
783デフォルトの名無しさん:04/03/01 23:34
>781
BorConでBorlandの人に聞いてみたけど、C++のVCLのサポートは今後も続けていくけど、まだ社内でもめてるって・・・。
上の記事にもあるけど、C++は組み込み系重視したいみたいです。
BCBもDelphiももうおしまいかなあ。
正直、かなり使いやすいGUIの開発環境だったんだけどな。
Winも.NETになっていくし、もうネイティブコードを吐く
ラクチンGUI開発環境はなくなるんかなあ。
785デフォルトの名無しさん:04/03/02 03:19
Borland C++Builder 6 Personalで「商用,業務目的の開発には
ご利用いただけません。」ってあるのですが,
シェアウェア不可ってことですか?
しょうよう しやう― 0 【商用】

(1)商売上の用事。
「―で出張する」
(2)商業上用いること。



過去ログからみてシェア、カンパ、同人は商用に含まれると解釈する人が多いようだ
おいおい、過去ログで判断してどうする(w

以下Borland C++Builder 6 使用許諾条件から引用
<2.1.1 Borland C++Builder 6 Personal版に適用される特記事項>
「お客様は、直接的にも、間接的にも、お客様のアプリケーションプログラムの
配布または使用についていかなる報酬も受け取ってはなりません。」
引用終わり

よってシェア、カンパ、同人すべて不可。図書券ビール券もダメだな。
許されるのは無料配布のみ。
雑誌への掲載で見本誌送られるのもダメ?
>>787
レスサンクス。
・・・そうするとVC++か・・・。
>>789
VC++の一番安い箱は最適化ができないという致命的な点があるぞ。
bcc32でも使ってろ。こっちは確か何も制限は無かったはず。
1万円払って商用不可か。微妙だねぇ。
792デフォルトの名無しさん:04/03/02 11:14
>>787
プロ版はいいってこと?
もちろん
既に作成済みなTTableのTStringFieldの文字列長を広げるには??
>>794
それはDBに依存するけど、大抵は再構築しなくちゃいけないわけで
つまりは広げたテーブルにコピーしなさいってこった。
>784
DelphiとBCBを統合するような形で残れるといいんだけどね。
いまだってBCBはPascalを解するし。

っていうか保守どうしよう。
BCB5でLonghorn大丈夫だと思う?
>>796
LongHornはむりっしょ。
無責任発言ながら、新機能を使わないのであれば大丈夫じゃないかな。
今でも16ビットアプリ動くし。そうじゃなきゃLonghorn自体が売れそうに無いし。
実はLonghornの主プラットホームは64bit
こないだ始めたばっかなのに何ですか、この流れは…。

よくわかりませんが、次回からは徐々にボトペタ環境は縮小されちゃうんですよね?
.NETとやらだとボトペタは難しいの?

あ、VCLってどうなるんですか?
今ほとんどVCLしか使ってないんですが。
その代わりになるのが.NETってこと?
すいません、何もわかってないです。
心配するな、逆にLonghornでまともなアプリが作れないなら、それはボーランドの大きなビジネスチャンスだ。
ビッグチャンス一つで生き返る事が出来る。

逆に、Longhornで今のツールが十分使えるなら、それはボーランドにとっては痛手だが、ユーザにとっては問題ない。
>>800
もし、その代わりになるのがホントに .NET ならBC#BuilderもDelphi8も今ごろバカスカ売れてるだろうよ
なーなー、Delphiって別に言語の名前じゃないんでしょ?
ObjectPascal用のツールなんですよね?

ここの世界プログラムの歴史を見るとデルがのってるけど、
http://www.levenez.com/lang/history.html
じゃあなんでBCBはのってないの?
>>800

.NETでもポトペタ開発は可能。というか、C#とかVBはそれがメイン。
ただ、ネイティブコードが出力されないということで、
現行DelユーザやBCBユーザには抵抗があるんだと思う。
「アプリ」という点で言えば、Win環境でしか動かないのというも
.NET環境でしか動かないというのも大した違いは無いのかも
しれないけど、今後、どれくらい.NETに移行していくのか
現状ではぜんぜん判断できないし。

>>796

”大丈夫”の意味が「BCB5が動作する」なのか
「BCB5が吐いた実行ファイルが動作する」なのか
わからないので何ともいえないが、多分どちらも大丈夫じゃないかな?
Win32APIはLonghorn上でもエミュレートで再現されるということだし、
相当特殊なことをしてなければちゃんと動くでしょう。

でも、MSはOffice製品も全部.NETに移行する(できる)のかな?
VBAもVBA.NETになるんだろうか。現行office製品はCOMの
塊だけにどうなるのか興味はある。こいつらがちゃんと移行できるのなら、
開発環境もすごい勢いで移行していくんじゃないかな。



>>803 マジレス
「今は」言語の名前だよ。それに書いてある時代はそうではなかったけど。
DelphiはPascalに対して某独自の大幅な変更を加えてるけど、
BCBはC++の拡張仕様にのっとった形(キーワードに__をつける)だから
独立した言語とは認められないんじゃないかな。
>>805
本気で言っているのかと小一時間。
807デフォルトの名無しさん:04/03/03 13:32
>>806
どうせ噛み付くんなら思いの丈を全部吐き出したまえよ :-)
808805:04/03/03 14:09
>>806
間違ってるなら指摘してくれよ。
809デフォルトの名無しさん:04/03/03 14:17
質問です。
C++Builder5で作成されたプロジェクトをC++Builder6でビルドすると、エラーが出てしまいました。

エラーの内容は
[リンカ 致命的エラー] Fatal: ファイルVCLE50.LIBが開けません
です。

ファイル名で検索してみたのですが、見つかりませんでした。
どうすれば解決できますでしょうか?
810デフォルトの名無しさん:04/03/03 14:18
>>809
他のライブラリを指定する
>>809
とりあえずそういう時はGrepかけてみろよ。
812809:04/03/03 14:30
>>810
他のライブラリって、どれを使えばいいんでしょう?

>>811
"VCLE"で、プロジェクトのあるフォルダ全てのファイルと、
C:\Program Files\Borland\CBuilder6\Lib以下全てのGrepしてみましたが、それらしいものは見つかりませんでした。
VCLE50.LIBって特殊なライブラリなんでしょうか?
VCLEは、Delphiと共通のVCLxxにはない、pascal互換コードが入ったライブラリ。
普通に使われてるよ。

一度、obj を全部消去してから再構築してみたら?
何も調べないでレスしちゃうけど、

Ver5でVCLE50.LIBなら
Ver6ならVCLE60.LIBとかなんじゃないの?

それか再構築するとか
それ俺もかなり苦労した。
Makeファイル吐き出させてみると何故かxxx50.LIBとかが入ってるんだよ。
多分プロジェクトの変換時に古いライブラリが残るんだと思う。
プロジェクトファイルはXMLファイル(?)のテキストファイルなので、
テキストエディタで直接編集してしまったほうが早い。
一応 xxxx.bprファイルのバックアップととって置いてからエディタで
中をみてみれ。
816809:04/03/03 15:45
>>813-814
一度、objを全部消去してから再構築してみました。
エラーの内容が変わって
[リンカ 致命的エラー]Fatal : ファイル BORLANDC_GPIB-32.OBJが開けません
になりました。

訳わからなくなってきたので、原因が何なのかもう一度調べなおしてきます。
817809:04/03/03 15:46
>>815
あ、文章を書いている間にレスが。
ありがとうございます。
試してみます。
ちなみにVCLE50.LIBはBuilder5用のライブラリなので
Builder6ではVCLE60.LIBを使うみたいだ。
819デフォルトの名無しさん:04/03/03 19:29
質問です。

C++Builder6で、Excelブックの任意のシートを
シートの最後に移動するにはどのようにするのでしょうか。

VBAだと、

Worksheets("Sheet1").Copy After := Worksheets("Sheet3")

のような感じになるのですが、
After := 〜 の部分をどのように記述するのかが判りません・・。
820デフォルトの名無しさん:04/03/03 20:27
TCppWebBrowserを使っているのですが、
指定したURLを表示できなかった場合に、
(PageNotFoundやページを表示できません等)
メッセージBOXを表示したいのですが、
イベントか、プロパティで、NotFoundであったと
言うことを知る術はないでしょうか?

意図したページが表示できなかった場合に、
別の処理を行いたいのですが、調べたところでは、
どのイベントでも、正常、異常、どちらでも発生、
または正常時のみ発生、というイベントしか見当たらなかったのですが、
他にいい方法を知ってる方いらっしゃいますでしょうか?
821デフォルトの名無しさん:04/03/04 00:12
メインのフォームから別のフォームの描画処理を行いたいのですが、

PostMessage (Form2->Handle, Message, 0, 0) ; //Postmessage
SendMessage (Form2->Handle, Message, 0, 0) ; //Sendmessage
Form2->ShowSummary(); //普通に関数を呼ぶ

どの方法が良いのでしょう??
結果はおなじに見えますが。
>>821
自分なら急がないのはForm2->Invalidate(); かな
経過表示のようにメッセージループが回らない所で表示させるなら
ProgressUp() とかのメソッドをForm2に追加しておいて、その中で描画させるし
823デフォルトの名無しさん:04/03/04 13:31
ActiveXコントロールを作成し、
VBで試してみたのですが、自分で新規に作成したプロパティーの内容が、
変更されないで困ってます。
変更しても、別のプロパティを変更すると、何故かオブジェクト名が
入ってしまったり、文字化けのような現象がおきたりしてしまいます。

タイプライブラリから追加して作ったのですが、
なにか足りない要素があるのでしょうか?
AnsiString文字列が、数値かどうかのチェックって、出来ないのか?
VBのIsNumericみたいなの。

ToIntDefだっけ。整数型なら、安全な変換ができるが、実数型だと出来ないような気がするんだが。
そりゃあ、tryCatchでエラーチェックすれば可能なのはわかるが、なんか最後の手段っぽいので嫌なのだが。


で、C標準のstrtod関数を使って、第二引数のchar*型文字列でチェックをかけてみたのだが、なぜか実数なのに、失敗する。(具体的にはstrtodの第二引数になぜかゴミが格納されてしまう)
仕方ないので、Ansistring型をstd::string型に変換して、std::string文字列のc_str()を、strtodの第一引数にしたら、strtod関数の第二引数にゴミが入ることなく、正常にチェックできた。



というわけで、結局AnsiString型のdouble型変換可能かを調べるのに、こんなに苦労したんですが、他に手はないのでしょうか。教えてください。
double value;
AnsiString str = "0.152";

try {
  value = str.ToDouble();
} catch(EConvertError e) {
  cout << "(´・ω・`)" << endl;
}

は?
いえですから、try catch使わない有効な手段があるのか否かが聞きたいのですよ。

strtod関数が動かない理由の謎も知りたいです。
strtod周辺のソースさらしてみ
828デフォルトの名無しさん:04/03/05 15:21
質問ですが、
EditCaptionでListViewのCaptionを編集状態にして
何も編集せずに確定したときにもListViewEditedイベントが入るようにするには
どうしたらいいのでしょうか?
>>826
BCBというかDelphiコードだと例外って普通に使われてて
たとえば文字列使うだけで、自動的に _finally 文字.free なコードが入ってしまうから、無駄なアガキだと思うよ。
>>829
>>825みたいなのは大量に回すとクソおそいんだよバ カ
TryStrToFloat は?
>>830
大量ってどの程度? で、どういう文字列を変換したいの?
自分でパースして変換すりゃいいんじゃないの?
俺は自分でやってるぞ。
DelphiならValもある。
C++ならsscanfとかも使えるんじゃないか?
 double value;
 AnsiString str = "0.152";

 if ( TryStrToFloat( str, value) == false) {
  cout << "(´・ω・`)" << endl;
 }


bool fChkStrToDouble( const AnsiString& pStr, double& pRetDouble )
{
std::string aVasStr;
char* aErr;
double aResult;

aVasStr = pStr; // std::string型に代入

aResult = strtod( aVasStr.c_str(), &aErr );

if( lstrlen( *aErr ) >0 )
{
Application.MessageA( "変換失敗", "異常", MB_OK );
return( false );
}

pRetDouble = aResult;
return( true );
}

836デフォルトの名無しさん:04/03/05 23:01
教えてください。
現在、ADOコンポーネントを使って、マイクロソフトAccessのデータベースに接続しています。
以下のようなSQL文を投げると、テーブル1のフィールド1に値1が代入されます。
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("INSERT INTO テーブル1(フィールド1) VALUES(値1);");
ADOQuery1->ExecSQL();
次にそのテーブル1に対して以下のようなSELECT文をなげても、値を返してくれません。
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM テーブル1;");
ADOQuery1->Open();
for( ; !ADOQuery1->Eof; ADOQuery1->Next()){
int ID = ADOQuery1->FieldByName("フィールド1")->AsInteger;
}
MainForm->ADOQuery1->Close();
最初のSQL文のINSERTで、確かにテーブル1のフィールド1には値1が代入されているのですが、
その代入した値をSELECT文で取得しようとしても、for文の中に入らず、値を取得できません。
原因がわかる方いらっしゃいましたら、是非ご教授願います。
Insert下後にいったん

Close();
Open();

してからSelectしないとだめ
ADOQuery1->Open(); の前に
ADOQuery1->Close();を追加するだけかな?
839デフォルトの名無しさん:04/03/06 09:50
>>837
>>838
レスありがとうございます。
実際にやってみたのですが、どうもダメでした。
INSERTする前に、テーブル1の内容をDELETEしているのですが、
それが原因あるのでしょうか?
DELETEしないで、INSERT、そしてSELECTしたときは、
INSERTした値を取得することができました。
原因がわかる方いらっしゃいましたら、是非ご教授願います。
/* CTest.h */
#if !defined ( __CTEST_H__ )
#define __CTEST_H__

#include <windows.h>
#if defined( _DLLEXPORT_ )
#define DLLTYPE__declspec(dllexport)
#else /* _DLLEXPORT_ */
#define DLLTYPE__declspec(dllimport)
#endif /* _DLLEXPORT_ */

class DLLTYPE __stdcall CTest
{
public:
CTest( void );
virtual ~CTest( void );
};

#endif /* __CTEST_H__ */
/*- EOF CTest.h ------*/
/* CTest.cpp */
CTest::CTest( void ) { }
CTest::~CTest( void ) { }
/*- EOF CTest.cpp------*/
このように定義して、DLLとインポートライブラリを作り、
C++Builder 6 のプロジェクトでインポートライブラリをリンクして、
メインフォームの中で
CTest *test = new CTest;
delete test;
とした場合、delete直後に(CTestのデストラクタ終了後に)
デバッガ例外で、EAccessViolationクラスの例外が発生するんですが、
原因がわかりません。どなたか、分かる方いらっしゃいませんでしょうか?お願いします。
>>840
そのソースだけならAccessViolationが起きようもない
原因は別のところだろ
842デフォルトの名無しさん:04/03/08 12:12
文字列を後ろから検索する場合に使用できる関数はありますか?
std::string::rfind()
844デフォルトの名無しさん:04/03/08 15:06
HTMLのフレームと同じような働きをさせたいのですが、
なにかアイデアはありませんか?
newとdeleteで動的にコンポネントを配置すると
動きが遅くてしょうがないのです。
画像10枚を、ウィンドウに表示させるとして、
横が5枚で折り返したり、3枚で折り返したりと、
ウィンドウの枠の変化に画像の並び方がついてくるようなものです。
>>844
そのままTCppWebBrowser使ったら?
別にコンポーネントの配置替えをイベントハンドラで処理しても
大した手間じゃないとは思うが。
配置替えにnew/deleteを繰り返す必要なんで全くないし。
846デフォルトの名無しさん:04/03/08 16:11
>>845
レスありがとうございます。
TCppWebBrowserを使ってみます。
そのようなものがあると、気がつきませんでした!
847デフォルトの名無しさん:04/03/08 16:30
すいません、Builder6でIndyコンポーネントを使って通信処理を作成したいんですけど
Indyを利用したサンプルソースってどこにあるかご存じないでしょうか?
>>847
http://www.nevrona.com/Indy/から

"Demo Source Code"落とす。
849デフォルトの名無しさん:04/03/08 17:16
>>848
既にそのデモソースは落としたんですけど、これってデルファイ用ですよね。
Builder用のソースはないのでしょうか?
それともパスカルコードを参考にするしかないのでしょうか・・・
>>849
BCB使う上でPascal読めないのはちときついような‥‥
ちなみにDelのプロジェクトをビルドしたいならBCBのプロジェクトにDelのユニット突っ込めば普通にビルドできる。
>>850 了解しました。
パスカルの勉強もしつつチャレンジしてみます。
ありがとうございました。
Winアプリの開発環境(C++)の購入を検討中です。
そこでBorlandユーザの皆様にお伺いしたいのですが、
C++Builder6は、Visual C++.NETと比べて、書籍が少ないこと以外に、何かデメリットはありますでしょうか?
もっさりしてる
・最適化がしょぼい
・DirectX8以降Borland用のライブラリをMSが用意してくれなくなったので自前で調達してくる必要がある
BCB(C++)を使い込む分にはPascalなぞ一向に関係ないが。
VCLのことか?
・コード補完が泣けるほど遅い
・IDEがやたらとエラーを吐く

ついでに利点
・VCL
・__closureが便利

というか、VCLに魅力を感じないなら素直にVCにしる。
857デフォルトの名無しさん:04/03/09 00:41
ランタイム不要でwin環境ならexe一個でどこでも動くのが(・∀・)イイ!!
画面レイアウトしやすくて(・∀・)イイ!!
おれもGUI作りやすいからBCB使ってるな。
コアの部分はANSI準拠でつくって、インタフェース周りをVCLにおまかせ。
IDEはコンパイルとGUI作る時しか使ってない。
#あのフリーカーソルが馴染めなかったので。

だから>>856の指摘した欠点はあまり気にならない。
BCBの問題は、開発環境としての出来不出来より、
BCB6以降一切新バージョンが出てなくて、
Borland社内でも扱いに困っているという将来性の微妙な
(というか無い!?)ところだと思う。

と書いてしまうと、>>852は迷うだろうなー。

C++自体、どっちかというと今は人気言語じゃないからね。

ただ、JavaにしろC#にしろ、ベンダ主体の言語が幅を
きかせている(Javaはだいぶ環境が変わったけど)+VM環境
で動作させるのが流行という現状は、ちょっと寂しいね。

860 ◆fNndt5hIPY :04/03/09 11:15
>>858
フリーカーソルでなくすことは出来ないんですか?
>>860 使ったことないけど出来るもよう
http://homepage1.nifty.com/fuu/software/nonfreecursor.htm
862デフォルトの名無しさん:04/03/09 12:34
BCB6を使ってActiveX開発してるのですが、
プロパティにアクセスするにはどうしたらよいのでしょうか?

FormCreateの時に、Captionの値を持ってこようとしたら、
ソースコードにエラーがありますと怒られます。
m_VclCtlではプロパティにアクセスできないようなのですが、
プロパティにアクセスするためのオブジェクトはどこに定義されているのでしょうか?

〜〜Implのオブジェクトでないとプロパティにアクセスできなさそうだと
言うことはわかったのですが、そのオブジェクトがどこにあるのかが
ちょっとわかりません。

ご存知の方教えてください。


次スレ、フリーカーソル無効アドイン>861をテンプレに入れとこうよ。

ちなみに、俺は普通に使ってる。
マウス選択の時だけフリーカーソルが残ってるけど問題なし。
Borlandのフリーコンパイラを使おうとしているのだが
ttp://www.kumei.jp/c_lang/bcc/bcc_02.htm
の「カレントディレクトリをtest.cのディレクトリに移動します」
というところで
書いてある通りに打ち込んでも
「指定されたパスがみつかりません」とでてしまう。
入力ミスかと思い他人にやらせても同じ結果。
エロイ人おせーて。
cd の後にはエクスプローラーで見える正確なフォルダ名。
OSによって場所が違う可能性があるので注意

個人的にはそんなわかりにくいところじゃなくてDドライブ直下に
一つtestなりprogramなりのフォルダを作ってそこでやるのをお勧めする
>>864
BCCの話題はこっち
>タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
867デフォルトの名無しさん:04/03/10 14:18
OCXを作って、デザイン時には実行させない処理を作ったのですが、
ComponentState.Contains(csDesigning)
がうまく機能しません。

VBを使って、OCXを貼り付けて試してみたのですが、常に実行時(False)
となってしまいます。

他のサイトなんかで、設計時、実行時を見分ける方法として、
このような方法が載っていたのですが、
使い方が間違ってるのでしょうか?

↓ソースはこんな感じです。

void __fastcall TTest::ActiveFormCreate(TObject *Sender)
{
if (ComponentState.Contains(csDesigning)) {
//設計時
ShowMessage("Design");
} else {
//実行時
ShowMessage("Run");
}
}
>>867
そのコードは実行時にしか呼ばれないということはないな?
csDesigningとはBCB/DelphiのIDEでぽとりぺたりしているときのことだぞ?
869デフォルトの名無しさん:04/03/10 16:11
>>868
無い・・・と、思います。
間にメッセージを入れてみたところ、Ocxを貼り付けた時には実行されています。

void __fastcall TTest::ActiveFormCreate(TObject *Sender)
{
ShowMessage("Test"); ←★
if (ComponentState.Contains(csDesigning)) {
//設計時
ShowMessage("Design");
} else {
//実行時
ShowMessage("Run");
}
}

やりたいことは、Ocxをペタっと貼り付けた時には
何もしないようにしたいだけなので、他に方法があるようでしたら
そちらでもかまわないのですが。。。

今のやり方だと、常に実行時の方に分岐してしまうので。。。
>>867
>VBを使って、OCXを貼り付けて試してみたのですが、常に実行時(False)
VB? BCBのIDEじゃなきゃ、そらcsDesigningにならんような。
871デフォルトの名無しさん:04/03/10 16:37
>>870
うげげげ・・・
では、デザイン時か、実行時かを判別するのは無理なんでしょうか・・?
Ocxなので、VCでも、VBでもBCCで使用しても
デザイン時には処理を行わせないようにしたかったのですが、
これは無理なんでしょうか。。。。

別の手段でも一向に構わないのですが、
なんとか判別する方法はないものでしょうか?
VisualC++のソースをC++Builderに移植したのですが。
クラスの
typedef enum test{
...
...
...
};←ここで「宣言には識別子が必要」といわれる。
別にtypedefの使い方も間違ってないし。VisualC++では問題なくコンパイル
できていたのですが…
いったい何が悪いんでしょう?typedefの使い方がC++Builderでは異なるのですか?
どなたが教えてください
typedef 間違ってないって強弁されても・・・・

typedef <型定義> <識別子> だから、そこに識別子がやっぱり必要でしょう?
>>873
え、ってことは私のいままでのVC++のほうでのやり方がおかしかったわけですか?
いままでずっとこれでやってたのに…
using namespaceしてないのに
型名がSTLとかぶってるらしくエラーがでます。
STLを使わない!と宣言するのはどうしたらよいのですか?
>>874
というか、それなら typedefは何で必要なのか? と疑問が湧かない?
>>876
慢性的に書く癖が…、というよりtypedefをよく知りません(汗
文法も調べずに質問するのかよ・・・。
>>878
いぇ失礼しました、VC++ではいけてたもので…すみません…
ぁぁ…もっと責めて…
IsLeadByte(index) のヘルプで「index(0 が最初)」ってのは間違いですよね?
そろそろ混乱してきたので、誰かそうだといって。
間違いなく、間違いだ。
thx
その間違いは、間違いに間違いない。
>>875
>using namespaceしてないのに
>型名がSTLとかぶってるらしくエラーがでます。
#include <****.h> //STLの任意のヘッダ
にしてんじゃね? そうでなきゃありえない。
まぁ、いずれにせよ標準ライブラリとかぶるってのは
どう考えてもまずいんで、自分のほうで識別子を変えるか
ネームスペースに入れるかしたほうがよかんべ。
886デフォルトの名無しさん:04/03/11 04:58
TListViewについての質問です。
ViewStyle=vsReport;
Checkboxes=true; にしてチェックボックスを表示します。
チェックボックスのチェックが変更された場合に処理を行いたいのですが、
どのイベントで処理すればいいのでしょうか。
いろいろなイベントで試してみたのですが、チェックボックスの変更では飛んできてくれません。
よろしくおねがいします。
888デフォルトの名無しさん:04/03/11 05:45
>887
さんくすです。解決しますた。
>>885
いらんヘッダをincludeしてました。ありがとう!
TListViewについての質問です。
オーナー描画時にItem(行)の高さがFontのサイズにあわせて
自動調整されません。
どなたか回避策を教えてください。
よろしくお願いします。
PageControlのDockSiteをtrueにし、ListBoxだけを配置した別のフォーム(AlignはClient)を作りました。
このフォームをPageControlにドロップするとページとしてドッキングされる、という簡単なものなんですが
このときListBoxのScrollWidthを指定してもスクロールバーがでません。
スクロールバーを別に置いて、それでスクロールするようにしたりしましたが、
いまいち元の通りにできないです。仕様なのかバグなのかわかりませんが
改善方法あればご教授していただけるとありがたいです。
BCB6personalです。
892デフォルトの名無しさん:04/03/11 23:55
BCB6エンタープライズをアンインストールしようとしたら、
「Error 1325.csristlportは正しい短いファイル名ではありません」
とダイアログが出てきます。
どうすれば、アンインストールに成功するでしょうか?
VCLのTString型とかって、普通のロジックでも使うべきなのか?
それともVCでも応用できるように、STLとか標準C++文法で書くべきなのか?
>>893
TStringという型は無いので、TStringsの事かな?
普通のロジックってのが何のことか判らんし、
標準C++文法ってのも、標準ライブラリのことかなー、とか思うんだが。

それはさておき、Boundary/Control/Entityで分ければ、Entityの部分は
環境依存を避け標準ライブラリだけで書くというケースは多いだろう。
895デフォルトの名無しさん:04/03/12 01:27
>>893
[C++ エラー] Unit1.cpp(20): E2352 抽象クラス 'TStrings' の変数は作成できない
[C++ エラー] Unit1.cpp(20): E2353 クラス 'TStrings' は抽象クラス('_fastcall TStrings::Get(int) = 0' のため)

TStringListなら使いまくり。VCLマンセー。って言ったらダメか?スレタイ読んで(ry
別にSTLで書いてもいいんだろうけど”いわゆる環境依存”のことを気にしてるのでは無いように思える。
>VCでも応用できるように、
という部分で。
>>890
親ウィンドウにWM_MEASUREITEMが送られてるんで、
それを捕らえてMEASUREITEMSTRUCTのitemHeightを設定すれば高さの調整できるよ。
5年ぶりにちょいとしたアプリ(ちょっとかわったランチャ)を作りたくなって買ったまま放置してあったBCB5proをインストールしたんだけど、
肝心の頭からCがアンインストールされてて初心者状態です。
んで、記憶の引き出しを開けるきっかけにしたいんで、Formの動的生成(ボタンを押すたびにFormが生成される)の簡単なスクリプトを教えてもらえませんか?
よろしくお願いします。
898890:04/03/12 07:51
>>896

回答ありがとうございます。

TLiistViewを元にコンポーネント作成し、そのなかで
高さを設定しようとしていたんですが、ヘルプを見ると
ListBo等にはMEASUREITEMがあるけどTListViewには
なかったのでできないかと思ってました。
親ウインドウ側で設定する方法を試して見ます。
>>897
んなもん、いちいち他人に聞くな、と突っ込みつつ、

THogeForm* hoge_ptr = new THogeForm(this);
hoge_ptr->Show();

 ポインタの管理まで面倒はみん。自分で思い出せ。
質問があります。
BCB6の付属しているVCLのソースコードをDelphi6Parsonalにインストールして
利用する事は可能でしょうか?
>>900
ライセンスについてはあなたとボーランドとの問題なので、ボーランドに問い合わせて下さい。
プログラムの起動と共に自動実行。コンストラクタで実行レベルを判断し、
その判断された実行レベルによって、Formを非表示のまま終わらせる、または
途中でFormを表示して実行進捗状況を表示させたい。
とりあえずFormのOnShowに自動実行させた内容を記述した関数を書いたが、
その関数の中でFormを表示させようとすると、OnShowイベントの中では出来ないと怒られる。
解決策を教えて下さい。
>>902
WinMainに書いたらダメ?
904897:04/03/12 18:37
>>899
どうもありがとさん。
脳みそを復元しようにも昔よく利用したサイトはことごとく消えちゃってるし、どうしたもんかと困っていたのよ。
ポインタとか文法は憶えてたんだけど、セオリーみたいなのは完全に消えてるっぽい。
また教えてちょ。
>>902
そもそもOnShowの中で自分自身の表示/非表示を切り替えるのは
矛盾している訳で、コンパイラに叱られるのは当然。

手としては、>>903みたいにWinMain内で処理するか、
メインフォームは非表示にして必要に応じ進捗状態表示フォームを
別に表示させるか、どっちかでしょ。
906902:04/03/13 01:20
出来ない、ということが解っただけでもありがたいです。どうもでした。
こんな感じでフォーム作成時に指定個のイメージを動的に生成します。
void __fastcall TForm1::FormShow(TObject *Sender)
{
int i;
for(i=0;i<100;i++)ButtonCreate(this);

}
void __fastcall TForm1::ButtonCreate(TObject *Sender)
{
TImage *image=new TImage(this);
}
このあと、必要に応じて生成したそれぞれのイメージのプロパティにアクセスしたい場合は、
どんな風に書けばいいんでしょか。
調べて、↓みたいにイベントの中で取得する方法はわかったんですが、任意の場合が
よくわかりません。
void __fastcall TForm1::Image1Click(TObject *Sender)
{
TImage *image = dynamic_cast<TImage *>(Sender);
  image->Height=64;
  image->Width=64;
}
>>907
どっかにおぼえておくか、動的に作成する時にnameプロパティを設定しておいたら?
909907:04/03/14 19:52
>>908
手探り状態でやってるものですから、その保存の仕方と取り出し方がわからなくて。
後からフォーム上でプロパティの調整をしたいので、Nameはちょっと使えないかなと。
>>909
? Cは書けるんでしょ?
TButton * ABtn[100];
void __fastcall TForm1::FormShow(TObject *Sender)
{
int i;
for(i=0;i<100;i++)ABtn[i] = ButtonCreate(this);

とか配列におぼえておけばいいんじゃない?
911907:04/03/14 20:09
>>910
オブジェクトって配列*にできないと思うんですが。
試しにやってもだめでした。
>>911
配列にできないってのは、こういうばあい。

 TButton button_instance[10];

TObject属はnewでしか生成できないのが原因。よって、ポインタ配列なら問題ない。

 TButton* button_ponter[10];
 for( int i=0; i<10; ++i ) button_pointer[i] = new TButton(this);

なお、いちおう、VCLには汎用リストとしてTListってのがある。
オレならSTLのコンテナを使うと思うが。

しかし、その前に>>907よ、悪いことは言わんからC++の入門書一冊きちんと読みな。
基本的な文法もわからず手探りでBCB使うのは恐ろしく効率が悪いぞ。
913910:04/03/14 20:31
ああ、悪かった ButtonCreate っていうから TButtonかと思ったよ。 スマン
914907:04/03/14 20:45
>>910
Imageをボタン代わりにしているのでそういう名前にしてました。
紛らわしくてすいません。

>>912
すいません。
プログラムはDOS時代の人間なのでWindows系で追加された概念がほとんどアレでして。
恥を忍んでもうひとつだけ訊かせてください。
調べてみた結果、TListの方がよさそうだと思ったのですが、
TList *List;
ButtonCreate()
{
TImage *image=new TImage(this);
List->Add(image);
}
で、追加した後、参照するにはどうしたらいいんでしょうか。
たとえば、Heightを参照したいというときにList->Items[n]の下位プロパティをどうたどればいいのか。
お手数ですが、本当にマジですいません。
よろしくお願いします。
キャスト
916907:04/03/14 21:06
あ、わかりました。
普通に明示的にキャストを変換すればいいのか。
お騒がせしました。
((TImage*)List->Items[n])->Height;
918907:04/03/14 21:17
>>917
で、正解ですね。
ありがとう。
C++なんだから、static_castやreinterpret_castを使用しろよな。
dynamic_castだけは使用するんだろうに
いや、C++なんだから素直にテンプレート使えよ、と言いたいんだが(w
【初心者歓迎】C/C++室 Ver.5【環境依存OK】
http://pc2.2ch.net/test/read.cgi/tech/1077102238/
から誘導されました。
お願いします。

C++ Builder 5を使っています。
ListView1にはvsReportでNUM,NAME,PATHの順にアイテムが入っているのですが、
ListView1->OnSelectItemイベントでサブアイテムの値にアクセスする方法がわかりません。
下のようにやってみたんですが、Strings[n]に何を入れてもNUMが帰ってきてしまいます。
何か勘違いしているでしょうか?

void __fastcall TForm1::ListView1SelectItem(TObject *Sender,
TListItem *Item, bool Selected)
{
Label1->Caption=Item->SubItems->Strings[1];
}
>>921
それであってるはずなんだけど・・・
新規プロジェクトでその部分だけ作っても同じかな?
>>922
試しにやってみたら、ちゃんとできました。
INIファイルの読み込みをやっているのですが、そのへんでおかしくなってるかもしれません。
ありがとうございました。
既に存在するParadoxのテーブルに対して二次インデックスを作成するのに
Database Desktopでテーブルを開いて再構築するのはわかるのですが、
これをプログラムで動的にやるにはどうすればいいのでしょうか?
try {
Table1->IndexName = "Date";
}
catch (EDBEngineError&) {
//Table1にインデックスが無いので動的に追加
}
925デフォルトの名無しさん:04/03/17 15:20
BCB6を使用して、ActiveXを作り、スレッドを使っているのですが、動作がうまくいかず困ってます。
ブラウザを作っているのですが、出来上がったOcxをコントロールに貼り付けたときに、
接続チェックに行くので、接続チェックに行く部分をスレッド化したのですが、
Executeが走ったときに何故か、指定した関数へ飛びません。
ソースはこんな感じです。
-------------------------------------------->Unit1.cpp
void __fastcall MyThread::Execute(){
SetName();
Synchronize(ReadHead);
}
void __fastcall MyThread::ReadHead(){
AnsiString as = "http://192.168.0.1/~test/2.html";
::AdverApp->NMHTTP1->TimeOut = 1000;
::AdverApp->NMHTTP1->Head(as);



}
--------------------------------------------<Unit1.cpp
TThreadクラスの中に、ReadHeadという関数を用意して、Executeの時にそこを見るよう
指定しているのですが、何故か呼ばれず、アプリケーションが起動してしまいます。
スレッド生成はこんな感じでやってます。
-------------------------------------------->TestAppImpl1.cpp
void __fastcall TAdverApp::ActiveFormCreate(TObject *Sender){
new MyThread(false);
}
--------------------------------------------<TestAppImpl1.cpp
ActiveXフォームに乗っかっているコントロールを使用するため、
Synchronizeを使っているのですが、使わなかった場合だと、TNMHTTP
コントロールのプロパティにアクセスした後、応答が無くなってしまいます。
どなたかご教授ください。
926925:04/03/17 15:23
すみません。
ソースの部分がちょっとおかしかったです。
-------------------------------------------->Unit1.cpp
void __fastcall MyThread::Execute(){
SetName();
Synchronize(ReadHead);
}
void __fastcall MyThread::ReadHead(){
AnsiString as = "http://192.168.0.1/~test/2.html";
::TestApp->NMHTTP1->TimeOut = 1000;
::TestApp->NMHTTP1->Head(as);



}
--------------------------------------------<Unit1.cpp

-------------------------------------------->TestAppImpl1.cpp
void __fastcall TTestApp::ActiveFormCreate(TObject *Sender){
new MyThread(false);
}
--------------------------------------------<TestAppImpl1.cpp
927デフォルトの名無しさん:04/03/17 17:46
とあるアプリケーションから利用できるようにDLLを作ったのですが、
DLL自体のパスがとれないのですが、どうやってとったらいいですか?

Application->ExeNameだと、アプリケーションの方のパスを持ってきて
しまうので、DLLの方のパスが取れないものかと。
GetModuleFileName()

win32apiだけど
929928:04/03/17 17:50
あれっ? ちがったっけ?
親切に言うなら DllEntryPoint で渡されたハンドルで GetModuleFileName
931デフォルトの名無しさん:04/03/17 18:27
>>928->>30
ありがとう!
932924:04/03/17 19:02
自己レス
TTable::AddIndexでヨカッタのねん。
TMediaPlayerを使って、MP3の再生アプリを作りたいのですが、
普通に連続で再生するほうほうがわかりません。

あらかじめ、ファイルネームを配列fname[i]にi個読み込んでおいて
fname[0]からfname[i]まで連続で再生したのですが
どうすればよろしいのでしょうか?

kは任意の整数として

void fastcall()
{
MediaPlayer1->Filename=fname[k];
MediaPlayer1->Open();
MediaPlayer1->Play;
}

で1曲再生することはわかるのですが、1曲終わった後に次のk+1番目をそのまま再生するにはどうしたらいいのでしょう??
通常のプレイヤーのように、i+1が終わったら、i+2、i+3・・・
というふうに連続で再生したいのです
Notify か、タイマーで Mode を監視して曲の終わりを検知することが必要。

さて、ここから先が本題なのだが、入門なら MediaPlayer でもOKとしても、
少しでも実用を考えるなら、頑張って DirectShow を。
935933:04/03/18 03:38
レスありがとうございます
NotifyがいまいちよくわかってないのですがC言語の基本的知識で考えてみたのですが
まず、再生ボタンをクリックしたとき1曲目再生
k=0;←オフセット
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
MediaPlayer1->FileName=fname[k];
MediaPlayer1->Open();
MediaPlayer1->Play();
Label1->Caption="再生中 "+(ExtractFileName(fname[k]));
k++;
}
void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
if(k==i){
k=0;
MediaPlayer1->FileName=fname[k];
MediaPlayer1->Open();
MediaPlayer1->Play();
}
else{
MediaPlayer1->FileName=fname[k];
MediaPlayer1->Open();
MediaPlayer1->Play();
}
Label1->Caption="再生中 "+(ExtractFileName(fname[k]));
k++;
}
}
これで、順番に再生されると思ったのですが、バグってPCがフリーズしたりするようになります。
たまに、2,3曲連続再生に成功するのですが何がまずいんでしょうか?
簡単でいいのでNotifyを使用する方法を教えて頂きたいです。初心者厨房ですいません
>>935
Notifyの使い方はヘルプを見れば書いてある。
ヘルプを見ても分からなかったら、ヘルプのどこが分からないのかを
質問するように汁。

今回はサービス。
Notifyイベントは1曲再生が終わるごとに呼び出される(ようにする)んだから、
その中で連続再生してどうする。

void __fastcall TForm1::MediaPlayer1Notify(TObject *Sender)
{
if(k==i) k=0;
MediaPlayer1->FileName=fname[k];
MediaPlayer1->Open();
MediaPlayer1->Notify = true;
MediaPlayer1->Play();
Label1->Caption="再生中 "+(ExtractFileName(fname[k]));
k++;
}

ユーザが停止ボタンを押したときは、MediaPlayer1->Notifyをfalseにしてから停止しないと
次が再生されてしまうので注意。
てか、こういうものは遷移をきっちり管理しないとならんな。

あと、質問とは直接関係内が、クラスメンバや大域変数には意味の分かる名前を付けろと
入門書に書いてなかったか?
kだの i だのって名前は、使い捨てる変数だけにしろ。
とりわけ人様に質問するときは名前だけで用途が一目で分かるようにしておくもんだ。
↑訂正
別にNotifyイベント内で連続再生してるわけではないのだな。スマン。
プロパティの設定を忘れてるのが問題だ。
938933:04/03/18 16:07
いろいろアドヴァイスありがとうございます。
PC始めたばかりの高校生で勉強不足でした。
ヘルプ読み直してみます。
高校生か。
今なら間に合う、がんばって英語勉強しろよ〜
そしてWinodowsAPIとかはMS純正の英語のマニュアルを読破するのだ。

それができれば普通のCとWindowsのイベントドリブンなC++の違いさえ念頭におけばなんとかなるさ。
自己突っ込み
Winodowsってなんだ
Windowsだろ
941924:04/03/18 18:32
再度質問お許しを。TTable::AddIndexで二次インデックスを動的に設定するのだが
Table1->AddIndex("Hoge", "Hoge", TIndexOptions() << ixCaseInsensitive, "Hoge");
ご覧のようにixDescendingは指定していないのに結果は降順になってしまう。
なして?
>>941
お前もだ。ヘルプのTTable::AddIndexの項目を声を出して10辺嫁。
943941:04/03/19 10:06
>>942
ありがとう。救われました(ヘルプ読んでみて思わず自分に対して「ぷっ」)。
944933:04/03/21 23:19
>>942さん
Notifyで連続再生はできたのですが、今度は停止ができなくなりました。
ボタンを押したときにfalseを代入してからStop()メソッドですよね
なぜかできない。。。
Timerを使って、連続再生する方法を考えてみたのですが、mp3ファイルの時間の長さを取得するのに
MediaPlayer1->Lengthを使用するんですよね?ヘルプにある
int TheLength;
 MediaPlayer1->TimeFormat = tfHMS;
TheLength = MediaPlayer1->Length;
// label 1 に「時」を表示する
Label1->Caption = IntToStr(LOBYTE(LOWORD(TheLength)));
// label 2 に「分」を表示する
Label2->Caption = IntToStr(HIBYTE(LOWORD(TheLength)));
// label 3 に「秒」を表示する
Label3->Caption = IntToStr(LOBYTE(HIWORD(TheLength)));
でも、意味不明な値しか取得できないのは何故でしょう?秒で取得したいのですが・・・
945933:04/03/22 00:30
すいません。質問半分撤回。
Notifyのイベントハンドラの中にStop()メソッドいれることで解決しました。

しかし、時間の取得は不明なままです。
だからヘルプを読めと。
tfHMSがサポートされていないんだろ。
tfMillisecondsならまずだいじょうぶた。
>>945
VCLヘルプから引用(TMediaPlayer::TimeFormat)
>すべての形式がすべてのデバイスでサポートされているとは限りません。
>サポートされていない形式を設定しようとすると,その代入は無視されます。

君がコピーしたサンプルコードにもちゃんと「デバイスによってはtfHMSを
サポートしない」とコメントがありますな。
948933:04/03/22 04:41
みたいですね
教えていただいてありがたいのですが
tfMilliseconds
↑これはなんでしょう?
OSはWindowsを使用しているのですが何か関係あったり?
949デフォルトの名無しさん:04/03/22 10:26
TMenuItemのOnClickイベントで右クリを検出する方法を教えてください
>>949
OnClickでは無理
自分でメッセージを拾うよし
Label1->Caption = DataList->Strings[0];
Label2->Caption = DataList->Strings[1];
Label3->Caption = DataList->Strings[2];
これを繰り返しで一括処理できませんか?
>>952
FindComponent
超初心者です。ヘルプを見てもサイトを検索しても
たどり着かなかったので、恥を忍んで質問します。
VCLコンポーネント(Imageコンポーネント)をソース上で生成するには、
どこにどう書けばよいのでしょうか?
よろしくお願いします。
954デフォルトの名無しさん:04/03/22 18:11
TImage *image = new TImage
>>953
'TImage::TImage()'に一致するものが見つからない
と出たのですが、どうすればよいのでしょうか?
よろしくお願いします。
956デフォルトの名無しさん:04/03/22 18:28
TImage *image = new TImage(this);
>>955
__fastcall virtual TImage(Classes::TComponent* AOwner);
>>956
一応生成することはできたようです。
しかし、それを画像をLoadFromFileメソッドを使用し、
CopyRectを使用して描画しようとしたところ
エラーが出てうまくいきませんでした。
>>957
publicのところに書けばよろしいのでしょうか?
実行しようとしたところ
)が必要 と出てコンパイルが通りませんでした。

質問ばかりですみませんが、よろしくお願いします。
>>958
エラーがでたなら、自分の書いたコードとそのエラーメッセージを
示した上で質問しなかったら誰も何も教えられないよ。
その辺はプログラミング以前の一般常識の問題。気をつけるべし。

>>957はTImageのコンストラクタの宣言。ヘルプからの引用。
これを見れば、TImageのコンストラクタを呼ぶときは
TComponent*型の引数が必要だと分かる。
よって具体的には>>956になるという事。
こういうことは、C++の基本さえ分かっていれば、
ヘルプを見ただけで自分で解決ができるはず。

悪いことを言わんからC++の入門書をまず読んで基本を身につけな。
でないと、何か一つするごとに人に聞いて回らなきゃならないぞ。

なお、サイトを見て回るよりは、定評のある入門書を読んだ方が
圧倒的に効率的で効果的。
こういうところで投資を惜しんではいかん。
960デフォルトの名無しさん:04/03/23 12:34
画像の透過について質問させてください。

Graphics::TBitmap *DSelect = new Graphics::TBitmap();

// 画像データの読込み
DSelect->LoadFromFile(ExtractFilePath( Application->ExeName ) + "system\\Select.bmp");

// 透過指定
DSelect->Transparent = true;
DSelect->TransparentMode = tmFixed;
DSelect->TransparentColor = clWhite;

// フォームの左上隅に描画
Form1->Canvas->Draw( 240, 0, DSelect );

delete DSelect;

とあるサンプルを参考にした↑のソースで透過画像を表示することはできるのですが、
画像位置の移動など、分からないことが多いので、TImageで画像を透過する
方法をお教えください。
Image1->Picture->Bitmap = DSelect;
とか、やってみたのですが、上手くいきませんでした。
Borland C++BuilderってコンパイラーはBorland C++ Compilerしか使えないんですか?
>>961
他のコンパイラではObjectPascalとの互換性の問題でコンパイルできません。
963デフォルトの名無しさん:04/03/23 14:21
>>962
そうなんですか…親切にありがとうございました。
>>960
TImage::Transparent
>>964
気が付きませんでした。
ありがとうございます。
>>959
解説書なら数冊あるのですが…。
とりあえず入門書みてみます。
ありがとうございました。
>>966
本が何冊あってもその内容を自分が理解できなきゃ何の役にもたたん。
あと、君に必要なのは「BCBの解説書」じゃなくて「C++の入門書」だぞ。
968デフォルトの名無しさん:04/03/23 17:11
このたった一行で未定義の例外が飛ぶ。ランタイムのバグ?
UPDATE4だしCSCRIPTでOLEの動作確認してるんで環境はOKのはず。

#include <vcl.h>
#include <sysvari.h>
#include <dbdaoint.h>

#pragma link "rtl.bpi"
#pragma link "vcl.bpi"

int main() {
Variant dao = Variant::CreateObject("DAO.DBEngine.36");
exit(0);
return 0;
}
>>968
未定義の例外でなく "EOleSysError"だが?
あと、「CoInitializeは呼び出されていない」というメッセージも来るが?

なんでもかんでもライブラリのバグにするなよ。
例外を投げる関数を呼び出したら、
その一行で例外が飛んできて当たり前だ罠。

例外が未定義になるのは、
必要なヘッダがインクルードされてないからだろ。
971 ◆KcrJZ6hEJI :04/03/25 00:43
 ゴミ箱を空にするAPI SHEmptyRecycleBin を呼び出そうとすると
リンクでエラーになります。

Unresolved external 'SHEmptyRecycleBinA' referenced from XXXX..OBJ

shellapi.h をインクルードしてますが、他に手順が足りないような気がする
のですが、なんなのでしょう?

環境は BCB3 Pro On NT4SP6 です。
>>971
Minimum DLL Version shell32.dll version 4.71 or later
Custom Implementation No
Header shellapi.h
Import library shell32.lib
Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0
> 例外が未定義になるのは、
>必要なヘッダがインクルードされてないからだろ。
DLL内で別スレッドが起動して、
その内部で構造化例外が投げられているからでは?
MSJのlodprf32で見るとそういう現象
CppWebBrowserを使い、普通にNavigate()でWebを表示したとします。
HTMLでゆうtarget="_brank"のタグを踏んだとき
すなわち、HTMLによって別ウィンドウで表示されるときはIEが起動してしまいますよね?
これを回避して、同じexeをIEのように起動しリンク先を表示させるにはどうしたらよいのでしょうか?


>>971
DLLからLIBファイルを作る。
漏れはそれでBCB1で使った実績有り。
976 ◆KcrJZ6hEJI :04/03/25 10:40
>>972,975 Thanks.

 DLLからLIBを作る。ですか…。調べてやってみます。
しかし原因が環境にあったとは。。。

 ってことは、この環境では(ゴミ箱を空にする)別の正当な
方法があるってことですかね。
>>976
そもそもshell32.libをプロジェクトに追加してない予感
978デフォルトの名無しさん:04/03/25 11:31
TIconをHICONに変換する方法をおしえてください
>>978
Handleプロパティ?
980 ◆KcrJZ6hEJI
結果報告。できました。

C:\...\CBuilder3\Bin>implib shel3247.lib C:\Winnt\...\Shellapi32.dll
C:\...\CBuilder3\Bin>move shel3247.lib ..\lib

 として、プロジェクトのメイクファイルに shel3247.lib をリンクするよう
追加。これで無事にリンクも通りました。が…

 テストしてみるとAPIは呼んでいるようですが、ゴミ箱のクリアは
されてない…。なんで?