[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/04 19:56 / Filesize : 216 KB / Number-of Response : 976
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれC++Builder(超初心者用)その4



1 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 09:06:16 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

Embarcadero Home Page
www.codegear.com/jp/

<過去スレ>
くだすれC++Builder(超初心者用)
pc8.2ch.net/test/read.cgi/tech/1117225464/l50

くだすれC++Builder(超初心者用)その2
pc10.2ch.net/test/read.cgi/tech/1144308804/l50

くだすれC++Builder(超初心者用)その3
pc11.2ch.net/test/read.cgi/tech/1171219191/

<兄妹スレ>
くだすれDelphi(超初心者用)その50
pc12.2ch.net/test/read.cgi/tech/1246340765/l50


82 名前:デフォルトの名無しさん [2009/12/22(火) 04:00:09 ]
できたのだからよいではないか

83 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 20:51:36 ]
getlineでファイルから
商品名,2009/11/2
にのようになってる行を読み取り、商品名、西暦、月、日をそれぞれ別の変数に格納したいです。
getlineでどのように書けばできるのでしょうか?

84 名前:デフォルトの名無しさん mailto:sage [2010/01/07(木) 22:21:41 ]
俺なら','をstrchrで探して前半を切り出し
後半はsscanfでまとめて取得するかな。

85 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 08:20:45 ]
>>83
俺ならstd::tr1::regexで取得するかな。

86 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 18:50:47 ]
例外の発生したアドレスをExceptionクラスから受け取ることってできないんですか?
そのような情報を取得する方法ってないのでしょうか?

87 名前:デフォルトの名無しさん [2010/01/13(水) 14:43:58 ]
C++builder2010って64ビットに対応してる?

88 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 16:07:54 ]
してない。
2011年夏の予定

89 名前:デフォルトの名無しさん [2010/01/13(水) 16:19:10 ]
そんなあ><

90 名前:デフォルトの名無しさん [2010/01/13(水) 19:26:30 ]
 ま た お ま え か 




91 名前:デフォルトの名無しさん [2010/01/19(火) 02:01:43 ]
.resを作った後、そのリソースをexeにくっつけて
コンパイルするにはどう記述すればいいの?

92 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 06:25:38 ]
>ilink32.exe
と打ってコマンドラインのヘルプを確認しましょう。

bcc32.exe の引数に、.res ファイルを書く事もできます。できるはず。


93 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 13:14:02 ]
つーか、プロジェクトにres放りこんどけと

94 名前:デフォルトの名無しさん [2010/01/19(火) 14:26:28 ]
知らないならレスしないで下さい><

95 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:46:18 ]
 ま た お ま え か 

96 名前:デフォルトの名無しさん [2010/01/23(土) 08:24:17 ]
ActiveXに関する質問なんですが、
VCのMFCでtypelib追加ウィザードで作成されたクラスには
LPDISPATCH型をパラメータにしたコンストラクタがあって、
そこにVARIANT変数のpdispVal等を使用して作成していたのですが、

BCB6でタイプライブラリの取り込みを行った際、
そのLPDISPATCH型をパラメータにしたコンストラクタがなくなって
コンストラクタには「TComponent* owner」になってしまいました。

LPDISPATCHをそのクラスに設定するにはどのようにすればいいでしょうか?


97 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 11:05:26 ]
10年前の BCB6 だとサポートできない機能があると思いますが
たぶん何とかなるとおもいます。

取り込み元 ActiveX の Typelib の定義を見せてください

あと、BCB 側のプロジェクトディレクトリに、インポートのログファイルが落ちていませんかね?

98 名前:デフォルトの名無しさん [2010/01/23(土) 11:25:09 ]
初歩的な質問で恐縮です。
BCB6のプログラム中でフォントを指定したいのですが,例えば
Image1->Canvas->Font->Name="CourierNew";
Image1->Canvas->TextOutA(10, 10, "ABC") ;
と書いても,デフォルトのフォントのままの文字が現れて,変ってくれま
せん。となたか解決方法をお教え下されば幸です。
因みにフォントのサイズやスタイルは,
Image1->Canvas->Font->Size=16;
Image1->Canvas->Font->Style=TFontStyles() << fsBold;
Image1->Canvas->Font->Style=TFontStyles() << fsItalic;
で変えられます。

99 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 11:43:49 ]
Image1->Canvas->Font->Charsetを変えてみる

