くだすれ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
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:510202デフォルトの名無しさん
2010/03/07(日) 10:29:34IncludeかLibのパスに存在しない場所が指定されてるんじゃない?
以前作ったプロジェクトファイルには存在した場所がSSD環境では消えているとか
0203デフォルトの名無しさん
2010/03/07(日) 10:32:37再現できた
元FDやCDのドライブ名であたってみてくれ
0205デフォルトの名無しさん
2010/03/08(月) 13:33:54同じようなアプリを作った場合
実行速度は変わらないでしょうか?
0206デフォルトの名無しさん
2010/03/08(月) 15:56:01Visual Studio 2010のベータを試してみたら
ポトペタとか簡単にできてBCBとあまり変わらない
BCBの優位ってもうないんでしょうか?
0207999
2010/03/08(月) 16:46:57Visual Studio のC++って相変わらずの原始的レベルだろ。
C丼でいいのならVisual Studio使えばイイじゃん。
0208デフォルトの名無しさん
2010/03/08(月) 17:04:50.NETならば、C++でも、出来の悪いBCBっていう感じだよ
0209999
2010/03/08(月) 18:57:13DialogEditorならC++Builderとは根本的に異なる訳だが。
ちがうのかな?
0210デフォルトの名無しさん
2010/03/08(月) 21:15:530211デフォルトの名無しさん
2010/03/08(月) 22:22:48どこがダメなの?
重いの?
0212デフォルトの名無しさん
2010/03/09(火) 08:52:43だから、C++の標準STLでさえ、STL.CLIっていう特殊なライブラリが必要なんじゃね?
ましてやboostが動作するわけないし、C/C++系のライブラリ混ぜよう、とすると頓挫でしょ。
スタンスはC丼じゃんw
0213デフォルトの名無しさん
2010/03/09(火) 09:12:37Managed型を使わなければSTLも普通に使えるし、
ネイティブにコンパイルしたobjや静的ライブラリもリンクできるぞっと。
ただWinFormまわりは完全に.NETの世界なので、
GUIを手軽に扱うことを目的にC++/CLIを使いたいなら
GUI記述専用の言語が別にあると思ったほうが早い。
0214デフォルトの名無しさん
2010/03/09(火) 10:23:03VC++は使えねーヤシwwwww
0215デフォルトの名無しさん
2010/03/09(火) 11:20:52やっぱりBCBが一番って信じていいんですね
0216デフォルトの名無しさん
2010/03/09(火) 14:58:16エラー内容は
'Debugger'の設定に失敗しました。
このエラーダイアログが出てOKボタンを押しても起動が途中で止まっていて
強制終了するしかないのですが、
これどうしたらちゃんと設定できますか?
0217デフォルトの名無しさん
2010/03/09(火) 19:10:240218デフォルトの名無しさん
2010/03/09(火) 21:50:500219デフォルトの名無しさん
2010/03/10(水) 13:39:26例えば char* p = "あ"; とするとpにはシフトJISのコードが入り
wchar_t* wp = L"あ";とするとwpにはUCS2のユニコードが入ります
後者の方は当然だと思いますが、前者の方はソースコードをUTF8で保存しても
強制的にシフトJISにされてしまいます。他のコンパイラで使っていたUTF8の
コードをコンパイルしたら出力が文字化してしまって困っています。
0220219
2010/03/10(水) 14:40:51C++コンパイラ→拡張でコードページが指定できるのですね
しかしこれだと全部のソースコードの一括指定みたいです
ソースコードごとに指定するのは無理なんでしょうか?
またはソースごとに
#pragma option -CP65001
を指定かな。
char 型のエンコーディングは独立することが C/C++ 言語規格で規定されているので、
まぁしょうがないね。
0224デフォルトの名無しさん
2010/03/10(水) 18:30:45Windows7 professional 32bitにBCB6だけど、Windows2000互換モードで動いてる
参考までに。
0225デフォルトの名無しさん
2010/03/10(水) 18:55:40項目を追加しても、リストに反映されなくて、「完了した項目を表示」のチェックをON/OFFすると
表示が更新される
To-Doリストちゃんと使えてる?
0226デフォルトの名無しさん
2010/03/14(日) 15:55:51これをカレントレコードはそのままにしておく方法はあるでしょうか?
0227デフォルトの名無しさん
2010/03/15(月) 09:44:280228デフォルトの名無しさん
2010/03/15(月) 17:22:05未だにBCB5を使っていたのですがunicodeへの対応が必須になり移行を考えています
質問なのですが現時点で購入するとすればC++Builder2010がベストなのでしょうか?
またProfessional版の場合にはVCLのソースが付属するのでしょうか?
0229デフォルトの名無しさん
2010/03/15(月) 21:12:22C++Builderなら2010だな。当然VCLのソースもついてる。ただしdbExpress/DataSnapは
Pro版ではネットワーク上にデータを流してはいけないというEULA上の制約があるので気をつけて。
0230デフォルトの名無しさん
2010/03/16(火) 09:29:21BCB6でも2010でも両方ともコンパイルできるようにしておきたい。
0231228
2010/03/16(火) 11:58:38情報ありがとう御座います、購入の方を進めてみます
長らく移行出来なかった理由の一つにLightReport2で複雑な帳票を作っていることもあるのですが
LightReport2をC++Builder2009又は2010で使用されている方はおられるでしょうか?
他言語文字がうまく印刷出来るのかどうかを知りたいです
0232デフォルトの名無しさん
2010/03/16(火) 22:19:53それがライブラリなら頑張って#ifdefで共通ソース化する。そうではなくアプリケーションなら
ソースの共通化はすっぱりあきらめる。人間諦めが肝心。
0233デフォルトの名無しさん
2010/03/20(土) 11:02:58MECSUtils
http://homepage1.nifty.com/ht_deko/tech021.html
> Delphi 2007 / 2009 / 2010 で同名の関数を使って同等の処理可能にするのが MECSUtils です。
0234デフォルトの名無しさん
2010/03/20(土) 11:28:12ソースコードの共通化にはあまり向かない。
けれど、かなり特殊なことをしない限りは、シングルソースで対応できるのでまずは移植してみたら?
と書いていて、ここは CBuilder であることに気づいたよ。
tchar の問題とかあるからなぁ。
まず、手持ちのコードを _TCHAR 使うように書き換えて ANSI のままでデバッグ。
wchar_t や tcsXXXX 関数は CBuilder だと大昔からある。
C++ で書いたコンポーネントなの?
0235デフォルトの名無しさん
2010/03/24(水) 10:57:050236デフォルトの名無しさん
2010/03/24(水) 11:00:49おまえらほんと役にたたねーゴミだなw
0237デフォルトの名無しさん
2010/03/29(月) 15:29:14TPanelのCaptionはどうやったら改行できますか?
0238デフォルトの名無しさん
2010/03/29(月) 20:50:52描画されているのだが、高さ方向が常に1行分しか確保されていないので。
0239デフォルトの名無しさん
2010/04/01(木) 16:21:39AnsiString FileName = ExtractFilePath( Application->ExeName ) + "hoge.mdb";
Variant cat = Variant::CreateObject("ADOX.Catalog");
cat.Exec(Function("Create")<<"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";");
上記のコードはC++Builder5なら問題なく動作して正常にmdbファイルが作成されるのですが
C++Builder2007で行うとcat.Execで例外が発生してしまいます。。。
両方同じPCでコンパイルしてるのでOSの問題ではないとおもいます。
2007ではどうしたら正常に動作させることができますか?
0240デフォルトの名無しさん
2010/04/02(金) 11:59:12全部選択状態になっているのですが、これを選択状態にしない方法を教えてください
0241デフォルトの名無しさん
2010/04/02(金) 16:55:560242デフォルトの名無しさん
2010/04/03(土) 13:36:090243デフォルトの名無しさん
2010/04/03(土) 13:48:360244デフォルトの名無しさん
2010/04/03(土) 14:02:03かっこいい
0245243
2010/04/03(土) 16:25:18俺の言う事には必ず従え
0246デフォルトの名無しさん
2010/04/08(木) 18:16:46DateTimePicker->Cursor =crCross;
だとコンボボックスしか変更されなかったので・・
0247デフォルトの名無しさん
2010/04/14(水) 20:36:410248デフォルトの名無しさん
2010/04/14(水) 20:38:17行挿入エラーが出るバグがあるのですが
これを回避する方法を教えてください
0249デフォルトの名無しさん
2010/04/19(月) 09:45:370250デフォルトの名無しさん
2010/04/19(月) 10:37:43どうしたら受信できますか??
0251デフォルトの名無しさん
2010/04/19(月) 12:18:120252250
2010/04/19(月) 15:45:25ただ受信さえできばいいんですが、
BytesReceivedやselectしても全然きてないんです
0253デフォルトの名無しさん
2010/04/19(月) 18:26:52もうひとつは、ファイアウォールなどでブロックされてないか調べる
0254250
2010/04/19(月) 18:27:340255デフォルトの名無しさん
2010/04/19(月) 19:10:490256デフォルトの名無しさん
2010/04/19(月) 19:13:070257250
2010/04/19(月) 19:38:51んで、逆にそのターミナルソフトから送信してやっても受信できない
ちなみにC++Builder2007
ごちゃごちゃほざいてないで、お前等もTUdpSocketで受信を試してみろ
0258デフォルトの名無しさん
2010/04/19(月) 20:03:47■ このスレッドは過去ログ倉庫に格納されています