- 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/
- 186 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:08:38 ]
- std::string::size_type pos2 = str.find(',', pos) + 1;
if (str.substr(pos, pos2 - pos - 1) != "00:00:00") { pos = pos2; for (int i = 0; i < 3; i++) { if((pos = str.find(',', pos)) == std::string::npos) goto next; pos++; } pos2 = str.find(',', pos); if (pos2 == std::string::npos) pos2 = pos; else pos2++; Memo1->Lines->Add(str.substr(pos2, 4).c_str()); } next:; } } 要するにTStrings::operator[] の機能を自前で書けばすっきりするはずです。
- 187 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:21:50 ]
- public:
__property AnsiString Cells [int rows] [int cols]= {read=GetCell, write=SetCell}; こんなメンバ持たせたCSVクラス作って使ってるなぁ
- 188 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:29:44 ]
- >>187
BCBはDelphiとのインターフェースが割合簡単に取れるから、 Delphiで書かれたcsvパッケージでも入れたら楽でしょうね。
- 189 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:31:03 ]
- >>185>>186
ありがとうございます。重ね重ねすいません;; if (str.substr(pos, pos2 - pos - 1) != "00:00:00") の部分がよくわからなくて 6番目の数字が00:00:00場合読み込まないようにするのではなく一つ増えて00:00:00:00の場合に読み込まないようにするには どのように変更したらいいのでしょうか・・ 実際11番目の数字(6.44や9.88など桁数は変らず)を表示させるときは6番目の数字が00:00:00:00以外のとき(00:00:00:45や00:00:05:35など)でこちらも桁数については変りません。
- 190 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:33:23 ]
- >>189
今回のプログラムは00:00:00の桁数については決め打ちしていませんので "00:00:00"を"00:00:00:00"に変更すればいいです。
- 191 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:56:52 ]
- >>190
わざわざありがとうございます;;どうやら勘違いしていたようでした。 実際の00:00:00:00のテキストのほうではコンマごとにわかりやすいように半角スペースがついており 半角スペース5列数字、半角スペース1列数字、半角スペース1列数字、半角スペース3列数字・・・ などのように書かれており上記のプログラムで半角スペースも認識されるため正しい数字が出せていないようでした。 (半角スペースを全部埋めていった場合正しい数字がでました。) 半角スペースを含んだ上で数値を出したいのですがこういう場合どのようにすればいいのでしょうか。
- 192 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:03:36 ]
- >>191
これ以上後出し条件はやめてください。 どこかのロダにそのテキストをうpしていただけませんか。
- 193 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:06:59 ]
- つーかもうC++Builderの話題じゃなくなってるし
TStringsListのバージョンは古くて使えないしだから C++相談室にでも書いてみたら?
- 194 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:08:06 ]
- まぁ・・・ね
あなた専用のサポートスレではないんですよって感じですかね
- 195 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:13:55 ]
- 例えサポートスレだとしてもこんな感じで次々に条件を変えられたら
イラッと来ると思うけどね
- 196 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:18:54 ]
- おれは、CSV文字列1行を
TStringListに分解する関数を作って使ってる。 この関数1個あれば、CSVを全然意識せずに文字列として扱える。
- 197 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:25:44 ]
- 全然関係ない話だけど俺はBCB3から2009まで買ってきたなあ
最初の頃は全然使い方が分からなくて、その頃に丁度Delphi6 のフリー版が出たので、Delphi本をBCBに翻訳しながら打ち込んで 動かす事で覚えたっけ。 お陰様でBCB6からは自由自在に使えるようになった。参考書も BCB用が皆無の頃でDelphi本を買って参考にしたっけ。
- 198 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:31:37 ]
- せっかく教えて頂いたのに重ね重ね申し訳ありませんでした・・・;;
次からはもう少し慎重に確認していくように注意します。 ここから先は自己解決していきたいと思います。 何度も教えていただきありがとうございました!!
- 199 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 21:32:21 ]
- VCLがObject Pascalで書かれているのでそれをC++で動かすために
少しの言語拡張とC++のクラスの柔軟性とマクロの多用で対応して いるが、今見ても頭がおかしい人が設計したんじゃないかと思う事がある
- 200 名前:デフォルトの名無しさん [2008/11/05(水) 09:16:56 ]
- >>196
CommaTextというプロパティがあってね・・・ 1例だけ特殊対応しなければいけないけど大抵はこのプロパティだけで大丈夫だな
- 201 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 12:43:08 ]
- CommaTextでは正しく解釈できない場合があるし
CSVの記述が正確ではない場合 悲惨な結果をもたらすことになる。 趣味なら笑って済ますことも出来るだろうが 業務用プログラムでは、 とてもじゃないが、CommaTextは使えない。
- 202 名前:デフォルトの名無しさん [2008/11/05(水) 13:39:21 ]
- >>200
それスペースまで区切りとみなしちゃうだろ? ""で囲ってあればいいけどそうでないのってどうしてる?
- 203 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 13:41:32 ]
- CSVのラインを解釈してバラして保持するクラスを自作すれば無問題。
その後、TStringList系は使いまくってるけど。
- 204 名前:203 mailto:sage [2008/11/05(水) 13:42:27 ]
- さらにそのCSVの1ラインを解釈して保持するクラスに、TStringListとの入出力を持たせればおk。
- 205 名前:デフォルトの名無しさん [2008/11/05(水) 13:49:10 ]
- 正しく解釈出来ないのが"で括られてない項目のスペースだな
>>201CSVの記述が正確では無かったら何やっても悲惨になるんだがw 俺はStringListに分解したあとにチェック入れてる
- 206 名前:デフォルトの名無しさん [2008/11/05(水) 13:57:34 ]
- TStringListのDelimiterとDelimitedTextってC++Builder5にないけど
これって6から?
- 207 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 13:59:24 ]
- >>206
そう 俺はBCB6から本格的にBCBを使い出したからBCB5以前の 奴とは話が時々合わず苦労する
- 208 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 14:01:56 ]
- 5から6へのバージョンうpは安定してるし、
Indy増えるし、やっぱそれに関しては無条件バージョンうpじゃね? 6から200Xへはやったことないガクブル
- 209 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 14:24:24 ]
- 2009使ってるけどこれどう見ても2006や2007と大差ないんだけど
Delphi + BCB で3万円が妥当な価格だと思う エンバカは高く設定し過ぎ
- 210 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 16:24:57 ]
- バカだから仕方ない
- 211 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:51:23 ]
- 2009出たけど配布用の仕組みって入ってる?JavaWebStartみたいな。
業務アプリはネイティブで作ると楽だけど配布がウザすぎてWebにしたくなる。
- 212 名前:デフォルトの名無しさん [2008/11/11(火) 17:24:47 ]
- VCLのラジオボタンをCLXのラジオボタンと同じ動きにする方法ってありませんか?
CLXアプリをVCLアプリに書き換えてるんですが、CLXのラジオボタンがスペーキーを押すまでチェックされないみたいなので… 環境はCLX→6.0 VCL→2007です
- 213 名前:デフォルトの名無しさん [2008/11/11(火) 19:38:51 ]
- >>210
バカに貢俺らって、バカ馬鹿だな
- 214 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 20:12:42 ]
- だがそれがいい
- 215 名前:デフォルトの名無しさん [2008/11/16(日) 15:27:45 ]
- A1とA2にはTStringlistで500行の数字の配列が格納されています。
そのA1とA2の配列の計算をしたいのですが AnsiString k1; for(int j=0;j<500;j++){ k1 = A1->Strings[j] + A2->Strings[j]; Memo1->Lines->Add(k1); } こんな形でやってみたところA1とA2の同じ行が足し算されず メモにはA1とA2の同じ行の数字が並んで表示されているだけなの ですがこれでは配列の足し算はできていないのでしょうか? どなたかよければアドバイスお願いします。
- 216 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 15:34:11 ]
- 足し算できてる。文字列の足し算が。
C++のデータには「型」があるんよ。数値とか文字とか。 StrToIntとかで数値に変換してから足せ。
- 217 名前:デフォルトの名無しさん [2008/11/16(日) 16:13:42 ]
- 返信ありがとうございます。
型で変換してみたのですが少数を含んだ数値の配列で strtodで AnsiString k1; for(int j=0;j<500;j++){ k1 = strtod(A1->Strings[j]) + strtod(A2->Strings[j]); Memo1->Lines->Add(k1); } と書いたときTStringlistに格納しているものなので、AnsiStringに一致するものが見つからないと出て しまいます。どのような変換で書いていけばよいのでしょうか 各配列の数値は 197.543545 や54.47673423のような数値の500個の配列です。
- 218 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:46:25 ]
- A1->Strings[i].ToStrInt()
- 219 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:48:05 ]
- ちごた
A1->Strings[j].ToDouble()
- 220 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 16:59:45 ]
- AnsiStringで受け取る必要ないのぜ。
- 221 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 17:04:48 ]
- >>219
ありがとうございます。 うまく変換して計算することができました。
- 222 名前:デフォルトの名無しさん mailto:sage [2008/11/16(日) 17:24:36 ]
- 2007/2009はAnsiStringTでヘルプ探さないと見つからないな
- 223 名前:デフォルトの名無しさん [2008/11/17(月) 15:37:38 ]
- WINDOWS95で動くのはどのバージョンまでですか?
- 224 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:26:55 ]
- とりあえず、BCB6は動く。
- 225 名前:デフォルトの名無しさん [2008/11/17(月) 16:45:24 ]
- BCB6はとりあえず動くね。
- 226 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:57:01 ]
- ただ、ヘルプ周りはWindows2000以降じゃないと‥‥
- 227 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 17:07:16 ]
- 逆に、ヘルプ周りはWindows2000以降じゃないとアレ
- 228 名前:デフォルトの名無しさん [2008/11/18(火) 02:53:53 ]
- VistaにTurbo C++ Explorerをインストールしましたが、起動時に以下のエラーが表示されて起動できません。
どのようにすれば良いのでしょうか。 モジュール 'rtl100.bpl' のアドレス 51F515BE でアドレス 00000008 に対する読み込み違反がおきました。 EPackageRegistrationException がモジュール coreide100.bpl の 000DCB21 で発生しました。 登録プロシージャ Cppproject.IDERegister (パッケージ c:\program files\borland\bds\4.0\Bin\bcdide100.pbl) が例外クラス EOleSysError を生成しました: クラスが登録されていません, ClassID: {F8FEDD39-E3CE-4B8D-A657-9CA24686881F}. モジュール 'coreide100.bpl' のアドレス 20BA0DAF でアドレス 00000004 に対する読み込み違反がおきました。 モジュール 'designide100.bpl' のアドレス 20EE71DE でアドレス 00000000 に対する読み込み違反がおきました。 Borland® Developer Studio for Windows は動作を停止しました 問題が発生したため、プログラムが正しく動作しなくなりました。このプログラムを閉じてください。
- 229 名前:デフォルトの名無しさん [2008/11/18(火) 14:04:08 ]
- Resolving the EPackageRegistrationException error in BDS 2006 on Windows Vista
ttp://support.codegear.com/article/36202
- 230 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:52:25 ]
- レスありがとうございます。
教えて頂いたリンク先にあった内容や、 ttp://support.codegear.com/article/37345にあった内容を試したのですが、全く状況に変化が見られませんでした… どうも無理そうなので、とりあえずVista正式対応を待つことにします。
- 231 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 23:08:46 ]
- 素直に2007か2009を買うしかないね。Turbo Explorer?正式対応?残念ながら無理でしょ…。
- 232 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 13:49:41 ]
- TBitmapからTIconのハンドルを取得する方法を教えてください
- 233 名前:何をしたいのかを具体的に書けば有効な回答が得られるのでは? mailto:sage [2008/11/25(火) 22:38:53 ]
- できますん。
- 234 名前:デフォルトの名無しさん [2008/12/03(水) 11:42:25 ]
- ShowHint=trueにするとコントロールにカーソルがくると自動でヒントが表示されますが
指定コントロールのヒントを手動で表示される方法を教えてください
- 235 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 22:57:47 ]
- そのコントロールにCM_HINTSHOWをPerformすればいいみたいだけど、パラメータが問題かな?
- 236 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 10:40:48 ]
- >>235
なるほど。 まずはちょっと試してみますありがとう
- 237 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 22:47:38 ]
- Turbo C++ ExploerのdbExpressって、リモートでFirebird2.x接続は無理?
ローカルはOK、リモートでもコネクションは繋がってテーブル名は見える。 が、テーブルを開こうとするとエラー65535がでて繋がらない。
- 238 名前:デフォルトの名無しさん [2008/12/08(月) 17:23:25 ]
- メモ1に
0 0 0 0 1 1 0 0 1 1 ・ ・ ・ 1 1 0 0 0 とこのような感じで0と1が何千行と出されているのですがメモの上から順番にforで回して 1が出た場合その行数とそこから1がどれだけ続いたかカウントしていくプログラムを作成したいのですが どういったようにつくっていけばよいのでしょうか?
- 239 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 17:26:46 ]
- 普通に作れば良いと思うのだが、
先ず何が問題? ・C++文法 ・ファイル操作 ・ロジックの書き方
- 240 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 17:34:38 ]
- >>238
それってMemoでなくても配列の中に1がいくつ続いているかを 数えるのと同じ問題だよね
- 241 名前:デフォルトの名無しさん [2008/12/08(月) 18:05:48 ]
- >>239-240
お前等が馬鹿すぎてワロタ 知らないならレスするなよクズ共 >>238は普通にTMemoでどうやって書くかを聞いてんだろw Memo->Lines->Count Memo->Lines->Strings[i]
- 242 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 18:10:12 ]
- >>241
??
- 243 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 18:12:35 ]
- ここはクズのすくつでつねw
- 244 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 18:18:49 ]
- クズって言う奴はクズじゃないんだよ
- 245 名前:デフォルトの名無しさん [2008/12/08(月) 22:00:28 ]
- >>238 は
何がわからないのかを書いていない。 基本的に質問の仕方を知らない。 きっと何がわからないのかさえわからないのだろう。 そんな人は、たぶん論理的に組み上げていく プログラミングということはムリなのではないかと思う。 丸投げで全部教えてもらいたかったら C/C++の宿題を片付けます 119代目 pc11.2ch.net/test/read.cgi/tech/1228313292/ こっちで聞くべき
- 246 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 10:29:15 ]
- >>245
答え方がわからないならレスしないで下さい。ウザイだけです。
- 247 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 11:07:58 ]
- >>246
おいばかやめろ Win32APIスレから出てこないでください
- 248 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 15:57:06 ]
- ここにまで屑が侵食してきたか・・・
- 249 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 23:48:23 ]
- >>238
今C++Builder動く環境にないので疑似コードで。 変数start_posに-1を代入。(-1は「カウントしてない」というマーキング) 変数iを使って、メモ1の最初から最後までループを回す。{ start_posの値が-1で、{ メモ1の行iの内容が"1"なら、{ start_posにiの値を代入。 } } そうじゃなくて、{ メモ1の行iの内容が"0"なら、{ start_posの値が"1"の開始位置を指しているので、これを表示。 そして(i-start_pos)の計算結果が"1"の続いた個数なので、これも表示。 次のカウントのために、start_posに-1を代入する。 } } } 連続したデータを処理するときはいろんなやり方があるけど、 ・データの変わり目に注目する。("1"の始まりと、"1"の終わり="0"の始まり) ・変わり目でプログラムで行う処理を切り替える。(カウント中と、結果表示&カウント終了) とするのが一つの方法。
- 250 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 08:53:26 ]
- 日本語プログラミングですねわかります
- 251 名前:デフォルトの名無しさん [2008/12/15(月) 00:47:49 ]
- アカデミック版ってインストール時になんか問題ある?
- 252 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 00:51:00 ]
- インスコ時はないんじゃない?
ちゃんとした店なら買う時に学生証見せてなんか書かなきゃいけないと思うけど
- 253 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 14:15:38 ]
- 昔の学割版には、作ったプログラムは有償無償関係なく公開禁止っていうキツいルールがあったけど
あれ今もあるのかな
- 254 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 17:20:08 ]
- Delphi.Personalityってなんですか?
dclusr.dpkを読み込もうとすると、これがないって えらーになるんですが、 Delphiをインストールしないとダメですか?
- 255 名前:デフォルトの名無しさん mailto:sage [2008/12/15(月) 17:22:20 ]
- どれ?
- 256 名前:デフォルトの名無しさん [2008/12/18(木) 14:45:24 ]
- Panelとかコントロールの標準カーソルを指定カーソルファイル(*.cur)に変更する方法を教えてください
- 257 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 14:51:33 ]
- >>256
TScreen::Cursors
- 258 名前:デフォルトの名無しさん [2008/12/18(木) 15:01:00 ]
- >>257
そこにLoadCursorでぶち込むんですよね? それってリソースに予めないとダメですよね?
- 259 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:07:37 ]
- LoadCursorFromFileというAPIがあってですね‥‥
- 260 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:09:12 ]
- 259補足。
ただし、現在はLoadCursorやLoadCursorFromFileは後方互換性のためのAPIで、LoadImageが推奨されてる。
- 261 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:10:58 ]
- >>259
そんなのがあったんですかあああああああああああああああ!! ああ、おかげで思った通りのアレができますた! ありがとうございます。
- 262 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:14:15 ]
- >>260
補足までありがとう。 LoadImageもぐぐってみます。
- 263 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 22:03:33 ]
- BCB6から2009への乗り換えがスゲー苦労する
何か良い方法ないですか?
- 264 名前:デフォルトの名無しさん [2008/12/19(金) 23:51:11 ]
- VC++よりBCBを使うメリットってなんですか?
逆なら枚挙に暇が無いが・・・
- 265 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 00:08:04 ]
- >264
RADなところかな。
- 266 名前:デフォルトの名無しさん [2008/12/20(土) 02:09:12 ]
- lupus.is.kochi-u.ac.jp/~shiota/graphprog/sj/graphprog.html
ここにあるソースをコンパイルしようとしたのですが、 上手くいかないので助言お願いします。 コンパイルしたいのは下の3つです。 graph.h planar.h planarq.c コンパイルの環境はBCC55でCPADからビルドしてます。 ソースに問題があるのか、 環境が悪いのかだけでも分かれば教えてください。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:16:36 ]
- こっちへどうぞ
ttp://pc11.2ch.net/test/read.cgi/tech/1135127048/ でも何がどういう風にうまくいかないのかをきちんと書かないと誰も答えてくれないと思うが。
- 268 名前:デフォルトの名無しさん [2008/12/20(土) 14:12:37 ]
- VC++MFCでちょっと凝ったUIを作成しようとすると
地獄のようにコードを記述する必要がある。 Builderなら部品をちょこちょこと置いて コードをちょこっと記述すればエエ。 工数が1/10くらいになるわ。
- 269 名前:デフォルトの名無しさん [2008/12/22(月) 17:23:26 ]
- >263
BCB6から2007なら簡単です。 2007で「BCB6のプロジェクトファイル(*.bpr)」を読み込んで 2007のプロジェクトファイル(*.cbproj)に書き出して、メイクするだけでOKである。 俺も2009のユニコード関係の処理で困っている。
- 270 名前:デフォルトの名無しさん [2008/12/23(火) 17:02:36 ]
- どうして、2009で「ユニコードライブラリを使う」をVSのように、
プロジェクト・オプションにしなかったんだろう。
- 271 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 22:02:52 ]
- >>263
自分が苦労したのは、AnsiString::c_strをAnsiString::t_strにしたりとか、VCL関数に渡す文字列リテラルをワイド文字列にしたくらいかな。 この辺は、Rubyでスクリプトを書いて何とかした。 TRegIniFileやTIniFileがほとんどだったから、ReadStringとかが見つかったらワイド文字列に変換するって感じ。 >>270 多分、両方メンテしなければならないからかな。 プロジェクトオプションで分けて欲しかったのは同意。
- 272 名前:デフォルトの名無しさん [2008/12/25(木) 13:55:44 ]
- PanelのCaptionに書いてる文字がパネルに収まってるかどうかを判断する方法を教えてください
- 273 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:12:29 ]
- >>272
Panelのサイズを調べて、Bevelとかの幅をそこから引いて、実際の表示領域のサイズを出す PanelのFontでCaptionに設定してある文字列のサイズを調べる 両者を比べる
- 274 名前:デフォルトの名無しさん [2008/12/25(木) 16:21:11 ]
- >>273
文字列のサイズはどうやって調べればいいんですか?
- 275 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:24:17 ]
- Win32APIで、指定文字を書いた場合のRectをとれたはずだが?
- 276 名前:デフォルトの名無しさん [2008/12/25(木) 16:26:16 ]
- >>275
知らないならレスしないで下さい。ウザイだけです。
- 277 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:29:10 ]
- >>276
正解をレスしようと思ったけどやめたw ヒント:Win32APIの文字列描画系APIをパラメータを含めて片っ端から調べろ。
- 278 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:39:08 ]
- >知らないならレスしないで下さい。ウザイだけです。
あれれ? なんだただのでじゃヴか
- 279 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 17:12:10 ]
- >知らないならレスしないで下さい。ウザイだけです。
これって貼り付いてるアンチだとオモ。 質問書いたらこれ書かれたことある。 アンチは加齢にスルーw
- 280 名前:273 mailto:sage [2008/12/25(木) 17:28:32 ]
- >>274
TCanvasに、自分(TCanvas)に設定されているTFontを使って、指定した 文字列を描画する際のサイズを調べるメソッドがある(と思った) >>279 というか、そのコピペはプログラミング系のスレとかでよく見る アンチ以前の、単なる茶々入れも多いよ。カレーにするーには同意
- 281 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 17:33:32 ]
- >>280
あった。 TextExtentが領域、TextHeightが高さ、TextWidthが幅を返すね。
- 282 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 18:15:13 ]
- そういや、なんでVCLリファレンスってTRectとTPointがRECT、POINTの派生ってこと書かれてないんだろ。
Types.hppだと struct TRect : public RECT ってなってるし、派生って事知らないといろいろ面倒だと思うんだが‥‥
- 283 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 22:23:08 ]
- >>279
それはWinAPIスレで流行ってますよ 是非いらっしゃってください お待ちしております
- 284 名前:デフォルトの名無しさん [2008/12/30(火) 17:07:05 ]
- double A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15に値が入っており
一つのMemoに全てを書き出していきたいのですが c言語と同じく printf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5); printf("%d,%d,%d,%d,%d\n",B1,B2,B3,B4,B5); printf("%d,%d,%d,%d,%d\n",C1,C2,C3,C4,C5); このような感じで書き出してCSV形式に3行5列の形に一つのmemoに書き出す方法はないでしょうか? 使用しているのはc++builder5です。 よろしくお願いします。
- 285 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 17:28:00 ]
- AnsiString().sprintf() って使えるはずだろ
- 286 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:13:30 ]
- わかりにくいかな
Memo1->Lines->Add(AnsiString().sprintf("%d,%d,%d,%d,%d\n",A1,A2,A3,A4,A5)); のように書ける
- 287 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:57:46 ]
- doubleなのに%d指定なのは構わないのかな。まあいいけど
でも”c言語と同じくmemoに書き出す”というのがイミフメ あとC言語系のプログラマーなら、アルファベットの大文字小文字はしっかり使い分ける 癖は付けた方がいいとおも
- 288 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 18:58:56 ]
- あごめんそうだな
コピペしただけだから"\n"まで入ってしまってたし "%f"な
- 289 名前:デフォルトの名無しさん [2008/12/30(火) 19:09:39 ]
- >>285>>286ありがとうございます。
方法を変えてやってみたらうまくCSV形式に表示はされたのですが、 引き算の値がエクセルで計算した結果と明らかに違う数値になってMemo5に表示されます。(-1.59444444444503E-02とか) Memo1,2,3,4には0.035083333などの少数の値が5行入っています。 AnsiString H1,H2,H3; for(int I = 0; I < 5; I++){ H1 = Memo1->Lines->Strings[I] - Memo4->Lines->Strings[I]; H2 = Memo2->Lines->Strings[I] - Memo4->Lines->Strings[I]; H3 = Memo3->Lines->Strings[I] - Memo4->Lines->Strings[I]; Memo5->Lines->Add(AnsiString().sprintf("%s,%s,%s",H1,H2,H3)); } どうすれば普通の数値になるかアドバイスお願いします。
- 290 名前:289 [2008/12/30(火) 21:22:12 ]
- 解決しました。
- 291 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 00:52:22 ]
- 馬鹿だろ
- 292 名前:デフォルトの名無しさん [2009/01/08(木) 17:26:06 ]
- 2007って64ビットXPに対応してる?
- 293 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:33:32 ]
- いまだにBCB6なんですが2009買うメリットありますか
既存コンポーネントも強化と書かれてますがどんなもんでしょう 2007くらいまでは案内の手紙も来てたのになー
- 294 名前:デフォルトの名無しさん [2009/01/10(土) 15:50:46 ]
- VC++2008expressでいい
- 295 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:08:24 ]
- BCBスレでVCを薦めるとな
- 296 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:40:55 ]
- struct T {
typedef void (T::*fn_t)(); void f(); int test(fn_t fn) { do { } while (0); // inline不可にしないと再現しない if (fn == &T::f) { return 1; } return 0; } }; BCB6だと(bcc5.6.4)このコードで落ちるんだが 新しいのだと大丈夫なのかな。 (ifの行を const fn_t cmp = &T::f; if (fn == cmp) { に変えれば落ちない) まあメンバ関数へのポインタを変数と直接比較なんて普通やらんが。 他にも落ちる時があるんだが こっちはどういう状態で再現するのかわからないし そもそもコンパイルエラー時だけなのでなんとかなるんだけど。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:30:35 ]
- >>296
BCC6.1.0だと落ちないね
- 298 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:15:40 ]
- CodeGear RAD Studio 2007 を使っております。
VC2005 で作られたコンソールアプリをコンパイルしようとしたのですが、 wcha_t と _stprintf_s を使っているところが通りません。どうすればよいでしょうか?
- 299 名前:デフォルトの名無しさん [2009/01/14(水) 20:57:44 ]
- wchar_t だろ。
_stprintf_sはしらないけど、C言語標準の関数で置き換えれば? たとえばだ。 #define _stprintf_s(・・・) sprintf(・・・) など。
- 300 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:54:40 ]
- 可変個引数をそれで置き換えるのはきつくないか。
こんな感じじゃないと。 #ifdef _UNICODE typedef wchar_t TCHAR; #define _vstprintf vswprintf #else typedef char TCHAR; #define _vstprintf vsprintf #endif int _stprintf_s(const TCHAR* buf, size_t /* ignore */, const TCHAR* format, ...) { va_list args; va_start(args, format); int ret = _vstprintf(buf, format, args); va_end(args); return ret; }
- 301 名前:298 mailto:sage [2009/01/14(水) 22:42:27 ]
- >>299 さん、>>300 さん、お答えありがとうございます。
ここでVCの話をするとおかしくなるとは思いますが、 VCでしたら _stprintf と書いておき プロジェクトオプションで... マルチバイトキャラセット(MBCS)を選べば、 _stprintf は sprintf に置き換えられ、 ユニコードキャラセット(UNICODE)を選べば _stprintf_s は swprintf に置き換えられるのですが、 CodeGear RAD Studio 2007 (C++Builder) には、 こういうマクロ定義はされていないのでしょうか。 こういった作業はすべてユーザーにゆだねられているのでしょうか?
- 302 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:39:30 ]
- >>301
tchar.hインクルードしてる?
- 303 名前:デフォルトの名無しさん [2009/01/15(木) 16:50:00 ]
- DirectShowを使うのにstrmiids.libが必要なんですが
プラットフォームSDK付属のだとリンクエラーになります。 B++Builder用はどこにありますか?
- 304 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 16:53:26 ]
- >>303
www.clootie.ru/cbuilder/index.html これとかは? 使ったこと無いからわからないけど
- 305 名前:デフォルトの名無しさん [2009/01/15(木) 16:55:47 ]
- >>304
ありがとうございます。 このサイトにしっかりとありました(;´Д`) ttp://www.clootie.ru/cbuilder/index.html#DX_CBuilder_SDKs
- 306 名前:デフォルトの名無しさん [2009/01/20(火) 20:53:45 ]
- C++ Builder 6 Update
C++Builder 6 Enterprise ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_ent.exe C++Builder 6 Professional ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_pro.exe C++Builder 6 Personal ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/cb6_upd4_pers.exe Readme ftp://ftpd.codegear.com/devsupport/cbuilder/cb6/japanese/readme_64.txt
- 307 名前:デフォルトの名無しさん [2009/01/22(木) 15:31:26 ]
- DIBをTBitmapに変換する方法を教えてくださいい
- 308 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:40:38 ]
- >>307
そのDIBが もし単なる配列なら ・TBitmap::ScanLineでアドレスを取得して、自分で一行ずつDIB→TBitmapへコピー ・StretchDIBits()を使ってDIB→TBitmapへ転送 もしDIBSectionみたいにHDCが利用できるなら ・BitBlt()やStretchBlt()でDIB→TBitmapへ転送 パレット付き画像だとちょっと手間が増える。
- 309 名前:デフォルトの名無しさん [2009/02/03(火) 19:52:26 ]
- TImageListのn番目の画像をTImageに表示する方法を教えてください
- 310 名前:デフォルトの名無しさん [2009/02/06(金) 15:52:23 ]
- C++Builder2007って64bitのXPに対応してる?
普通に動作はするんだけど64bitアプリ作れますか?
- 311 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:40:07 ]
- _
- 312 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 10:32:46 ]
- C++Builder2010をお待ちください> 64bit
- 313 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:14:31 ]
- 待っている間に Qt Creator で御機嫌 64bit 開発できるようになってたりして
- 314 名前:デフォルトの名無しさん [2009/02/09(月) 11:10:38 ]
- a
- 315 名前:デフォルトの名無しさん [2009/02/10(火) 12:55:23 ]
- ListViewの行入れ替えをしたくて以下の関数を作ったんですが
BCB5ではうまく行ってるのですがBCB1でやるとコンパイルエラーがでます void ListViewExchange( TListItems *tListItems, const int iIndex1, const int iIndex2 ) { TListItem *listitem = new TListItem( tListItems ); listitem->Assign( (TListItem *)tListItems->Item[iIndex1] ); tListItems->Item[iIndex1] = tListItems->Item[iIndex2]; tListItems->Item[iIndex2] = listitem; delete listitem; } エラー内容はAssignにアクセスできないって事なんですが BCB1で行入れ替えする時にいい方法があったら教えてください。
- 316 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 12:58:20 ]
- ヒント: TListViewの実態はWindozの標準コントロールで昔は無かった
- 317 名前:デフォルトの名無しさん [2009/02/10(火) 13:05:30 ]
- そんなヒントいらねえよカス
知らないならレスするなクズ
- 318 名前:デフォルトの名無しさん [2009/02/10(火) 20:04:02 ]
- マルチスレッドに対応した高速なJPEGデコーダのライブラリはありませんか?
- 319 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 00:39:57 ]
- いま、C++Builder5 から C++Builder2009 に移行中なんだけど、
どうしてもわからないところがある。 1.XP Style の見た目 プロジェクトを新規で立ち上げると、XP のスタイルになるんだけど、 古いプロジェクトを読み込むとどうしても出来ない。 TXPMan あたりなのかなぁ、と思うんだけど、良くわからん。 2.リンク時に VCLJPG.BPI がないというエラーがでる 普通にコンパイルするだけでこれが見つからないというエラーがでる。 検索をかけるとどうやら無くなったらしいけど、特に Jpeg を使っていない ようなプロジェクトでも発生する。 3.コンポーネントのインストール 以前作ったコンポーネントをインストールするやりかたがイマイチわからない。 3.はがんばれば解決出来そうだけど、1と2、特に2はちょっと解決できそうにない。 解決方法をご存じの方がいたら、ぜひ教えてください。
- 320 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:46:24 ]
- 1は解決しました。
プロジェクトオプション ↓ アプリケーション ↓ ランタイムテーマを有効にする ですね。 厨な感じでスマン・・・。
- 321 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:41:33 ]
- 319だけど、3.も一応解決した。コンポーネントはもう一回作り直す必要があるみたい。
コンポーネント自体はコードのみで動くからそんなに大変ではないけれど、面倒と言えば面倒。 イベントの引数などが変わってるから、殆どの場合、書き直す必要があるから仕方がないのかもしれない。 ただし、注意点があって、コンポーネントのインストール、削除、を繰り返してると、 レジストリにゴミが残る。これが残ってると、一般保護違反が起きてコンポーネントのインストールが出来なくなる。 その場合には、レジストリエディタでコンポーネントの名前で検索、その項目を削除してやる必要がある。 2はまだ試してないけど、プロジェクトでリンクしているライブラリをチェックし直してみようと思ってる。 こんどは、 [BCC32 エラー] systvar.h(198): E2316 'data' は 'WideString' のメンバではない [BCC32 エラー] systvar.h(327): E2316 'data' は 'WideString' のメンバではない というエラーが出るようになった。文字列周りはかなり変わってるから、バグが潜んでるのかも知れない。
- 322 名前:デフォルトの名無しさん [2009/02/17(火) 15:01:24 ]
- プログラム初心者です。
C++Builder2006でAPIを使ったアプリケーションを作っています。 信号入力待ちになるAPI関数を使うと信号入力があるまでアプリケーションが固まってしまい 終了のXも受け付けない状態になります。(信号入力があると動き出します) 固まらないようにプログラムを作るにはどうすれば良いのでしょう? お願いします。
- 323 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 15:05:50 ]
- 信号入力待ちとは何ぞや?
- 324 名前:デフォルトの名無しさん [2009/02/17(火) 15:06:25 ]
- WaitForSingleなんちゃらとか?
それかスレッド
- 325 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 15:07:39 ]
- ヒント: 正しいアイドルループ(Application->ProcessMessages()) もしくは 別スレッド
- 326 名前:デフォルトの名無しさん [2009/02/17(火) 15:40:12 ]
- >>325
いや関数から抜けてないんだろ。 それなのにProcessMessagesとか馬鹿ならレスするなよクズ
- 327 名前:322 [2009/02/17(火) 15:50:38 ]
- API関数はwinsockのaccept()です。
別スレッドでやってみます。 スレッドは使ったことがないので何かあったらまたお願いします。m(__)m
- 328 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 17:08:41 ]
- これじゃね?
>winsock2でaccept()を中断する >ttp://memolet.blog22.fc2.com/blog-category-41.html
- 329 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 11:22:07 ]
- >>Delスレ954
if (typeid(E) == typeid(EInOutError)) { }
- 330 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 11:27:46 ]
- ちなみに、この比較はDelphi形式のクラスでのみ有効。
(typeid自体はC++標準だけど、本来はキャスト元の型は取れない。C++BuilderのDelphiクラスサポート用の拡張機能に依存)
- 331 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 06:45:13 ]
- InheritsFromでいいんでない?
- 332 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 02:27:10 ]
- C++Builder6のTServerSocketを使ったことある方教えてください。
フォームに張り付けた一つのTServerSocketを非同期設定で 特定ポートにてオープンし、最大100クライアント接続される ハブ的なアプリケーションを作っています。 OnConnect毎にユニークなCustomWinSocketが落ちてきて、 それをTThreadのインスタンスへ渡し、受信はスレッドへのイベント通知、 送信はスレッドの任意タイミングという設計です。 ソケットとスレッドが1:1になるイメージで、1伝文最大100バイト、 高負荷時には600伝文/s程のやりとりなのですが、 マルチコア環境で動作させると高負荷時の受信ラッシュで コンポーネントがお亡くなりになる現象が発生してしまいます。 各コネクションが同時に送信すると、75/100のソケットが受信イベントを受け取りますが、 以降待てど暮らせどイベントが発生しない(OnErrorでさえ!)という状況です。 WireSharkで見ると全てのコネクションでデータのやり取りが完遂し、 サーバも受信数分ACKをキチンと返しているのですが、 何故か上に上がってこない… シングルコア上では今のところ起きていないので、 マルチコア特有の問題なのかな、と勘繰っております。 でもI/O周りは排他処理されていないわけないとも思えますし・・・ コンポーネントのマルチコア対応状況の情報があれば教えていただけませんでしょうか。 よろしくお願いします。
- 333 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 10:03:57 ]
- >>332
TCriticalSectionが必要なんじゃない?
- 334 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 09:14:14 ]
- >TCriticalSection
Crytical Section ってVCLラップされてたんだ。知らなかった。 まさかMutexはラップされてないおね?
- 335 名前:デフォルトの名無しさん [2009/03/02(月) 12:39:04 ]
- C++Builder2009でFindFirstの再帰処理でファイル一覧を取りたいんですけど
Debug::Heap Block at xxxx とか Invalid address xxxが出る。 何故だろう?(BCB5では問題なし) 誰か助けて....
- 336 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 12:41:38 ]
- アプリのヒープサイズかスタックサイズが小さく設定されてるとか?
- 337 名前:デフォルトの名無しさん [2009/03/02(月) 13:27:45 ]
- 設定はBCB5もBCB2009も同じなんです。
- 338 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 13:44:09 ]
- 同じにしたらVCLが肥大化した分、メモリ的に2009が不利じゃね?
- 339 名前:デフォルトの名無しさん [2009/03/02(月) 14:01:48 ]
- ヒープサイズやスタックサイズを大きく設定するという意味ですか?
- 340 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 14:13:44 ]
- 下にサブディレクトリのない末端のディレクトリ基点にFindFirstしてもエラー出る?
出ないならただのスタックオーバーフローじゃないかと。
- 341 名前:デフォルトの名無しさん [2009/03/02(月) 14:41:59 ]
- FindFirstの再帰処理で階層が深くなった時に出る次第です。
やはりスタックオーバーフローでしょうか
- 342 名前:デフォルトの名無しさん [2009/03/02(月) 14:47:37 ]
- 再帰つかうなよ
- 343 名前:デフォルトの名無しさん [2009/03/02(月) 14:54:26 ]
- 他にいい方法あんの?
- 344 名前:デフォルトの名無しさん [2009/03/02(月) 15:01:11 ]
- >再帰つかうなよ
どのように処理するとよいのでしょうか?
- 345 名前:デフォルトの名無しさん [2009/03/02(月) 15:16:07 ]
- >>342はいつもの煽るだけの無知なクズとみた
- 346 名前:デフォルトの名無しさん [2009/03/02(月) 15:23:35 ]
- フォルダ名をキューに入れて、findnext出来なくなったら
先頭を呼び出して奨める
- 347 名前:デフォルトの名無しさん [2009/03/02(月) 15:28:46 ]
- >>346
335じゃないけど意味がわからないからもうちょい詳しく教えて
- 348 名前:デフォルトの名無しさん [2009/03/02(月) 15:36:21 ]
- たとえばc:\aの仕方。
フォルダa1,a2,a3を見つけたら、 que[0][0]="a1"; que[0][1]="a2"; que[0][2]="a3"; と登録。 queの初めを呼び出して連結する。 c:\a\a1をサーチ。 フォルダb1,b2をque[1][0]="b1"; que[1][1]="b2"; と登録。 各階層ごとqueが無くなったら上へもどる。
- 349 名前:デフォルトの名無しさん [2009/03/02(月) 15:42:37 ]
- 御迷惑をお掛けしています、環境に問題があるのかもしれません。
BCB2009はVirtualPC上で動作させており、FindFirstしている場所は VirtualPC上のネットワークドライブです。 この時にDebug::Heap Block at xxxx とか Invalid address xxxが出ています。 ローカルのC:\\とかを指してやると正常に動作しています。
- 350 名前:デフォルトの名無しさん [2009/03/02(月) 15:52:29 ]
- 仮想PCの性能不足だろ
再帰使うなよ
- 351 名前:デフォルトの名無しさん [2009/03/02(月) 15:54:13 ]
- vipが今日でなくなる?vipperどもが運営に宣戦布告!!!!!
takeshima.2ch.net/test/read.cgi/news4vip/1235974776/
- 352 名前:デフォルトの名無しさん [2009/03/02(月) 15:55:32 ]
- >>仮想PCの性能不足だろ
無知でした、皆様ありがとうございます。
- 353 名前:デフォルトの名無しさん [2009/03/02(月) 15:58:27 ]
- >>348
335じゃないけど、ディレクトリをどんどんケツにくっつけてサーチしろってことかな? 俺もよく再帰使うからちょっと気になって横うんこしてしまったぜ
- 354 名前:デフォルトの名無しさん [2009/03/02(月) 16:00:54 ]
- 全ての再帰は、ループ処理で書き換えられる。 再帰定理とかいうのがある。
- 355 名前:デフォルトの名無しさん [2009/03/02(月) 16:05:31 ]
- >>354
だからなんだよクズ
- 356 名前:デフォルトの名無しさん [2009/03/02(月) 16:07:38 ]
- 再帰定理というのがあって、再帰とループは機能的に違いがないことが証明されているそうです。
つまり、原理的には再帰で書けるコードはループで書けるんだそうです。 Scheme(LISP系の関数型プログラミング言語)だと、繰り返しはループじゃなくて再帰を使うんだそうです。
- 357 名前:デフォルトの名無しさん [2009/03/02(月) 16:16:59 ]
- >>356
んじゃ>>350はなんなの?
- 358 名前:デフォルトの名無しさん [2009/03/02(月) 16:21:38 ]
- 違いはないから、メモリ管理をコンパイラに任せず自分でやれって事だ
再帰使うとスタックオバーフロが起こりうる
- 359 名前:デフォルトの名無しさん [2009/03/02(月) 16:25:48 ]
- スタック領域はコンパイル時に決定されてしまうだろ。
だから予定外のメモリ確保が出てくる再帰使うと停止する。 動的確保なら、OSがスワップとかしてなんとかできる。
- 360 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:02:32 ]
- つかどんだけ深い階層になってるんだ?リパースポイント(FILE_ATTRIBUTE_REPARSE_POINT)とか設定されてね?
- 361 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 22:46:44 ]
- >356
スタックの類使わなくても書けるの?
- 362 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 05:37:46 ]
- まだ初心者なのですが、batファイルをC++builder6で
ボタンを押したら実行するようにしたいので ShellExecute(Handle,"open",ファイル名.c_str,NULL,NULL,SW_SHOW); と書いたのですが、うまくいきません・・・どなたか教えてくださいOTL
- 363 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 07:55:49 ]
- ↑解決しました、スレ汚しすまそOTL
- 364 名前:333 mailto:sage [2009/03/03(火) 19:45:29 ]
- 遅レススマヌ
>>334 ヘルプでTMutexで調べるとあるみたいだぞ?
- 365 名前:334 mailto:sage [2009/03/04(水) 09:24:55 ]
- orz
そうなんだ。 知らないから、Win32APIベタでコールしちゃってるよ。
- 366 名前:332 mailto:sage [2009/03/05(木) 19:13:35 ]
- >333
ありがとうございます。 末端のソケットに対するアクセスには排他はかけていませんでした。 同時にアクセスできるのは1スレッドだけというシングルコアに絆された思い込みがありましたので・・・。 早速試してみます。 バージョンアップ検討中の名目でEmbarcaderoにマルチコア対応状況を ダメ元で確認してみたところ、かなり丁寧に教えてもらえました。 結論としてC++Builder6のTServerSocketとTClientSocketに関しては マルチコア環境での動作保障をしていないとのことです。 以降のバージョンでこれらのコンポーネントが無くなっていた時点で気付くべきでしたorz ちなみに現行バージョンではIndy系を推奨しているようです。 排他で解決できればとりあえず目的は達成されるのでここまでにしたいと思います。 ありがとうございました。
- 367 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 20:40:01 ]
- DLL内部の関数からDLLに組み込んだフォームやApplication->MessageBox()を呼ぶと、
通常の子ウィンドウと違ってウィンドウがタスクバーに表示されてしまいます。 DLLロード後にメインフォームのハンドルをDLLに渡してやることで どうやらうまく行くようなのですが、手法的にスッキリしません。 もっとスマートに行う方法はないものでしょうか。BCB6を使っています。
- 368 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 21:15:46 ]
- >DLLロード後にメインフォームのハンドルをDLLに渡してやることで
十分スマートじゃないか? つかそうするのが普通だろ?
- 369 名前:367 mailto:sage [2009/03/06(金) 22:25:48 ]
- >>368
やっぱりそうですか? ロードと同時にDllEntryPoint()でなんとかできないのかなーと思ったんですが。 とりあえず邪道ではないようで安心しました。ありがとうございました。
- 370 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 22:55:50 ]
- ウインドウハンドルを要求するAPI関数が
どこからリンクされているか考えれば問題ないとわかるはず…
- 371 名前:デフォルトの名無しさん [2009/03/13(金) 15:01:44 ]
- 2007でwsprintfやlstrcpyが未定義エラーになっちゃうんだけど
オプションのどこいじればいいですか? ちなみに、他のプロジェクトだとちゃんとコンパイル通ります。 なんか1つのプロジェクトだけこのエラーでるんです・・・
- 372 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 10:33:12 ]
- VistaでCB2007使い始めたんだがOpenDialogを開こうとしてもなぜか必ず失敗するorz
if(!OpenDialog1->Execute())return; ShowMessage(OpenDialog1->FileName); 何も間違ってないはずなのに!
- 373 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 14:28:51 ]
- まあどう考えても
バグだらけだろ。
- 374 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 08:51:47 ]
- >>327
OpenDialogが開くダイアログ位置おぼえてるっぽくて、 全然開かない現象がBCB6+xpであった。 Project1.bpr/Project1.exe の組み合わせで発生して、 同じプロジェクト名だと再発するんだが、 違うプロジェクト名にしたら現象消えた。 まだ原因を追っかけてはいない。
- 375 名前:デフォルトの名無しさん [2009/03/16(月) 10:39:42 ]
- 2009って64ビットに対応してる?
- 376 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:09:52 ]
- 対応している。
- 377 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:33:22 ]
- え”、ウソだろ?
そうなら、2009買って64bit調査開始しなきゃならんやん。
- 378 名前:デフォルトの名無しさん [2009/03/16(月) 12:01:30 ]
- >>376
嘘つけ!
- 379 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 12:28:43 ]
- 対応して犬
- 380 名前:デフォルトの名無しさん [2009/03/16(月) 13:19:47 ]
- 対応している言葉は間違えない
ただ、 64ビットのコードを吐くとは言っていない
- 381 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 13:24:34 ]
- 対応してぬこ
- 382 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 13:40:32 ]
- >>380みたいなクズってまだいたのね
- 383 名前:デフォルトの名無しさん [2009/03/16(月) 15:14:26 ]
- >>380
お前みたいなカスはレスするなよ
- 384 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:07:58 ]
- このスレはカスとクズとゲスで出来ています
- 385 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 22:42:12 ]
- 正直、BCB2009自体がカスなんだがな。
- 386 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 23:13:55 ]
- もう注文しちゃいましたよ>>385
というかCCBが正しいのかな? CODEGEAR C++ Builder2009
- 387 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:06:25 ]
- CordGuardが止まらない
- 388 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:16:31 ]
- それなんてロマンチック?
- 389 名前:デフォルトの名無しさん [2009/03/17(火) 10:16:48 ]
- スペル違うし
- 390 名前:デフォルトの名無しさん [2009/03/17(火) 19:46:26 ]
- くだすれの方で誰も答えてくれないのでマルチになりますが質問させて下さい
ウィキペディアに、 >C++ Builderの新しい版ではMFCやDirectXなどもサポートしている。 って書かれてるんですが、それって www.clootie.ru/cbuilder/ このページで公開されてるライブラリ使わなくても、正規のDirectXを使えるってことですか?
- 391 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:25:52 ]
- >>390
半分は。 DirectX9が入っているが、d3d9x.libなどが無い。 チュートリアルの1は何とか何もしないでいける程度。
- 392 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 03:25:27 ]
- >>391
それはサポートしているとは言えないんじゃ…
- 393 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:47:33 ]
- 2009のチラシが届いたんだが使い勝手はどんなもん?
未だBCB6の俺としてはそろそろOSも変わるかもしれんしバージョンアップ考えた方がいいかなと思ってるんだが
- 394 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 16:50:14 ]
- まだチラシが届きません(><;)
- 395 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 02:34:42 ]
- >>375
ttp://en.wikipedia.org/wiki/C++ Builder >A future version of CodeGear C++Builder (codenamed Commodore) will support x86-64 and create x86-64 Native code.
- 396 名前:デフォルトの名無しさん [2009/03/19(木) 17:22:06 ]
- コンパイルするとたまに作成するアプリのアイコンがデフォのアイコンになっちゃうんだけど
これ原因わかる人いる? ちなみに、他PCで同じプロジェクトを何度コンパイルしてもちゃんと指定したアイコンになってます。
- 397 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 17:24:06 ]
- ねーよw
- 398 名前:デフォルトの名無しさん [2009/03/19(木) 17:28:40 ]
- いや、お前達みたいな奴に聞いても無駄だってわかってはいるんですが
もしかしたら同じ症状の人がいたらラッキーかなっておもったんで
- 399 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 17:41:03 ]
- >>396
Builderのバージョンとかは果敢機会?
- 400 名前:デフォルトの名無しさん [2009/03/19(木) 18:18:30 ]
- >>399
あ、そういえばそうですよね。 まあ言っても無駄だとおもうけど。 C++Builder5 proですよ。
- 401 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 18:23:44 ]
- それって昔あったOSのバグだろ。
- 402 名前:デフォルトの名無しさん [2009/03/19(木) 19:07:22 ]
- OSの方ですか・・・
OSはXPSP2なんですがSP1をアップデートしてSP2にしたんですが これが途中でエラー出てあれなんだよばかなんですよね。 あ、そういやSP1のPCでやってもダメなのあったなあ 4台で試して2台が現象発生だこのやろう!!
- 403 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:09:39 ]
- C++Builder2009Proがきたぞ
インストールだ
- 404 名前:デフォルトの名無しさん [2009/03/19(木) 19:32:08 ]
- 2007と何処が違うのか教えてくれ
- 405 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 19:58:08 ]
- 2007がない
- 406 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 20:54:26 ]
- 強制的にユーザ登録ってなんだよ。
しかも登録先が英語・・・
- 407 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 21:16:23 ]
- 何故に最新のSP3にしないのだろう。
- 408 名前:デフォルトの名無しさん [2009/03/19(木) 23:41:02 ]
- C++Builder 6
ボタンとかタブのカラーは変えられないのですか?
- 409 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 00:00:31 ]
- BCBuilder5とC++Builder2009って同居させても問題ないよね?
- 410 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 00:12:19 ]
- 2009のクイックスタートガイドに
実行環境っていうのがあるんだけど 作ったアプリケーションが動作する環境っていう意味なの?
- 411 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 01:04:25 ]
- >>409
OK
- 412 名前:デフォルトの名無しさん [2009/03/20(金) 01:39:34 ]
- >>408
先に古い方からインスコ
- 413 名前:デフォルトの名無しさん [2009/03/20(金) 20:52:33 ]
- 別スレッドを動かしている時、スレッドが終了したかどうかを確認する方法を教えて下さい
お願いします。
- 414 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:06:00 ]
- TThread とかだったらHandleやThreadIDプロパティをチェックするとか
- 415 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:33:27 ]
- 処理が終了したのか、スレッド自体が終了して消え去ったのかでだいぶ違うけど
後者なのかな。
- 416 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:56:41 ]
- >>396
遅レスだが、会社で組んだソフトがその現象になって困ったことがあったよ。 確か、プロジェクトファイル(.bprファイル)をテキストエディタで開いて、 <LIBRARIES value=だか<SPARELIBS value=の最初のlib を最後に移動して保存して、BCB5で開いてリコンパイルしたら直ったと思うよ。
- 417 名前:デフォルトの名無しさん [2009/03/20(金) 23:03:41 ]
- page4.auctions.yahoo.co.jp/jp/auction/d91264064
- 418 名前:413 [2009/03/21(土) 11:28:05 ]
- 初心者なもので
>>414 HandleやThreadIDプロパティってどのように記述するのですか? >>415 後者です
- 419 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:13:18 ]
- WaitForSingleObjectでTThread.Handleを待機。
- 420 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:55:06 ]
- >>418
TThread *Thread として(実際はTThreadの派生系) 方法は2種類あると思う。 1)待機関数、Handleを使う if(WaitForSingleObject((HANDLE)Thread->Handle,0)==WAIT_TIMEOUT) { /* スレッドは実行中 */} else { /* スレッドは終了している */} 2)OnTerminate イベントを使う void __fastcall ThreadTerminated(TObject*){ /* スレッド終了時に処理をさせる。処理はメインスレッド内で実行される。*/} Thread->OnTerminate=ThreadTerminated;
- 421 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 15:43:47 ]
- >>413
TThread.Finished プロパティを調べる。trueなら終了。
- 422 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 18:52:50 ]
- ちょっと質問。
C++Builder2009Pro。 アプリケーション作成時のデフォルトアイコンあるでしょ。 あれって変えられない? デフォルトがヘッドギアってダサすぎです
- 423 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 20:23:44 ]
- C++Builder6だとプロジェクトのオプションとかで変えられたけど
2009は持ってない。
- 424 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:27:37 ]
- C++Builder2009でもプロジェクトオプションで変更できる
- 425 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:49:45 ]
- あーえっと。
新規プロジェクト→アイコン変える のようにプロジェクトの作成のたびにアイコンを変えるのがめんどくさい。 アイコンを変えておく→新規プロジェクトうんぬん。 プロジェクトが作成されるたびにデフォルトで指定したアイコンになっていてほしい。
- 426 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:52:03 ]
- _
- 427 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 21:59:58 ]
- アイコンファイル自体を置換してしまえ
- 428 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 22:05:04 ]
- そそうか
デフォルトのオプション設定でアプリケーションの項目がないからあきらめてた あまりにもダサいから必ず変えるように仕向けたいのか 残念だ ありがとう 置換?できるのか?
- 429 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:16:41 ]
- どこかにアイコンのリソースはある筈だからそれを変えられればいいだよな
- 430 名前:デフォルトの名無しさん [2009/03/24(火) 20:46:21 ]
- どこか知らないならレスするなよクズ
- 431 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 20:48:03 ]
- ヘタな釣りw
- 432 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 21:00:09 ]
- ちょっと探してみたけど.resや.icoの形ではないみたいだなあ
どこに組み込まれてるんだろ まあ、そもそもそんな必要があるとは思えないけどね
- 433 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:22:18 ]
- DLLじゃね
- 434 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:35:27 ]
- そんな必死になることなのか
- 435 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 22:47:56 ]
- アイコンなんてクリック数回で変えられるじゃん。
だいたい、作るプログラムは全部デフォルトのままかよ。
- 436 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 23:11:22 ]
- 別にいいじゃん
ネタとして話をしても
- 437 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 00:07:54 ]
- 自分だけで使うものとかさ、アイコンを変更するまでもないんだけどあのアイコンはいやだから毎回変えているんだ。
WindowsフォルダのTASKMAN.EXEみたいなアイコンにしている。
- 438 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 14:15:53 ]
- グローバル変数の評価式だけ???やデタラメな数字になってしまうたすけてください
- 439 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 14:19:47 ]
- グローバル変数はなくすべきだろ、常考。
- 440 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 14:23:49 ]
- 最適化が有効になってるんじゃねえのか。
- 441 名前:デフォルトの名無しさん [2009/03/25(水) 15:42:08 ]
- もっかいBuild allしてみ
- 442 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 17:10:11 ]
- 1行エディットして改行したただけで
それ以降のブレークポイントがみんなズレるんだけど なんかいい方法ないかな
|

|