100 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 12:02:21 ]
BDS2006を使っています。
TSimpleEvent *event=new TSimpleEvent();
とするとエラーになります。
ヘルプを見ると、コンストラクタは引数なしなので
これで良さそうなのですが、どうも原因がわかりません。
TSimpleEventはどう使えばいいのでしょうか。




101 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 12:28:36 ]
それでいいはずだから、
#include <SyncObjs.hpp>
か?必ずエラーの内容書こうぜ。

102 名前:98 [2010/01/23(土) 13:12:43 ]
>>99
有難うございました。
解決しました。


103 名前:100 mailto:sage [2010/01/23(土) 13:25:51 ]
[C++ エラー] Main.cpp(1917): E2285 'TSimpleEvent::TSimpleEvent()' に一致するものが見つからない
となります。
#include <Syncobjs.hpp> はしています。


104 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:54:05 ]
ヘルプが更新されてないのかね。今は↓らしい。Syncobjs.hppの中を見て確認したほうがいいかもしれない。

Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
 bool ManualReset, bool InitialState, System::UnicodeString Name, bool UseCOMWait);

105 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 15:34:26 ]
TSimpleEvent メソッドは,システムのイベントオブジェクトを作成し,TSimpleEvent オブジェクトをインスタンス化してそのイベントを表します。

__fastcall TSimpleEvent(void);

となってるね
Update全部当てたけどこのまま

106 名前:100 mailto:sage [2010/01/23(土) 16:03:16 ]
見てみました。
Syncobjs.hpp の定義に
__fastcall TSimpleEvent(void);が無いですね。
でも、
Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
 bool ManualReset, bool InitialState, System::UnicodeString Name, bool UseCOMWait);
これって、TEventと同じ引数じゃないですか。
TEventと同じならTSimpleEventの意味がないですよね。
というかTSimpleEventは名無しのハズですから
もしかしたら、バグでしょうか。
あと、最後の引数 bool UseCOMWait これが謎です。



107 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:16:11 ]
www.mombu.com/programming/c/t-bds2006-syncobjshpp-header-not-recognised-799965.html

にもあるけどhppの生成バグかね。

108 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 12:31:07 ]
ちなみにC++Builder2010のヘルプでは

C++ の情報

ファイル SyncObjs.hpp

TSimpleEvent = class(TEvent)

[edit] C++ の情報

ファイル SyncObjs.hpp

TEvent = class(THandleObject)

となってるからまた仕様が変更されているようですね
いつから変わったんだろう

109 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 12:32:13 ]
と思ったらちゃんと書いてあった

SyncObjs.TSimpleEvent のコンストラクタFrom RAD Studio VCL Reference
[edit] C++ の情報

Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
bool ManualReset, bool InitialState, System::UnicodeString Name,

bool UseCOMWait);
virtual void __fastcall ~TSimpleEvent(void);

これはさすがにバグが取れているようだ

110 名前:デフォルトの名無しさん [2010/01/27(水) 15:14:53 ]
TRichEditで質問ですが。
SelAttributesで一部の色を変更した時に
何処が何色に変更されてるかを調べる方法を教えてください。



111 名前:デフォルトの名無しさん [2010/02/01(月) 16:38:07 ]
早く教えて

112 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:27:06 ]
C++ Builder 2010でZlibを使いたいんですけど
Boostの中にすでに入っているようで
これを使うにはどうしたらいいでしょうか?

113 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:58:58 ]
CBuilder では使えません。
必要なファイルが足りないようですね

114 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:54:09 ]
112です
Boostのを使えない場合
普通にZlibの最新版をダウンロードして
ソースコードをプロジェクトに加えれば使えるんでしょうか?

115 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:01:32 ]
この頃のオープンソースでは CBuilder/BCC 用の設定をつけていない物も多いので
「がんばってください」と言うしかないです。

Delphi 側の実装である zlib ユニットを利用するというてもあると思います。
zlib.hpp をインクルードしてみてください。

116 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:46:04 ]
Win32DLL版のzlibと必要なヘッダを落とし
DLLからimplibするだけだろ

117 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:11:19 ]
112です
ZlibのDLL版のimplibでうまくいきました
ありがとうございました

118 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 11:24:36 ]
C++Builderのエディタ部分でタブとEnterキーが効かず。スペースが一文字削除になるんですが。
これってどうすれば治りますか?

