くだすれC++Builder(超初心者用)その4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/10/23(金) 09:06:16もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Embarcadero Home Page
http://www.codegear.com/jp/
<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
<兄妹スレ>
くだすれDelphi(超初心者用)その50
http://pc12.2ch.net/test/read.cgi/tech/1246340765/l50
010298
2010/01/23(土) 13:12:43有難うございました。
解決しました。
0103100
2010/01/23(土) 13:25:51となります。
#include <Syncobjs.hpp> はしています。
0104デフォルトの名無しさん
2010/01/23(土) 14:54:05Syncobjs::TSimpleEvent * __fastcall TSimpleEvent(_SECURITY_ATTRIBUTES * EventAttributes,
bool ManualReset, bool InitialState, System::UnicodeString Name, bool UseCOMWait);
0105デフォルトの名無しさん
2010/01/23(土) 15:34:26__fastcall TSimpleEvent(void);
となってるね
Update全部当てたけどこのまま
0106100
2010/01/23(土) 16:03:16Syncobjs.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 これが謎です。
0107デフォルトの名無しさん
2010/01/23(土) 16:16:11にもあるけどhppの生成バグかね。
0108デフォルトの名無しさん
2010/01/24(日) 12:31:07C++ の情報
ファイル SyncObjs.hpp
TSimpleEvent = class(TEvent)
[edit] C++ の情報
ファイル SyncObjs.hpp
TEvent = class(THandleObject)
となってるからまた仕様が変更されているようですね
いつから変わったんだろう
0109デフォルトの名無しさん
2010/01/24(日) 12:32:13SyncObjs.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);
これはさすがにバグが取れているようだ
0110デフォルトの名無しさん
2010/01/27(水) 15:14:53SelAttributesで一部の色を変更した時に
何処が何色に変更されてるかを調べる方法を教えてください。
0111デフォルトの名無しさん
2010/02/01(月) 16:38:070112デフォルトの名無しさん
2010/02/03(水) 17:27:06Boostの中にすでに入っているようで
これを使うにはどうしたらいいでしょうか?
0113デフォルトの名無しさん
2010/02/03(水) 17:58:58必要なファイルが足りないようですね
0114デフォルトの名無しさん
2010/02/04(木) 15:54:09Boostのを使えない場合
普通にZlibの最新版をダウンロードして
ソースコードをプロジェクトに加えれば使えるんでしょうか?
0115デフォルトの名無しさん
2010/02/04(木) 16:01:32「がんばってください」と言うしかないです。
Delphi 側の実装である zlib ユニットを利用するというてもあると思います。
zlib.hpp をインクルードしてみてください。
0116デフォルトの名無しさん
2010/02/04(木) 21:46:04DLLからimplibするだけだろ
0117デフォルトの名無しさん
2010/02/05(金) 09:11:19ZlibのDLL版のimplibでうまくいきました
ありがとうございました
0118デフォルトの名無しさん
2010/02/08(月) 11:24:36これってどうすれば治りますか?
0119118
2010/02/08(月) 11:29:22もう一つ質問させて頂きたいのですが
C++Builder(のソケット)でネットワークプログラミングをする場合、書籍はwinsock2のモノでも
大丈夫でしょうか?
0120デフォルトの名無しさん
2010/02/08(月) 21:05:35つけておく必要があることに変わりはないけど。TServerSocket/TClientSocketは
SMP上のマルチスレッドではうまくいかない、という報告を見たことがあるので注意して。
Indyならマルチスレッド必須(基本ブロッキングなので)。自前で実装するならご自由に。
ICSはよくわからん。
0121デフォルトの名無しさん
2010/02/08(月) 22:14:130122デフォルトの名無しさん
2010/02/10(水) 10:52:00どのような設定が必要なのでしょうか?
0123デフォルトの名無しさん
2010/02/10(水) 11:15:520124デフォルトの名無しさん
2010/02/10(水) 12:33:590125デフォルトの名無しさん
2010/02/10(水) 16:49:050126デフォルトの名無しさん
2010/02/10(水) 16:54:110127デフォルトの名無しさん
2010/02/12(金) 15:37:10ヘルプどおりにTThreadの派生クラスを作りました
Executeの中でForm1->ProgressBar1->StepIt()を呼ぶだけのシンプルな
もので、これ自体が正常に動作することは確認しました
しかし、肝心の時間がかかるループになるとこのスレッドに制御がこないため
プログレスバーが進みません。ループに入る前にnewで作った時に1回よばれ
ループが終わった時にもう1回よばれるだけです。コンストラクタの引数はfalse
にしてあります。Priorityプロパティも変えてみましたけど変わりません。
どうやったらループの中で並行してスレッドが動くようにできるでしょうか?
0128デフォルトの名無しさん
2010/02/12(金) 15:52:49もしくは、落ちなくても正常にアレされなさそう。
void Execute( void )
{
while( !Terminated ){
Synchronize( Unko );
Sleep(1);
]
}
void Unko( void )
{
Form1->ProgressBar1->StepIt();
}
これでどうよ?
0129デフォルトの名無しさん
2010/02/12(金) 16:09:46それもやってみましたけど変わりませんでした
時間がかるループ以外のところでやると正常にプログレスバーは進みます
ループに入るとその間だけ呼ばれなくなります
0130デフォルトの名無しさん
2010/02/12(金) 16:11:350131デフォルトの名無しさん
2010/02/12(金) 16:26:19ループの方は細かいループがたくさんよばれるのでそれらに1つ1つStepIt入れるの
がいやでなんとか別スレッドでできないものかと悩んでいます
0132デフォルトの名無しさん
2010/02/12(金) 16:43:130133デフォルトの名無しさん
2010/02/12(金) 16:50:52これが原因でしょうか?
0134デフォルトの名無しさん
2010/02/12(金) 16:56:18他のループにもいれないとまずいだろ
0135デフォルトの名無しさん
2010/02/12(金) 17:04:25SleepかStepItかProcessMessages
あたりをループの中で呼ぶしかないんですね
ループの部分のソースコードはMacと共有してるんで
あまりやりたくなかったんですけど
#ifdef使って入れてみます
アドバイスありがとうございました
0136デフォルトの名無しさん
2010/02/14(日) 04:21:42抽象的な質問で申し訳無いのですが、BCB6と2009や2010の互換性ってどのくらいあるのでしょうか?
BCB6で作成したソフトをいじろうと思っているのですが、BCB6の購入は難しいようなので、2010を購入するか悩んでいます。
Unicodeになるなど、100%はありえないのはわかっていますが、コンポーネントの動作等はある程度使える物なのでしょうか?
よろしくお願いします。
0137デフォルトの名無しさん
2010/02/14(日) 04:33:07共通の部分だけ使えば互換性は確保出来る
きっとそのうち萎えると予想
0138デフォルトの名無しさん
2010/02/15(月) 08:31:16TWebBrowserとTCppWebBrowserの違いが分かりません
後者の方はヘルプにも何もでてないし
エンバカデロのサイトを検索しても何もヒットしません
TCppWebBrowserはもう使うなということでしょうか?
0139デフォルトの名無しさん
2010/02/15(月) 11:32:57消息とか代替とかご存じの方おられませんか?
0140デフォルトの名無しさん
2010/02/15(月) 22:16:09単にサーバが落ちてて気がついていないだけでは?
0141デフォルトの名無しさん
2010/02/16(火) 14:45:470142デフォルトの名無しさん
2010/02/16(火) 14:55:1064bit正式対応は2011からだぞなもし
0143デフォルトの名無しさん
2010/02/16(火) 15:31:582011ていつでるんだい?
0144デフォルトの名無しさん
2010/02/16(火) 15:43:310145デフォルトの名無しさん
2010/02/16(火) 15:57:28んじゃそれまで待ってみようかな
ありがとうブタ君
0146デフォルトの名無しさん
2010/02/16(火) 16:02:450147デフォルトの名無しさん
2010/02/16(火) 16:04:050148デフォルトの名無しさん
2010/02/16(火) 16:09:200149デフォルトの名無しさん
2010/02/16(火) 17:08:582007はまだ買えるよ。BCB6はVistaで起動しなかったので慌てて2007にしてコンパイルし直したけど,
比較的苦労せずに済んだ。ただ,いつものことながら2007はパッチ当てないと使い物にならない。
パッチ当てても,時々不可解なことが起こる。何も悪いことしてないのにアプリをExitするとアクセス違反
で落ちたり,アプリケーションアイコンが消えたり...
何とか逃げ道を探して使ってるけどね。
0150136
2010/02/17(水) 00:59:21>>149
ありがとうございます。
普通に想定できる範囲での修正でなんとか出来そうですね。
どうせコンパイルし直すなら、最新にしようかなと。
0151デフォルトの名無しさん
2010/02/17(水) 08:43:41Unicodeコンポでつまずいたり、吸収するライブラリとか作ったりされましたか?
これから同じ状況を迎えるのでw
0152デフォルトの名無しさん
2010/02/18(木) 14:42:20BCB6はVistaで起動できるようだけど?
ttp://yoshidastyle.net/Blogs/program/2009/02/16/builder6binbcbdro
0153デフォルトの名無しさん
2010/02/18(木) 15:30:43これを表示される方法を教えてください
0154デフォルトの名無しさん
2010/02/18(木) 15:33:520155デフォルトの名無しさん
2010/02/19(金) 15:57:45TForm1::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の部分もよばれない)
なにがいけないんでしょうか?
0156155
2010/02/19(金) 19:48:48TListBoxはWM_COMMANDを送らないんですね
どうしてもとりたければ派生クラス自分で作れってことですね
0157デフォルトの名無しさん
2010/02/19(金) 21:05:38矢印キーによる選択でも、OnClickイベントが発生するけど
解決できない処理なのか
0158デフォルトの名無しさん
2010/02/19(金) 21:15:11選択されていなかったものが新たにクリックされたのか
で処理を切り分けたいんです
0159デフォルトの名無しさん
2010/02/19(金) 22:36:17フラグ用の変数を用意して、現在選択している項目と同じ項目を再度クリックされたかを判定する事になると思う。
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);
}
0160デフォルトの名無しさん
2010/02/20(土) 14:33:54TRichEditのSelStartは全角の1バイト目を指定したら
SelLengthは自動的に2となって2バイト目を指定したらSelStartは自動で次文字の1バイト目にいってました
それが突然2ならなくなってしまいました。
どこかでプロジェクトのランタイムテーマが無効でこうなるって書いてた気がしたのですが・・・
確かにランタイムテーマのチェックを外してからおかしくなったとおもうのですが
再度これにチェックを入れてコンパイルしても以前の動作にもどってくれません・・
どうしたらもどっれくれますか?
0161デフォルトの名無しさん
2010/02/20(土) 15:09:10無効にし、かつプロジェクトのあるディレクトリに自動生成されている .res ファイルを
削除してみてください
0162デフォルトの名無しさん
2010/02/20(土) 15:43:05brc32でコンパイルしても、コンパイルは正常にできるんですが、スタイルが変わりません
どうしたらいいの?
0163デフォルトの名無しさん
2010/02/20(土) 15:45:45できました!!!
でも・・・
res削除するとアイコンが消えて読み込みもできなくなったんですが
これアプリのアイコンはどうやってしていしたらいいでしょうか?
それともう1つ。。。
TRichEditでSelStart=0にして、SelLength=RichEdit->Lines->Text.Length();として
RichEdit->SetAttributes->Color = clRed;として
全文字を赤(色はデフォ以外ならなんでもいいみたい)にしたときに
行間がつまって表示されてしまいます。
更にこの時にSelStartとSelLength位置の色が正常に取得できなくなってしまうのですが
何が原因なのでしょうか?
これは先ほどのテーマがONでもOFFでも現象は同じでした
0164163
2010/02/22(月) 16:11:12フォントはMSゴシックを指定しているのですが
正常な時もおかしいい時もフォント名はMSゴシックだったのですが
おかしい時は文字間が詰まっています(MSPゴシックみたいな感じに)
これTRichEditのバグですか?
0165デフォルトの名無しさん
2010/02/24(水) 16:08:46プロパティの有無を何か検出する方法は無いでしょうか?
本来NULLを返すはずのプロパティがあるのですがどうも
プロパティ名自体が無いようで例外が発生しています
例外処理でひっかけてはいるのですがデバックしている時は
毎度そこで止まるので困っています
0166デフォルトの名無しさん
2010/02/24(水) 17:16:59例外が出る前の行にブレークポイントを仕掛けて、ブレークポイントの設定→拡張でブレークのチェックをクリア
+この後の例外を無視するにチェック
例外が出る後の行(ry
+この後の例外を処理するにチェック
0167165
2010/02/25(木) 08:59:24これでずいぶん楽になりました、ありがとうございます
0168デフォルトの名無しさん
2010/02/25(木) 09:22:08設定方法知らなかったので今まで一度も使わなかったorz
IDEとかプロジェクトの設定ダイアログで無視する例外を選んでおくのかと思ってた。
0169デフォルトの名無しさん
2010/02/25(木) 10:23:20もし適切にフィルタできるなら、ふつうはそちらを使うべきでしょう。
166 のテクニックは、特定の時だけ特定の例外を無視したいときに使います
0170168
2010/02/25(木) 10:50:10”特定の時だけ”のんが超便利。
0171デフォルトの名無しさん
2010/02/25(木) 13:30:07ブレークポイントでの操作は IDE 終了したら消えちゃうから、可能なら無視例外を登録するほうが良いでしょう。
もちろんキャッチしたい例外と区別できないと意味がないので、ソースを書き換えなければいけない場合も
あるかと思います。
そこは手間とメリットをはかることになります。
ソースを変更できない(例外クラスを変更できない)場合も多々あるのでそのばあいは
ブレークポイントによる対応と成るでしょうね
0172168
2010/02/25(木) 13:55:390173デフォルトの名無しさん
2010/02/25(木) 14:29:22TMemoのSelStartとSelLengthみたいにわかる方法を教えてください
0174デフォルトの名無しさん
2010/02/25(木) 14:52:130175デフォルトの名無しさん
2010/02/25(木) 14:59:30さっさと教えやがってください
0176デフォルトの名無しさん
2010/02/25(木) 15:14:22TInplaceEdit *ie = dynamic_cast<TInplaceEdit *>(StringGrid->Components[0]);
確かにこれでOKだったんだけどー
これComponents[0]固定になってるけど大丈夫なの??
0177デフォルトの名無しさん
2010/02/25(木) 15:56:520178デフォルトの名無しさん
2010/02/25(木) 17:08:05それやってみたんですが、どうやらStringGridのあれは1つしかなかったので
[0]固定でもOKじゃね?みたいな結論になりますた。
将来的にはどうなるかわからないですがばかとりあえず今はこれで大丈夫なので^^
0179デフォルトの名無しさん
2010/02/25(木) 19:39:45dynamic_cast使っているんだから戻り値がNULLだったらインデックス増やすようにすれば良いじゃん
0180デフォルトの名無しさん
2010/02/26(金) 10:16:56それちがうだろ
forで回すってことはStringGridのアレカウントが1以上あるってことなんだから
NULLが返らずにTInplaceEdit以外のポインタが来るだろJK
だからインデックスをただ増やすんじゃなくてクラスをチェックせにゃいかん
そうなったら結局forでまわしてアレするのと同じ
0181デフォルトの名無しさん
2010/02/26(金) 19:27:23TInplaceEditでdynamic_castしているのにTInplaceEdit *ieにTInplaceEdit以外のポインタが入ることがあるのか?
0182デフォルトの名無しさん
2010/02/27(土) 11:34:27自動的に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;
}
}
}
0183デフォルトの名無しさん
2010/03/01(月) 09:08:30どうやらDHTMLのkeydownイベントをフックすればよさそうな気がするんですが
TWebBrowser* からどうやってそのイベントをフックすればいいのか分かりません
documentプロパティでDHTMLオブジェクトにはアクセスできそうですが
そっから先はどうやったらいいんでしょうか?
0184デフォルトの名無しさん
2010/03/01(月) 19:26:01VC++とどちらが人口が多いのでしょうか?
あと、初心者がとっつきやすいのはどちらでしょうか?
仕事じゃなくて趣味でやる程度です
0185デフォルトの名無しさん
2010/03/02(火) 20:51:53VC++
>初心者がとっつきやすいのはどちらでしょうか?
C++Builder
0186デフォルトの名無しさん
2010/03/02(火) 20:55:280187デフォルトの名無しさん
2010/03/02(火) 22:03:200188デフォルトの名無しさん
2010/03/03(水) 00:37:27ttp://msdn.microsoft.com/en-us/library/bb508508%28VS.85%29.aspx
0189デフォルトの名無しさん
2010/03/03(水) 03:11:450190デフォルトの名無しさん
2010/03/03(水) 09:24:42Qt Creator
0191デフォルトの名無しさん
2010/03/03(水) 10:35:040192デフォルトの名無しさん
2010/03/05(金) 17:27:20これって仕方がないのでしょうか?
それと、SaveToFileをしてる間はOSごと固まってしまいます
せめて固まるのはアプリだけにしたいのですがどうしたらいいでしょうか?
0193デフォルトの名無しさん
2010/03/05(金) 18:20:231920x1080 * 4byte = 8Mbyte 程度か。
少し古い/遅い CPU を使っているとか?
OS/Driver の組み合わせだと、ディスク書き込み中に OS が反応なくなる場合があります。
もし搭載メモリに余裕があるのなら(といってもいまどき 1Gbyte 位は搭載しているだろうけど)
いったん 別のストリームへ SaveToStream で保存し、それから保存してみたら?
それでも OS が固まるなら、少し別の原因か
0194デフォルトの名無しさん
2010/03/06(土) 04:09:07SSDに載せ替えたので、インストールしなおしたところ、コンパイル時に必ず以下のメッセージが出て止まるようになってしまいました。
Windows - ディスクがありません
Exception Processing Message c0000013 Parameters 764cbf7c 4 764cbf7c 764cbf7c
ググっても常駐ソフトを見直せとかの情報しか無く、困っています。
使用許諾コードは取得してあります。
よろしくお願いします。
0195デフォルトの名無しさん
2010/03/06(土) 10:51:09.ridlファイルで基本的な情報を設定すると
xxx_TLB.cpp と xxx_TLB.hができてひな形が作られるらしい
ということはわかったのですが
そっから先にどうすれば実際のインスタンスが作れるのかが
わかりません
どなたか基本的な使い方の手順を教えてもらえないでしょうか?
0196デフォルトの名無しさん
2010/03/06(土) 12:07:35c0000013で検索した結果はちゃんと見て追試してそれでも何も問題となるようなものはない、
という状況なの?
>195
コンポーネントとしてインストールしてそれをフォームに貼ればいいんじゃない?
0197デフォルトの名無しさん
2010/03/06(土) 16:55:48なんとなく原因がわかりました
BitBlt等にBitmap->Canvas->Handleを渡してビットマップを作るとSaveToFile時に10秒くらいかかるようになってた
これSaveToFileで以前に保存したファイルをLoadFromFileしてからSaveToFileをすると
200msでくらいで終わってたんですが
なんでAPIでアレするとこんなに遅くなりますかね?
しかもOSごとって・・・
0198194
2010/03/06(土) 19:19:50物凄く不安定で、どうしたらいいのやら・・・。
セーフモードで立ち上げた後は動いたりするのですが、しばらくするとまた同じエラーが出たりします。
0199デフォルトの名無しさん
2010/03/06(土) 19:34:020200194
2010/03/06(土) 20:48:25常駐はAntiVirとSpybotとp2proxyくらいです。
0201デフォルトの名無しさん
2010/03/06(土) 22:15:51■ このスレッドは過去ログ倉庫に格納されています