- 1 名前:デフォルトの名無しさん mailto:sage [2008/08/01(金) 16:30:32 ]
- C++Builderに関する質問・回答や議論等を行う相談室スレッド。
※2008/07よりCodeGear(Borland IDE/DB部門)はBorlandからEmbarcaderoに移動しました 【前スレ】 C++Builder相談室 Part18 pc11.2ch.net/test/read.cgi/tech/1188607282/ 過去スレ・関連サイトは>>2-7あたり。 ※Borland C++ Compiler 5.5.1についての質問は以下のスレへ タダで使えるBorland C++ Part5 pc11.2ch.net/test/read.cgi/tech/1135127048/ ※BDS(Borland Developer Studio)の総合スレはこちら Borland Developer Studio 2006 No.13 pc11.2ch.net/test/read.cgi/tech/1175861395/ ※CodeGear(Borland/Embarcadero)関連はこちら 【CodeGear】Embarcaderoオッチャ その10 pc11.2ch.net/test/read.cgi/tech/1216250111/ <関連スレ> くだすれC++Builder(超初心者用)その3 pc11.2ch.net/test/read.cgi/tech/1171219191/ [Tips]Borland C++Builder ちょいテク No.01 pc11.2ch.net/test/read.cgi/tech/1154580209/ 【Delphi】 Indyコンポーネント 【C++Builder】 pc8.2ch.net/test/read.cgi/tech/1093654251/
- 52 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:23:02 ]
- Form1をParent設定したからじゃね?
- 53 名前:デフォルトの名無しさん [2008/08/28(木) 17:30:08 ]
- してないですししたらForm1にめりこみません?
- 54 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:35:21 ]
- ShowModalで表示させてない?
- 55 名前:デフォルトの名無しさん [2008/08/28(木) 17:39:22 ]
- いえ、Showでいっといてます。
ちなみに、モーダルだと下フォーム(Form1)をクリってもアクティブにならないですが >>51の現象はForm1はアクティブにはなるのですがForm2が常に前面にあるんですう うーん、今までBuilder5でやってたのと同じなんですが、2007で仕様が変わったとか?
- 56 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 21:25:39 ]
- hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200808/08080025.txt
Vista対策の弊害
- 57 名前:デフォルトの名無しさん [2008/08/29(金) 18:06:17 ]
- >>56
そそそそあqwせdrftgyふじこlそれだ!! ありがとうありがとう>< しっかしこんなすぐわかるバグを放置ってなんなんだいったい
- 58 名前:デフォルトの名無しさん [2008/08/29(金) 18:09:34 ]
- あー!
ListViewのOwnerDataをtrueにしてあれすると MultiSelectが使えないよおおおおおおおおおおおおおおおおおおおおー 複数選択するとSelCountが0になるうううううううううううう たすけてー><
- 59 名前:デフォルトの名無しさん [2008/09/01(月) 09:56:29 ]
- te
- 60 名前:デフォルトの名無しさん [2008/09/01(月) 09:58:37 ]
- StringGridでカーソルを行選択にできますが
これをListViewみたいにマルチセレクトする方法を教えてくださいよ
- 61 名前:デフォルトの名無しさん [2008/09/01(月) 16:48:43 ]
- 更に質問
StringGridのDrawCellで各セルを描画してんだけど Invalidate呼んだら表示されてるとこ全部あれしちゃうんで これ指定した行だけ更新するほうほうをさっさと教えてくださいよ
- 62 名前:デフォルトの名無しさん [2008/09/02(火) 19:15:50 ]
- ListViewで1行づつ背景の色を変える方法を教えてください><
- 63 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:57:56 ]
- >>33です。
>>34 >>35 返信ありがとうございました。 お陰様で、かなめの部分はこんな感じでできました。 void FindPathPattern(TStringList *paths, AnsiString dir, const TStringList *items, int level) { TSearchRec sr; int attr; if (level < items->Count-1) { // フォルダ検索&再帰 attr = faAnyFile; if (FindFirst(dir+items->Strings[level], attr, sr) == 0) { do { if (sr.Attr & faDirectory) { FindPathPattern(paths, dir+sr.Name+"\\", items, level+1); } } while (FindNext(sr) == 0); FindClose(sr); } } else { // ファイル検索&保存 attr = faAnyFile & ~faDirectory; if (FindFirst(dir+items->Strings[level], attr, sr) == 0) { do { paths->Add(dir+sr.Name); } while (FindNext(sr) == 0); FindClose(sr); } } }
- 64 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:57:25 ]
- >62
OnCustomDrawItemイベントでSender.Canvas.Brush.Colorを変更するだけ。
- 65 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:52:29 ]
- 2009入れたんですけど、2007で通ったコンパイルが通らないです。
widestring は wchar_t* に変換できないってどうすればいいのでしょ? WideString( fi.FullName );
- 66 名前:デフォルトの名無しさん [2008/09/18(木) 20:04:25 ]
- TToolBarの中のTToolButtonを真ん中に持ってきたいのですが、
方法無いのでしょうか?
- 67 名前:66 mailto:sage [2008/09/18(木) 20:11:25 ]
- Indentプロパティに0以上の値を設定すればよかったです。。
半年も悩んだのに、書き込んだ瞬間わかるとは。。
- 68 名前:デフォルトの名無しさん [2008/09/19(金) 13:13:29 ]
- BCB5で突然CPUウィンドウが表示され続ける現象が出始めてしました
○問題 統合環境からのデバック実行時にCPUウィンドウが表示され続ける ○解ったこと ListViewの項目幅を変更した時にCPUウィンドウが表示される ○その他情報 ・Vista用のマニフェストを追加 ・Listviewとは関係無い箇所の修正 ・プログラムへのバージョン情報の埋め込み この3点は元に戻してみましたが代わりありません 数日前のソースに戻すと問題無く動作します DelphiMLで同様の現象が出た人が居たのですがその方はXP3を当てることで直ったそうですが 今の開発環境はすでにSP3が入っているのでこのような変化を付けることが出来ません 問題が発生しているListViewにはまったく手を入れていません 何か対策をご存じな方がおられましたらお願いいたします
- 69 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 22:48:13 ]
- マニフェストが怪しくね?システム側にキャッシュされるという話を読んだことがあるし。
- 70 名前:68 [2008/09/20(土) 08:52:23 ]
- マニフェストがキャッシュされる話は自分も聞いたことがあるのですが
外部マニフェストでは無く実行ファイルの中に入れているので影響は無いと思っていました (実行ファイルのパスとタイムスタンプでキャッシュしてると理解してます) 困った・・・・
- 71 名前:68 [2008/09/20(土) 15:14:16 ]
- 解決しました
原因は指摘の通りマニフェスト 一時は外しても再現してたのですがすべてのプロジェクトの再構築で再現しなくなりました マニフェストのほうですがMicrosoft.Windows.Common-Controlsを指定しているブロックの部分が 引っかかっていたみたいです(目的としてはAdmin権限必須の指定だけでよかった) 丁度Vista対応実例があったのでそのマニフェストを流用していたために疑うのが遅れました
- 72 名前:sage [2008/09/21(日) 07:40:54 ]
- Turbo C++でフリーカーソル無効化アドインを使っていたのですが、
hotfixを当ててから効果がなくなってしまいました。 TC++をインストールしなおす以外に何かよい方法はないでしょうか?
- 73 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 11:14:12 ]
- C++Builder2009が届いたんで、今までの環境を移行して今まで組んだプログラム
を修正して動かしたりしているんだが、ASCII文字だけがどうしてもうまくいかん...... 元々、外国の特殊文字(Latin1/2)の文字入力の為に作ったソフトで、 ASCIIのウムラウトとかをキーボードから":u"とか入力して表示できる ようにしてたんだが、C++Builder2009でコンパイルしてテストすると "・"になっちゃうんだよね。 要は、ASCIIコードの特殊文字を表示させたいんだけれども、 どういう風にすればいいか分かる人いない? やっぱり、Unicode対応しちゃったから今までのASCIIは完全にダメなんかな?
- 74 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 11:28:07 ]
- 要は今までANSI(ISO 8859系)で処理してたてことだよね?AnsiStringで処理しておいて
表示のみUnicodeStringにするとかそのくらいしか思い浮かばないな。
- 75 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:04:00 ]
- >>74
そういう方法しかないかなぁ...... 一応試しているんだけれど、TEncodeingでUnicode化もうまくいかないんだよね...... TBytesにAnsiStringを変換しないとUnicode化はできないみたいなんだけれども、 これもうまくいかない......
- 76 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 07:05:05 ]
- >>75
もしよかったらバージョンいくつからの以降で、 どの程度ソースの変更が必要だったか教えて欲しい。
- 77 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 09:38:40 ]
- >>76
えっと、CodeGearウオッチャスレにも書いてるから、 重複するけれども、こんな感じ。 まぁ、やり方が分かれば、手間は掛かるかもだけれども難しい事はないよ。 C++Builder2007とC++Builder5からの移行だよ。 例1)MessageBoxに直接文字列セット Applcation->MessageBox("mes","mes",MB_OK); ↓ Applcation->MessageBox(L"mes",L"mes",MB_OK); 例2)AnsiString型に文字列をセットしてMessageBox出力 AnsiString str="mes"; Applcation->MessageBox(str.c_str(),str.c_str(),MB_OK); ↓ UnicodeString str="mes"; Applcation->MessageBox(str.w_str(),str.w_str(),MB_OK); 例3)DelphiのVCL登録 Char→AnsiChar PChar→PAnsiChar 例4)C++Builder5からの移行 C++Builder5から移行して、例1とか例2とかの修正後、 リンカエラーが出た場合の対処として、新規プロジェクトを作成 してフォームのCPPファイルを追加してコンパイルするとリンクも通る。
- 78 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 10:22:15 ]
- >>77
ありがとう。L マクロか。 私も5からの以降なんだけど、 フォームは作り直さないとやっぱりダメ? >フォームのcpp ←dfm の間違いだったらいいんだけど・・・
- 79 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 10:55:33 ]
- >>78
あっ、フォームを作り直す必要はないよ。 作り直す必要があるのはプロジェクトファイルね。 新規でVCLフォームアプリケーションを作成して、最初にあるuit1をプロジェクト から削除後、C++Builder5で作ったdfmのあるCPPファイルをプロジェクト にD&Dすると、dfmとcppとhファイルが勝手に追加されるから、 その後ならリンクも正常に通るよ。
- 80 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 21:08:50 ]
- >>79
ありがとう! 決心しました。 明日アップグレード金振り込んできます。 デヴェロッパーズキャンプとか出たのに、 そういう肝心なことは聞きにくかった。 っていうか、Builder5 からの移行って時点で 聞きにくかった・・・。
- 81 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 22:42:54 ]
- >>80
お役に立てたら何よりだよ。 とりあえず、C++Builder2007でも通らなかったものはある。 具体的にはTarCtrlsっていうVCL。 これは、dsinintf.hppっていうのを使っているが、これがC++Builder2007 の時点でファイル名が変わってたっぽい。 で、そのファイル名に変更してみたんだが、クラス名も変わってるみたいで 簡単には移植できなさそうで諦めたよ。 そういったものを使ってなければ、移植に関してはそんなに問題はないと思うよ。
- 82 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 10:13:25 ]
- >>81
重ね重ね、ありがとう。 VCL でも整理されたクラスとかあるんだね。 TarCtrls は多分使ってないと思う。 あんまり VCL でも変わったのは使わないようにしてるから、 意外と移植の手間は少なそうな気がしてきた。 それより、Lマクロがめんどくさそう・・・。
- 83 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 11:56:47 ]
- AnsiString、WideString、UnicodeStringでtypedefで置き換えできる位の互換性持たせてくれと思う・・
- 84 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 14:07:34 ]
- 2009トライアル版にBCB6のプロジェクトを読み込ませてビルドを試みてるけど,書き直しが結構大変。
>>77のMessageBoxも沢山あるんだけど,何しろヘルプがバグだらけで正しい書き直し方がわかるまでに 時間がかかる。 ・UnicodeStringのc_str()メソッドはwchar_t*を返すとヘルプには書いてあるが,実際にはchar*が返される。 wchar_t*を返すのはw_str()だった。 ・ExceptionクラスのMessageプロパティの型はヘルプによればAnsiStringだが,実際にはUnicodeString。 ・DateTimeToString関数のプロトタイプはヘルプではDateTimeToString(AnsiString, const AnsiString, TDateTime); となっているが,正しくはDateTimeToString(UnicodeString &, const UnicodeString, TDateTime);らしい。 結局ヘルプではAnsiString→UnicodeStringの書き換えがまともに行われてないんだということがやっとわかった。 それにしても&くらい抜かさずにちゃんと書いて欲しい... ところで2009ではTEditのTextやTButtonのCaptionなんかが軒並みAnsiStringからTCaptionという型に変わって るんだけど,ヘルプにはTCaptionはstringだと書いてある。これってstd::stringのことなの? だとすると,ToInt()とかないからstd::stringstream使わなきゃなんないし,今までインデックスが1からだったのが 0からになるし,エライ騒ぎなんだが...と思ったら,違うみたい。デフォルトではstringはUnicodStringだそうな。 もーようわからん。Delphiとごっちゃになったヘルプはなんとかならのか!
- 85 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 15:24:28 ]
- >2009トライアル版にBCB6のプロジェクトを読み込ませてビルドを試みてるけど,
BCB6を使ってるとは同じ身だorz 誰か対応方法wiki化しる!
- 86 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 16:06:32 ]
- >std::stringstream使わなきゃなんないし
#define _TCAPTION(str) std::string(str.c_str()) でいいじゃん
- 87 名前:84 mailto:sage [2008/09/25(木) 16:10:03 ]
- >>86
いや,TCaption=std::stringじゃなくてTCaption=UnicodeStringだってことがわかったんでいいんだ。 紛らわしいこと書いてスマソ。
- 88 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 13:42:03 ]
- うにこでStringはt_str()で_TCHARが返るよ
- 89 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 13:44:10 ]
- うにこで初心者はここら辺見とくといいよ
ttp://www.ruche-home.net/?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BE%AE%A5%CD%A5%BF%BD%B8%2FUnicode%C2%D0%B1%FE%A5%B3%A1%BC%A5%C7%A5%A3%A5%F3%A5%B0
- 90 名前:80 mailto:sage [2008/09/29(月) 22:12:58 ]
- ビルダー2009コネーヨー> ヽ(´Д`)ノ
もう2日まって来なかったら、連絡してみよう・・・。
- 91 名前:デフォルトの名無しさん [2008/09/30(火) 12:53:19 ]
- StrToInt では16進数文字列が変換できないの?
自分で HexToInt なる関数をつくってしまったわい。
- 92 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 13:19:32 ]
- >>91
変換する文字列の頭に 0x つければできるよ。
- 93 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:15:04 ]
- >>91 m9(^Д^)
- 94 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 16:24:31 ]
- こういうのは自作した方が良い。
- 95 名前:80 mailto:sage [2008/09/30(火) 16:25:12 ]
- 今日届いた。一応解決したからかきこんどきます。スレ汚し、スマヌ。
インストールする気が全く起きん・・・。
- 96 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:00:11 ]
- >91
'$'+でももちろんおk
- 97 名前:貧乏学生 [2008/09/30(火) 19:27:05 ]
- 質問です。
ファイルをリストボックス上にスクロールダウンして リストボックスにファイルのパスが表示されるプログラムが 出来なくて困っています。 ご存知の方いらっしゃいましたらご指導よろしくお願いします。
- 98 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 19:37:26 ]
- >>97
どこの言葉だよ・・・。
- 99 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:32:09 ]
- にh(ry
- 100 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:36:32 ]
- リストボックスにD&Dでリストボックスにファイルパスを表示する
ということ?
- 101 名前:貧乏学生 [2008/09/30(火) 20:38:00 ]
- >>100
そうです。お教えください。よろしくお願いします。
- 102 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:39:30 ]
- 貧乏な学生達はD&Dのことをスクロールダウンというのか・・・
- 103 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 20:48:38 ]
- どこの国からの留学生だヨ。
- 104 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 23:20:09 ]
- >>101
DragAcceptFiles を使う。 あとは DragQueryFile 辺りを調べてみて。
- 105 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 03:17:36 ]
- コンポなかったっけ?まあ、APIでやったほうがパッケージ管理の必要ないから楽だけど。
>>102 D&Dっていったらダンジョンズ・アンド・ドラゴンズだろ
- 106 名前:デフォルトの名無しさん [2008/10/01(水) 08:27:09 ]
- アイコンにファイルをドラッグ&ドロップしたら
アプリが起動するって どういう仕組みになってるんだろ?
- 107 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 08:41:02 ]
- >>106
それをやるのが OS の GUI。
- 108 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 09:47:12 ]
- >>106
コマンドラインパラメータにドラッグ&ドロップされたファイル名が入ってくるから, _argv[]とかParamStr()で取れるよ...って,そういう話じゃないのかな?
- 109 名前:デフォルトの名無しさん [2008/10/01(水) 11:32:30 ]
- C++B 2009のトライアル版を使っています。
各コンポーネントのCaption表示をリソース管理でローカライズすることは 出来たのですが、動的に表示を変える場合に用意した文字列を、リソース管理 でのローカライズ方法が分かりません。どなたか御教授下さい。 ちなみに、Caption表示等のリソースファイル(dfm, rc)とは別に文字列を定義 するファイルを作らないといけないんですかね?
- 110 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 12:09:25 ]
- EXEといっしょにリソース入れるなら分けた意味ないだろ。
入れ替えたいなら、普通DLLでリソース持つわな。
- 111 名前:デフォルトの名無しさん [2008/10/01(水) 13:38:11 ]
- DLLですか・・・。
C++Bのエディットで表示したソース上で日本語以外のワイド文字が 入力出来ないみたいなんで、入力が出来るトランスレーションエディ タで一緒に編集できる方法があればと思ったのですが。
- 112 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 14:05:49 ]
- 簡単に編集したかったら
>>109 のように独自定義ファイル作って、実行時に読み込んで割り付けると楽だと思うが。 別にリソースでわざわざ持たせなくてもいいんだろ?
- 113 名前:106 [2008/10/01(水) 15:21:24 ]
- >>108
そういうことダス。 ベリベリサンキュ。
- 114 名前:デフォルトの名無しさん [2008/10/01(水) 15:26:33 ]
- そうですね。
独自定義ファイルやDLLを作成するにしても外部ファイルが増 えてしまうので、出来れば増やしたくないってのがありますが 結局リソースファイル作る時点で増えるんで、独自定義ファイル でまとめたほうが楽ですね。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 15:32:12 ]
- そうそう、独自定義ファイルをUTF-8で作っておいたら無問題。
それと編集しやすいファイル記述形式は、 >AAA=menu click みたいな1行単位。 これだと、TStringListにロードさせたあとは、Valuesで取れるし、 テキトーにファイルにコメント書いても悪影響ないし、 それとか、いざ、Win以外の開発が発生してもロードクラスを簡単に作れる。
- 116 名前:115 mailto:sage [2008/10/01(水) 15:35:45 ]
- さらに自分の場合、
>Form1="送信フォーム" >Form1.Label1="送信設定" >Form1.Button1="送信" みたいにしといて、 TStringListを渡しておいたら、 勝手にフォームのコントロールを検索してのキャプション書き換える クラス作ちゃったw 注意点は、メモ帳でファイル書き換えても自分の直した行しか変わらず問題ないが、 ワードパッドとかで書きかえるとファイル保存するときにUNICODE勝手にいじられちゃう。
- 117 名前:115 mailto:sage [2008/10/01(水) 15:40:46 ]
- ついでにヒントを書いておくと、
・ファイルロードするTStringListクラスを保持したLangListクラス ・ロードしたものでコントロールのキャプション書き換えるクラス は別々にしておいた方が良い。 なぜかというと、ロードしたクラスのみを使う場合があります。 例) throw Exception(LangList.ValuesAnsi("MSG.CannotCreateFile") + SDestFile); (LangListからUTF8でとるときは、LangList.ValuesUtf8("MSG.CannotCreateFile")とか書く)
- 118 名前:デフォルトの名無しさん [2008/10/01(水) 15:55:30 ]
- 109です。
>>115 似たようなことをやっていたのですが、 自分の場合リストからロードする時にValue使わずに、 わざわざ文字列比較して引っかけてたんで、すごく 参考になります。 わざわざ、独自定義ファイルの作り方を教えて下さって ありがとうございます!!
- 119 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:03:06 ]
- このあいだのデベロッパーキャンプで高橋さんが.pasファイルにresourcestringを書いといて
リンクすればいい、ってのをやってた希ガス。標準的な手法があるなら独自にやるのは無駄では? ttp://dn.codegear.com/jp/article/38706 これのB3かな?あとは ttp://dybdahl.dk/dxgettext/ こゆのとか。
- 120 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:26:23 ]
- なるほど。それはいいことを聞いた。
で、ヘルプの「アプリケーションのローカライズ」で検索したらなんか出てきたよ。 今勉強中。
- 121 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 17:35:37 ]
- AnsiStringで文字列末に\0を二つ追加したいのですが、
AnsiString str; str += "\0\0"; ではだめそうでした。char* に変換するのも面倒で、 なんかいい方法無いでしょうか。
- 122 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 21:07:52 ]
- >>121
大丈夫なようだが。 AnsiString str = "abc"; str += "\0\0"; Edit1->Text = str; if (str.SubString(4, 1) == "\0") { Label1->Caption = "\\0"; } if (str.SubString(5, 1) == "\0") { Label2->Caption = "\\0"; }
- 123 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 21:47:12 ]
- 悪い。AnsiStringでは"\0"のデータを直接演算できないみたいだね。
cat_printf()を使ったらうまくいった。 AnsiString str = "abc"; str.cat_printf("%c%c", 0, 0); Edit1->Text = str; Label3->Caption = str.Length(); if (str[4] == 0) Label1->Caption = "\\0"; if (str[5] == 0) Label2->Caption = "\\0";
- 124 名前:121 mailto:sage [2008/10/03(金) 15:45:35 ]
- >>122-123 おお、cat_printfなんてものがあるんですね、
ありがとうございました! 使うところはもちろんSHFileOperationなのでした。
- 125 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 07:00:06 ]
- 2009でPNG画像使おうとするとうまくいかない
新規プロジェクトのフォームに貼ったTImageにPNGを読み込ませておいてビルド→ [ILINK32 エラー] Error: 未解決の外部参照 'Pnglang::_EPngInvalidCRCText' が C:\PROGRAM FILES\CODEGEAR\RAD STUDIO\6.0\LIB\OBJ\PNGIMAGE.OBJ から参照されました (もちろん、Pnglang.hppとPnglang.objは存在する) 読み込ませずにビルドしても同じ。TImageを貼っただけではうまくいくので、PNGを読み込ませた時に挿入さ れた#include <pngimage.hpp>を削ってみるとビルドはとおるが、TImageの(TPictureの)LoadFromFileなどで 読み込もうとしても未サポートの拡張子と言われる じゃあ、TPngImageを使おうと思っても、これはpngimage.hppで宣言されているのでインクルードしないとコン パイルできないが、インクルードするとリンクエラー 試しに別のマシンに2009インストールして試してみたけど同じだった(両方ともXPマシン) まともに使えている人いる? おかしいのは俺のところだけか? それとも、何か情報ある?
- 126 名前:デフォルトの名無しさん mailto:sage [2008/10/07(火) 14:57:15 ]
- >>125
リリースノートによると、画像処理のパッケージがVCLJPGからVCLIMGに代わったからその影響みたい。 ttps://forums.codegear.com/thread.jspa?messageID=17336䎸 その、VCLIMGパッケージがリンクできていないようだから、どこか適当なソースに、 #pragma link "vclimg.lib"か#pragma link "vclimg.bpi"を追加すれば出来た。
- 127 名前:125 mailto:sage [2008/10/07(火) 22:40:45 ]
- >>126
さんきゅ 動いたよ! 今後の事考えると面倒なんで、Pnglang.hppに#pragma link "vclimg.lib"書き加えたw
- 128 名前:デフォルトの名無しさん [2008/10/09(木) 22:29:52 ]
- フォームにパネルを均等に配置してるのですが、
最大化した時に、フォームのサイズに合わせて配置したパネルも一緒に拡大する方法を教えてください オブジェクトインスペクタの設定でできますか?
- 129 名前:デフォルトの名無しさん mailto:sage [2008/10/09(木) 23:41:18 ]
- >128
Anchors
- 130 名前:デフォルトの名無しさん [2008/10/10(金) 20:41:01 ]
- データダイアグラムの使い方がよくわかりません
誰か教えて
- 131 名前:デフォルトの名無しさん [2008/10/11(土) 01:36:14 ]
- >>129
アンカーでどうやって均等配置できるんですか?? LeftとRightをtrueですか? そうしたらLeftの位置は変わらないからRightが伸びてパネルがかぶるし・・・ どうすればいいんでしょうか?
- 132 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 12:25:15 ]
- >>131
どういう状態にしたいかがよく分からんが、新しくPanelを作ってBevelOuter をbvNoneにし、その上に今のPanelを置いてAnchorsを変えればいいんじゃない?
- 133 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 18:54:02 ]
- >>128
OnResizeイベントでダメなん?
- 134 名前:デフォルトの名無しさん [2008/10/11(土) 19:26:56 ]
- >>132
えとですね。 例えばフォームWidthが200として横に均等にパネルを4つ並べます。 こんな感じで↓(とりあえず横が分かれば縦もわかるので今は高さを考慮しない) 隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20)パネル(25)隙間(20) これをフォームのWidthを倍の400にした時に 隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40)パネル(50)隙間(40) こんな感じに間隔もパネル幅も倍になってほしいのですが。。。 これってプロパティだけでできますか? >>133 自分で計算してパネルの位置と幅を調整しなさいよってことですか?
- 135 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 20:00:23 ]
- 普通こういう風にしないか?
void __fastcall TForm1::FormResize(TObject *Sender) { Panel1->Width = Form1->Width * 0.5; Panel2->Left = Form1->Width * 0.5; Panel2->Width = Form1->Width * 0.5; }
- 136 名前:デフォルトの名無しさん [2008/10/12(日) 14:09:50 ]
- >>135
それが普通かどうかはわかりませんが オブジェクトインスペクタで設計時にやる方法があるのかなって思ってききました できないならやはりResizeで自分で計算するしかないですよね
- 137 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 15:38:01 ]
- >136
OnResizeで全部自前計算でFA。
- 138 名前:132 mailto:sage [2008/10/12(日) 21:32:48 ]
- >>134
ん〜...... 色々試してみたが、今の所できんかった。 こういうのって半分パズルだよなぁ...... できない事はないのかもしれんが、オレはちょっとできんかった。
- 139 名前:デフォルトの名無しさん mailto:sage [2008/10/12(日) 22:40:16 ]
- >>134
へたにフォームのプロパティでぐちゃぐちゃやるより、手で書いた方が良いと思う。
- 140 名前:デフォルトの名無しさん [2008/10/13(月) 12:33:23 ]
- >>137
やっぱそれでFAですかね。 >>138 何か出来そうな気はするんですよね。でもたぶんできないっぽいような >>139 アンカーとかである程度はできるから簡単にできるのなっておもいまして とりあえずResizeでFindComponentでパネル取ってやりまーす エロい人達ありがとう
- 141 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 00:24:22 ]
- >>140
>134の状態だと、例えば1ピクセルだけフォームを広げてみた場合、パネルと隙間の増分ピクセル数が 小数になっちゃう Anchorとかのプロパティでは、フォームのリサイズのピクセル数がそのまま各コントロールに影響するの で、根本的に無理があるね
- 142 名前:デフォルトの名無しさん [2008/10/17(金) 17:47:42 ]
- C++Builder6のIDEで質問があります。
ソース内の関数使用箇所から実装部へジャンプする操作(マウス・キーコンビネーションなど) はないのでしょうか。 MyFunc(); をクリックか何かして void MyFunc(void) { ... } へジャンプするみたいな感じです。あちこちで調べたんですが、どうしてもわかりません。
- 143 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 18:22:16 ]
- >>142
右クリック→定義の検索、ではだめなん?
- 144 名前:デフォルトの名無しさん [2008/10/17(金) 22:37:16 ]
- 142です。
右クリック->定義の検索 だと宣言部(.hの方)にジャンプしますよね? .cppの方を見たいのです。人の作ったソースを追っかける時にこの機能が無いと不便で仕方ないんです… それとも何か条件で.hに行ったり.cppに行ったりするのかな? VC++だと一度ビルドしてクラス情報を生成しないとダメ、みたいなのがあるけど、BCBにもあるんですかね? 一応このプロジェクトはビルドしてEXE作ってるけど…
- 145 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 23:54:34 ]
- .hに飛ぶのは、.cppの方がすでにビルドされていてバイナリになって
不可視になってる事があるからじゃない? 例えば配布されているライブラリとかそうじゃん。 .cppはいつもCtrl+Fで検索してるけど。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 10:07:29 ]
- test
- 147 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 16:15:58 ]
- 2007でエディタにアウトラインっぽいのがありますがこれOFFにできますか?
- 148 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:19:58 ]
- できない
- 149 名前:デフォルトの名無しさん [2008/10/23(木) 11:56:54 ]
- Memo1に60行の乱数を出したんですけど、この60行の配列の平均を取った数字を
Edit1に出したいのですがなかなかどうすればいいんでしょうか・・ どなたかアドバイスお願いします。
- 150 名前:デフォルトの名無しさん [2008/10/23(木) 13:19:28 ]
- ヒント
Lines->Strings StrToInt
- 151 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:20:52 ]
- >>149
//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { for (int i = 0; i < 60; i++) { Memo1->Lines->Add(AnsiString(std::rand())); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { double sum = 0.; for (int i = 0; i < Memo1->Lines->Count; i++) sum += Memo1->Lines->Strings[i].ToDouble(); Edit1->Text = AnsiString(sum / Memo1->Lines->Count); }
- 152 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 13:30:27 ]
- データはコントロールじゃなくてコード内で保持した方がよくね?
std::vector<int> results; void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i = 0; i < 60; i++) { int value = std::rand(); results.push_back(value); Memo1->Lines->Add(AnsiString(value)); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { double sum = 0.; for(std::vactor<int>::iterator it = results.begin(); it < results.end(); it++) sum += *it; Edit1->Text = AnsiString(sum / result.size()); }
|

|