119 名前:118 mailto:sage [2010/02/08(月) 11:29:22 ]
>>118すいません、とても恥ずかしい理由で治りました。


もう一つ質問させて頂きたいのですが
C++Builder(のソケット)でネットワークプログラミングをする場合、書籍はwinsock2のモノでも
大丈夫でしょうか?

120 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:05:35 ]
C++Builderのソケットって何を指していってる?まぁどの方法でもWinSock2で当たりを
つけておく必要があることに変わりはないけど。TServerSocket/TClientSocketは
SMP上のマルチスレッドではうまくいかない、という報告を見たことがあるので注意して。
Indyならマルチスレッド必須(基本ブロッキングなので)。自前で実装するならご自由に。
ICSはよくわからん。



121 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 22:14:13 ]
Qt は C++Builder でも使えた?

122 名前:デフォルトの名無しさん [2010/02/10(水) 10:52:00 ]
特定部分をCUDAを使って計算させたいのですが、C++BuilderでCUDAを使うには
どのような設定が必要なのでしょうか?

123 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 11:15:52 ]
できません。

124 名前:デフォルトの名無しさん [2010/02/10(水) 12:33:59 ]
できないって、DLLとかでもだめなのかい?

125 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 16:49:05 ]
マイナー環境を使ってる者の宿命です。

126 名前:デフォルトの名無しさん [2010/02/10(水) 16:54:11 ]
うるさいだまれぶた

127 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 15:37:10 ]
時間がかかるループ中にプログレスバーを別スレッドで進めたいと思い
ヘルプどおりにTThreadの派生クラスを作りました
Executeの中でForm1->ProgressBar1->StepIt()を呼ぶだけのシンプルな
もので、これ自体が正常に動作することは確認しました

しかし、肝心の時間がかかるループになるとこのスレッドに制御がこないため
プログレスバーが進みません。ループに入る前にnewで作った時に1回よばれ
ループが終わった時にもう1回よばれるだけです。コンストラクタの引数はfalse
にしてあります。Priorityプロパティも変えてみましたけど変わりません。

どうやったらループの中で並行してスレッドが動くようにできるでしょうか?

128 名前:デフォルトの名無しさん [2010/02/12(金) 15:52:49 ]
つーかそれスレッドから呼んだら落ちるんじゃね?
もしくは、落ちなくても正常にアレされなさそう。

void Execute( void )
{
 while( !Terminated ){
  Synchronize( Unko );
  Sleep(1);
 ]
}
void Unko( void )
{
 Form1->ProgressBar1->StepIt();
}

これでどうよ?

129 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:09:46 ]
>>128
それもやってみましたけど変わりませんでした

時間がかるループ以外のところでやると正常にプログレスバーは進みます
ループに入るとその間だけ呼ばれなくなります

130 名前:デフォルトの名無しさん [2010/02/12(金) 16:11:35 ]
んじゃむしろそっちのループにSleepいれたらどう?



131 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:26:19 ]
それなら直接 StepIt を呼んだ方が効率がいいような気がします

ループの方は細かいループがたくさんよばれるのでそれらに1つ1つStepIt入れるの
がいやでなんとか別スレッドでできないものかと悩んでいます

132 名前:デフォルトの名無しさん [2010/02/12(金) 16:43:13 ]
それCPU負荷100%になってるだろ

133 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:50:52 ]
リソースモニターでみると「応答なし」になってます
これが原因でしょうか?

134 名前:デフォルトの名無しさん [2010/02/12(金) 16:56:18 ]
スレッドにSleepを入れるのは当然として
他のループにもいれないとまずいだろ

135 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:04:25 ]
ようやく分かってきました
SleepかStepItかProcessMessages
あたりをループの中で呼ぶしかないんですね

ループの部分のソースコードはMacと共有してるんで
あまりやりたくなかったんですけど
#ifdef使って入れてみます

アドバイスありがとうございました

136 名前:デフォルトの名無しさん [2010/02/14(日) 04:21:42 ]
失礼します。
抽象的な質問で申し訳無いのですが、BCB6と2009や2010の互換性ってどのくらいあるのでしょうか?
BCB6で作成したソフトをいじろうと思っているのですが、BCB6の購入は難しいようなので、2010を購入するか悩んでいます。
Unicodeになるなど、100%はありえないのはわかっていますが、コンポーネントの動作等はある程度使える物なのでしょうか?
よろしくお願いします。

137 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 04:33:07 ]
ある程度使える
共通の部分だけ使えば互換性は確保出来る
きっとそのうち萎えると予想

138 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:31:16 ]
BCB2010でウェブブラウザ作りたいんですが
TWebBrowserとTCppWebBrowserの違いが分かりません
後者の方はヘルプにも何もでてないし
エンバカデロのサイトを検索しても何もヒットしません
TCppWebBrowserはもう使うなということでしょうか?

139 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:32:57 ]
先週末からAboutDelphi の過去ログ検索のリンクが死んでるんですけど
消息とか代替とかご存じの方おられませんか?

140 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 22:16:09 ]
Delphi-MLか公式フォーラムか、武内さんが見てそうなところで聞くのが吉かと。
単にサーバが落ちてて気がついていないだけでは?



141 名前:デフォルトの名無しさん [2010/02/16(火) 14:45:47 ]
2010って64ビットに対応してるか?

142 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:55:10 ]
してない
64bit正式対応は2011からだぞなもし

143 名前:デフォルトの名無しさん [2010/02/16(火) 15:31:58 ]
まじですか
2011ていつでるんだい?

144 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 15:43:31 ]
今年6〜7月頃じゃねーの?

145 名前:デフォルトの名無しさん [2010/02/16(火) 15:57:28 ]
あ、今年ですか
んじゃそれまで待ってみようかな
ありがとうブタ君

146 名前:デフォルトの名無しさん [2010/02/16(火) 16:02:45 ]
2011はLinux対応 その後改善を2012でやって  64はその後の2013の筈

147 名前:デフォルトの名無しさん [2010/02/16(火) 16:04:05 ]
不完全なくりっくす復活されてもなぁ。

148 名前:デフォルトの名無しさん [2010/02/16(火) 16:09:20 ]
TRichEditで文字属性ごと他のTRichEditにコピーする方法を教えてください

149 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:08:58 ]
>>136
2007はまだ買えるよ。BCB6はVistaで起動しなかったので慌てて2007にしてコンパイルし直したけど,
比較的苦労せずに済んだ。ただ,いつものことながら2007はパッチ当てないと使い物にならない。
パッチ当てても,時々不可解なことが起こる。何も悪いことしてないのにアプリをExitするとアクセス違反
で落ちたり,アプリケーションアイコンが消えたり...

何とか逃げ道を探して使ってるけどね。

150 名前:136 [2010/02/17(水) 00:59:21 ]
>>137
>>149
ありがとうございます。
普通に想定できる範囲での修正でなんとか出来そうですね。
どうせコンパイルし直すなら、最新にしようかなと。



151 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 08:43:41 ]
>>149
Unicodeコンポでつまずいたり、吸収するライブラリとか作ったりされましたか?
これから同じ状況を迎えるのでw

152 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 14:42:20 ]
>>149
BCB6はVistaで起動できるようだけど?
ttp://yoshidastyle.net/Blogs/program/2009/02/16/builder6binbcbdro

153 名前:デフォルトの名無しさん [2010/02/18(木) 15:30:43 ]
TRichEditにAddするとキャレットが消えるんだけど
これを表示される方法を教えてください

154 名前:デフォルトの名無しさん [2010/02/18(木) 15:33:52 ]
ちなみにShowCaret( RichEdit->Handle );じゃ表示されませんですた

155 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:57:45 ]
TListBoxで選択が変わったことを検出したいのですが、

TForm1::TForm1(TComponent* Owner)
{
ListBox1->WindowProc = MyWindowProc;
}

void __fastcall TForm1::MyWindowProc(TMessage &Message)
{
if (Message.Msg == WM_COMMAND) { // 0
if (Message.WParamHi == LBN_SELCHANGE) { // 1
return; // 2
}
}
}

としてみたのですが0の部分までは描画要求などで頻繁によばれますが
セルをクリックして選択を変えたときにはMyWindowProc自体が呼ばれません
(1ではなくて0の部分もよばれない)
なにがいけないんでしょうか?

156 名前:155 mailto:sage [2010/02/19(金) 19:48:48 ]
理由がわかりました
TListBoxはWM_COMMANDを送らないんですね
どうしてもとりたければ派生クラス自分で作れってことですね

157 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:05:38 ]
>>155
矢印キーによる選択でも、OnClickイベントが発生するけど
解決できない処理なのか

158 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:15:11 ]
すでに選択されていたものが再びクリックされたのか
選択されていなかったものが新たにクリックされたのか
で処理を切り分けたいんです

159 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:36:17 ]
>>158
フラグ用の変数を用意して、現在選択している項目と同じ項目を再度クリックされたかを判定する事になると思う。
ListBox->Tagプロパティを使ってなければ、これを使うとお手軽。

別の意味で、1度選択された項目は2度と処理したくない場合は
ListBox->Itemsを使うのはどうか?
Itemsの正体はTStringListである
TStringListは文字列とセットでポインターを1つ保持できる
これがListBox->Items->Objects[index] である
このポインターを収めるところをフラグに使う
NULLはゼロ。NULL以外はアドレスで、アドレスは数値。
だから数値を1個保存すると、NULLと区別できる

void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
TListBox* ListBox = dynamic_cast<TListBox*>(Sender);
int index; AnsiString s;
if (ListBox == NULL) { return; }
index = ListBox->ItemIndex;
if (index < 0) { return; }
if (ListBox->Items->Objects[index] == NULL) {
s.printf("未処理[%d]", index);
// 処理済フラグON
ListBox->Items->Objects[index] =(TObject*) 1;
} else {
s.printf("処理炭[%d]", index);
}
Memo1->Lines->Add(s);
}


160 名前:デフォルトの名無しさん [2010/02/20(土) 14:33:54 ]
2007を使っています。
TRichEditのSelStartは全角の1バイト目を指定したら
SelLengthは自動的に2となって2バイト目を指定したらSelStartは自動で次文字の1バイト目にいってました
それが突然2ならなくなってしまいました。
どこかでプロジェクトのランタイムテーマが無効でこうなるって書いてた気がしたのですが・・・
確かにランタイムテーマのチェックを外してからおかしくなったとおもうのですが
再度これにチェックを入れてコンパイルしても以前の動作にもどってくれません・・
どうしたらもどっれくれますか?



161 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:09:10 ]
テーマが有効だと、そうなるのですが。
無効にし、かつプロジェクトのあるディレクトリに自動生成されている .res ファイルを
削除してみてください

162 名前:デフォルトの名無しさん [2010/02/20(土) 15:43:05 ]
XPのビジュアルスタイルにするためのマニフェストファイルをリソースに埋込み
brc32でコンパイルしても、コンパイルは正常にできるんですが、スタイルが変わりません
どうしたらいいの?

163 名前:デフォルトの名無しさん [2010/02/20(土) 15:45:45 ]
>>161
できました!!!
でも・・・
res削除するとアイコンが消えて読み込みもできなくなったんですが
これアプリのアイコンはどうやってしていしたらいいでしょうか?

それともう1つ。。。
TRichEditでSelStart=0にして、SelLength=RichEdit->Lines->Text.Length();として
RichEdit->SetAttributes->Color = clRed;として
全文字を赤(色はデフォ以外ならなんでもいいみたい)にしたときに
行間がつまって表示されてしまいます。
更にこの時にSelStartとSelLength位置の色が正常に取得できなくなってしまうのですが
何が原因なのでしょうか?
これは先ほどのテーマがONでもOFFでも現象は同じでした

164 名前:163 [2010/02/22(月) 16:11:12 ]
ちなみに、RichEditのフォントが変わってるような感じがします
フォントはMSゴシックを指定しているのですが
正常な時もおかしいい時もフォント名はMSゴシックだったのですが
おかしい時は文字間が詰まっています(MSPゴシックみたいな感じに)
これTRichEditのバグですか?


165 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 16:08:46 ]
Variant::CreateObjectで作成したOLEオブジェクトにある
プロパティの有無を何か検出する方法は無いでしょうか?

本来NULLを返すはずのプロパティがあるのですがどうも
プロパティ名自体が無いようで例外が発生しています
例外処理でひっかけてはいるのですがデバックしている時は
毎度そこで止まるので困っています

166 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 17:16:59 ]
デバッグが不便だというなら@Delphi7

例外が出る前の行にブレークポイントを仕掛けて、ブレークポイントの設定→拡張でブレークのチェックをクリア
+この後の例外を無視するにチェック

例外が出る後の行(ry
+この後の例外を処理するにチェック

167 名前:165 mailto:sage [2010/02/25(木) 08:59:24 ]
ブレークポイントで例外を無視ってのに気が付きませんでした
これでずいぶん楽になりました、ありがとうございます

168 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 09:22:08 ]
あ、そんな風に設定するんだ。
設定方法知らなかったので今まで一度も使わなかったorz
IDEとかプロジェクトの設定ダイアログで無視する例外を選んでおくのかと思ってた。

169 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 10:23:20 ]
>IDEとかプロジェクトの設定ダイアログで無視する例外を選んでおくのかと思ってた。
もし適切にフィルタできるなら、ふつうはそちらを使うべきでしょう。

166 のテクニックは、特定の時だけ特定の例外を無視したいときに使います


170 名前:168 mailto:sage [2010/02/25(木) 10:50:10 ]
いや、”特定の例外”ってソースいじる必用があるかもしれないし、例外クラス作ったりしなきゃならないので、
”特定の時だけ”のんが超便利。



171 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 13:30:07 ]
なんだ。しつこいな

ブレークポイントでの操作は IDE 終了したら消えちゃうから、可能なら無視例外を登録するほうが良いでしょう。

もちろんキャッチしたい例外と区別できないと意味がないので、ソースを書き換えなければいけない場合も
あるかと思います。
そこは手間とメリットをはかることになります。
ソースを変更できない(例外クラスを変更できない)場合も多々あるのでそのばあいは
ブレークポイントによる対応と成るでしょうね


172 名前:168 mailto:sage [2010/02/25(木) 13:55:39 ]
いや別に読み流してもらえばおk、だったんだけど。。。

173 名前:デフォルトの名無しさん [2010/02/25(木) 14:29:22 ]
TStringGridで文字列の一部を選択してるとき
TMemoのSelStartとSelLengthみたいにわかる方法を教えてください

174 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 14:52:13 ]
ヒント: TInplaceEdit

175 名前:デフォルトの名無しさん [2010/02/25(木) 14:59:30 ]
StringGridからどやってTInplaceEditにアクセスすんの?
さっさと教えやがってください

176 名前:デフォルトの名無しさん [2010/02/25(木) 15:14:22 ]
できた。
TInplaceEdit *ie = dynamic_cast<TInplaceEdit *>(StringGrid->Components[0]);
確かにこれでOKだったんだけどー
これComponents[0]固定になってるけど大丈夫なの??


177 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 15:56:52 ]
不安ならforで回せば?

178 名前:デフォルトの名無しさん [2010/02/25(木) 17:08:05 ]
>>177
それやってみたんですが、どうやらStringGridのあれは1つしかなかったので
[0]固定でもOKじゃね?みたいな結論になりますた。
将来的にはどうなるかわからないですがばかとりあえず今はこれで大丈夫なので^^

179 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 19:39:45 ]
>>178
dynamic_cast使っているんだから戻り値がNULLだったらインデックス増やすようにすれば良いじゃん

180 名前:デフォルトの名無しさん [2010/02/26(金) 10:16:56 ]
>>179
それちがうだろ
forで回すってことはStringGridのアレカウントが1以上あるってことなんだから
NULLが返らずにTInplaceEdit以外のポインタが来るだろJK
だからインデックスをただ増やすんじゃなくてクラスをチェックせにゃいかん
そうなったら結局forでまわしてアレするのと同じ



181 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 19:27:23 ]
>>180
TInplaceEditでdynamic_castしているのにTInplaceEdit *ieにTInplaceEdit以外のポインタが入ることがあるのか?

182 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 11:34:27 ]
TEditとその他のコントロールがあるフォームでTEdit以外にフォーカスがある時にキーボードが押されたら
自動的にTEditにフォーカスを移動して文字を入力したいと思い、以下のようにしました。これで正常に動く
のですが、TWebBrowserにフォーカスがあってIMEがオンの時のみ、例えば「ka」を入力すると「kあ」になって
しまいます。他のコントロールの場合はちゃんと変換中の下線付きで「か」になるので悩んでいます。TWebBrowser
に対してフォーカスを離させるような何かの処理が必要なのでしょうか?一応WM_KILLFOCUSを送ってみましたが
変化はありませんでした。

void __fastcall Form1::ApplicationEventsMessage(tagMSG &Msg, bool &Handled)
{
if (Msg.message == WM_KEYDOWN) {
Handled = false;

if (!Edit1->Focused()) {
Edit1->SetFocus();
Msg.hwnd = Edit1->Handle;
}
}
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef