- 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/
- 20 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:11:16 ]
- 無理じゃね?
- 21 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 08:52:11 ]
- >>19
意味が良くわからん。 実行ファイルのショートカットを作って、 その実行ファイルを別のところに移動するの? 移動するのはショートカットの方? ショートカットを移動してそのショートカットをダブルクリックして実行したときに、 その呼び出し元のショートカットのパスを知りたいって事か?
- 22 名前:デフォルトの名無しさん [2008/08/14(木) 11:32:11 ]
- 初歩的なことですが・・・
ヘッダーに typedef struct{ String ss; int aa; } GG; があって ヘッダのprivateに実体をとったときに GG g[2]; cppで↓みたいな感じで代入ってできないですかね? g[0]=GG{ "abc", 0 };
- 23 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 11:35:07 ]
- struct GG{
GG(String a, int b) : ss(a), aa(b) {} String ss; int aa; }; g[0] = GG("abc", 0);
- 24 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 11:36:00 ]
- あとコピーコンストラクタと代入演算子のオーバーロードもしておくといいお
- 25 名前:デフォルトの名無しさん [2008/08/14(木) 11:51:23 ]
- >>23
GG(String a, int b) : ss(a), aa(b) {}の行でエラーが出ました><
- 26 名前:デフォルトの名無しさん [2008/08/14(木) 12:01:19 ]
- あ、違った。
struct GG{ GG(String a, int b) : ss(a), aa(b) {} String ss; int aa; }; GG g[2]; ←ここでエラー g[0] = GG("abc", 0);
- 27 名前:デフォルトの名無しさん [2008/08/14(木) 12:07:18 ]
- あ、デフォルトコンストラクタ入れたら通りましたありがとうございます。
- 28 名前:デフォルトの名無しさん [2008/08/14(木) 13:59:53 ]
- String ss;
を char ss[24]; ってしたときのコンストラクタの記述を教えてください><
- 29 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:48:59 ]
- コンストラクタ内でstrcpyでもしとけ
- 30 名前:デフォルトの名無しさん [2008/08/14(木) 14:49:34 ]
- わかりました><
- 31 名前:デフォルトの名無しさん [2008/08/14(木) 21:09:44 ]
- >>19です。
>>20,21 返信ありがとうございます。 > ショートカットを移動してそのショートカットをダブルクリックして実行したときに、 > その呼び出し元のショートカットのパスを知りたいって事か? そうです。
- 32 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 21:14:56 ]
- >>31
それを知ってなにをしたいのか書けば代案とか出せるんだが。 コマンドラインスイッチやカレントディレクトリで代用とかはできんの?
- 33 名前:デフォルトの名無しさん [2008/08/16(土) 14:06:49 ]
- >>32
返信ありがとうございます。 参考にさせて頂き、コマンドラインパラメータで代用しました。 作ったソフト(RandExec.exe)は以下のような物です。 例えば、「RandExec.exe C:\Data\!*.wav」として実行すると、 「C:\Data\」ディレクトリにある、拡張子「wav」のファイルのうち、 先頭に「!」が付いている名前のファイルをランダムで1つ実行します。 FindFirst()のお陰でワイルドカード文字が使えるのですが、 残念ながら、「RandExec.exe C:\*\start.wav」のように、 パスの途中にはワイルドカード文字を使えないようです。 これを実現したいのですが、どういう手段が考えられるでしょうか。 適したコンポーネントはご存じないでしょうか。
- 34 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 14:28:08 ]
- >>33
普通に実装したら? まず、ワイルドカード (* ?) を探して、その手前の \ を探す、 ワイルドカードの次の \ を探す、\ で挟まれてればそれはフォルダのワイルドカード、 最初の \ の手前までのフォルダで FindFirst して上のワイルドカードと一致するか検索、 ってやれば簡単にできそう。
- 35 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 16:22:51 ]
- 入力が"C:\Data\sound*\snd*.wav"なら
strtokとかでC: Data sound snd* snd*.wavに分割 先頭から次の要素接続>FindFirst/FindNextで複数マッチした場合はその中からランダムに選択、でまた次の要素接続ってやってけば簡単だろ
- 36 名前:デフォルトの名無しさん [2008/08/20(水) 14:06:58 ]
- 今度Vista対応を行わないといけなくなったのですが
マニフェスト記述例やデータ保存箇所のルールなどBCBやDelphiで 作成したプログラムに対しても参考になるような情報が書いてある 書籍って何か無いでしょうか?(CマガのMookは買いました)
- 37 名前:デフォルトの名無しさん [2008/08/21(木) 22:03:33 ]
- Delphi 2007 for Win32によるWindows Vista対応
ttp://dn.codegear.com/jp/article/34159 tp://bekins.borland.com/groups/jp/events/devcamp/04/devcamp04_g4.pdf
- 38 名前:36 [2008/08/22(金) 15:17:18 ]
- >37
参考になりました これを足がかりに少し進めてみます
- 39 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:26:46 ]
- WinXP SP3だけど、
exeにマウス右クリックすると、 「マニフェスト ファイルを作成」 というポップアップメニューが出るお。
- 40 名前:デフォルトの名無しさん [2008/08/22(金) 17:10:39 ]
- >39
社内でSP3を入れたXPを探してきて見てみたけど・・・・出なかった。 何が要因でそれが表示されるようになるんだろう。
- 41 名前:39 mailto:sage [2008/08/22(金) 17:17:31 ]
- え”、そうなの?
自分も知りたい。
- 42 名前:デフォルトの名無しさん [2008/08/25(月) 12:51:45 ]
- >39
VisualStudio入ってない?
- 43 名前:39 mailto:sage [2008/08/25(月) 12:56:35 ]
- V$6なので、関係無いと思いますが。
- 44 名前:デフォルトの名無しさん [2008/08/26(火) 19:37:23 ]
- ところでCodeGearの次スレってたたないの?
せっかく2009が発売されるのに・・・
- 45 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 19:53:04 ]
- 【Embarcadero】CodeGearオッチャ その11
pc11.2ch.net/test/read.cgi/tech/1219157228/
- 46 名前:デフォルトの名無しさん [2008/08/27(水) 10:04:48 ]
- thx
値段たっかいなー ご祝儀にしてもこれはちょっと辛いわ
- 47 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 12:31:05 ]
- BCB5+vistaを使っています。
CodeGuardを使いたいのですが、大量にログが出てしまいました。 見てみるとどうもライブラリ内のAnsiString::cat_printfらしく、とりあえず ライブラリ内と標準ライブラリのチェックだけはずしたいのですが 方法はないでしょうか? ※include の前に #pragma option -vG- を入れても引っかかって しまいました。
- 48 名前:デフォルトの名無しさん [2008/08/27(水) 17:15:53 ]
- BCB6で、
>メモリストリームの拡大中にメモリが足りなくなりました エラーが出た場合、 どういう対処がありますでしょうか?
- 49 名前:デフォルトの名無しさん [2008/08/27(水) 22:29:08 ]
- >>48
その不具合に直接の関係があるかどうかは判らないけど、BCB6ではメモリ管理周りに不具合が残されたままなので ひとまずfastmmをプロジェクトに追加してみたらどう?
- 50 名前:48 mailto:sage [2008/08/28(木) 08:42:56 ]
- サンクス>>49
fastmmをプロジェクトに追加したら治りマスタ。 今のfastmmってDLLも不要になってるんですね。 自分がfastmmが嫌いなのは、プロジェクトに組み込まれたか組み込まれてないか、見た目で分からないんですよね。 判定する方法はないんでしょうか?
- 51 名前:デフォルトの名無しさん [2008/08/28(木) 17:21:40 ]
- Builder2007で質問ですが
Form1からForm2を表示させたら何故かForm2がfsStayOnTopみたいになって Form2が常にトップで表示されるんですが何故ですか? 両方ともFormStyleはfsNormalです。
- 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()); }
- 153 名前:デフォルトの名無しさん [2008/10/23(木) 16:01:04 ]
- 》150》151》152 ありがとうございました!おかげさまでなんとかつくり終えることができました
- 154 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:03:10 ]
- そういう安価のつけかたもあんか
いや、あるんか
- 155 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:14:07 ]
- >>153, >>154
さすがにコンパイルエラーになったけど, 150 >> 151 >> 152; ならコンパイル通ったw
- 156 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:18:52 ]
- そう言えばC++Builderの<<、>>演算子のキモい使い方があったような
何に使うんだっけ? 確かビットを立てたり外したりするのに使った記憶が
- 157 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:27:23 ]
- 集合型のエミュレーションだね
Set型
- 158 名前:155 mailto:sage [2008/10/23(木) 16:29:41 ]
- >>156
ヲイヲイ,<< と >> はCの時代からビットシフト演算子だよ。C++になってから >> cout とか別の使い方で 定義されるようになった。>>155だってビットシフトの意味があるからコンパイルが通るだと思う。 150数ビットもシフトしてどうすんの?...なんだけどw
- 159 名前:155 mailto:sage [2008/10/23(木) 16:30:30 ]
- あぁ,スマソ。そっちの話か。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:34:11 ]
- >>157
ああ、それだ。滅多に使わないから忘れかけてた。 Delphiならスマートに書けるのだがC++Builderならムリヤリ感が。 >>158 まあそういう事だ。
- 161 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:44:00 ]
- >>160
普段はオブジェクトインスペクタからいじっちゃうからね コードでいじる場合はどうしてもヘルプ頼りに
- 162 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:52:42 ]
- そういやオープン配列もだいぶ無茶してたよなあ
TVarRecとか カッコを二重に書かなければならないのを時々忘れる
- 163 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:54:48 ]
- オープン配列は大抵Formatに使うことが多いから、Format使わずにAnsiString::sprintf()でやってるな
- 164 名前:デフォルトの名無しさん [2008/10/29(水) 11:22:19 ]
- すみません教えてください。。。
C++BuilderでVBスクリプト?を使ってSNMPで値の送受信を行いたいのですが VBのソースは以下の通りです Dim objSNMP Set objSNMP = CreateObject("OlePrn.OleSNMP") objSNMP.Open "192.168.0.40", "public", 2, 1000 Dim myObjectValue ObjectValue = objSNMP.Get(".1.3.6.1.2.1.1.4.0") WScript.Echo ObjectValue objSNMP.Set ".1.3.6.1.2.1.1.4.0", CStr("e-mail:xxx@xxx.xxx tel:xxx-xxxx-xxxx") Dim myChangedObjectValue myChangedObjectValue = objSNMP.Get(".1.3.6.1.2.1.1.4.0") objSNMP.Close() これをC++Builderではどのような記述になるのでしょうか? CreateObjectはたぶんこんな感じになると思うのですが この続きの記述を教えてください。。 Variant cn = Variant::CreateObject("OlePrn.OleSNMP");
- 165 名前:デフォルトの名無しさん [2008/10/30(木) 16:49:46 ]
- ブタ共さっさと教えてください
- 166 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 16:53:58 ]
- Indyでやるだろ、jk。
- 167 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 16:58:20 ]
- 最近の子はマニュアル読んでとりあえずできるかテストしてみようって事しないんだな
- 168 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 17:02:53 ]
- Indyならフォームにペタっと貼るだけ。
- 169 名前:デフォルトの名無しさん [2008/10/30(木) 18:41:08 ]
- 知らないならレスしないで下さいよ。ウザくてかなわん
- 170 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 19:02:18 ]
- その程度ができないのになんでプログラムなんて書いてるの?バカなの?
- 171 名前:デフォルトの名無しさん [2008/10/31(金) 15:32:06 ]
- アイコン化されたフォームを元に戻す方法を教えてブタ共よ
- 172 名前:デフォルトの名無しさん [2008/10/31(金) 15:37:40 ]
- Application->Restoreでできたわ
ほんとお前らって何の役にも立たないブタだよな・・・
- 173 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 16:27:08 ]
- 役に立たないブタはageます
- 174 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 00:31:47 ]
- 自力でできたということは、自力でやらせようとした人間達の狙いは大成功したということで、
役に立たないどころかすべてが計算通りに進んだということですw
- 175 名前:デフォルトの名無しさん [2008/11/03(月) 20:06:59 ]
- csv方式で
656,000,1123,5454 756,000,5454,3455 545,001,6565,4554 6565 545,002,5455,7775 → 5455 223,006,5656,9898 5656 054,004,5554,5554 5554 ・ ・ ・ ・ ・ ・ 843,022,6643,4443 6643 565,011,3434,4455 3434 656,000,3343,2432 789,000,5545,6665 こんな感じで配列が並んでいるのですが各数列の2番目数字が000以外のときに 3番目の数字だけを配列として順にMemo1にだしたいのですがどのようにすればよいでしょうか
- 176 名前:デフォルトの名無しさん [2008/11/03(月) 20:10:04 ]
- ずれていたので再投稿します
csv方式で 656,000,1123,5454 756,000,5454,3455 545,001,6565,4554 6565 545,002,5455,7775 → 5455 223,006,5656,9898 5656 054,004,5554,5554 5554 ・ ・ ・ ・ ・ ・ 843,022,6643,4443 6643 565,011,3434,4455 3434 656,000,3343,2432 789,000,5545,6665 こんな感じで配列が並んでいるのですが各数列の2番目数字が000以外のときに 3番目の数字だけを配列として順にMemo1にだしたいのですがどのようにすればよいでしょうか
- 177 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:28:15 ]
- void __fastcall TForm1::Button1Click(TObject *Sender)
{ std::ifstream ifs("File1.txt"); std::string str; AnsiString as; if (ifs) { TStringList* Data = new TStringList; Data->Delimiter = ','; while (std::getline(ifs, str)) { Data->DelimitedText = str.c_str(); if (Data->Strings[2] != "000") Memo1->Lines->Add(Data->Strings[3]); } delete Data; }
- 178 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:30:24 ]
- ごめんこっちで
void __fastcall TForm1::Button1Click(TObject *Sender) { std::ifstream ifs("File1.txt"); std::string str; AnsiString as; if (ifs) { TStringList* Data = new TStringList; Data->Delimiter = ','; while (std::getline(ifs, str)) { Data->DelimitedText = str.c_str(); if (Data->Strings[1] != "000") Memo1->Lines->Add(Data->Strings[2]); } delete Data; } }
- 179 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:44:28 ]
- AnsiString as;使ってなくね
いらないけどさ
- 180 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:46:46 ]
- >>179
ごめんそうです 削ってくらはい
- 181 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:56:09 ]
- >>177>>178
ありがとうございます! csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか また先ほどの文で DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが 何か宣言文などが必要なのでしょうか。 まだまだ初心者でして;いろいろご迷惑かけてすいません。
- 182 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:17:26 ]
- >>181
>csv形式のテキストはオープンダイアログから読み込みその中から抽出することはできるのでしょうか できます。 TOpenDialog->Filesに入ります。 >DelimiterとDelimitedTextはTStringListのメンバーではないと言われるのですが >何か宣言文などが必要なのでしょうか。 えっもしかしてC++Builderのバージョンは5以前ですか?
- 183 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:14:27 ]
- しばらく待ってみましたが返事がないのでDelimiterを使わないバージョンを
書いてみました。 コンマの数や桁数などは決め打ちになってますので必要ならば適宜変更して ください。 void __fastcall TForm1::Button2Click(TObject *Sender) { OpenDialog1->Execute(); std::ifstream ifs(OpenDialog1->FileName.c_str()); std::string str; if (ifs) while (std::getline(ifs, str)) { std::string::size_type pos = str.find(',') + 1; if (str.substr(pos, 3) != "000") { pos = str.find(',', pos) + 1; Memo1->Lines->Add(str.substr(pos, 4).c_str()); } } }
- 184 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 19:29:47 ]
- >>183
返事が遅れてすいません。ありがとうございました!大変感謝しています こちらのやり方で動きました。c++builderはver5を使っています あと桁数をコンマの数をかえるとのことなのですが、 桁数を変える場合は5桁表示するならpos 5 にすればよいことはいじっていてわかったのですが コンマの位置を変える場合どの部分を変えていけばよいのでしょうか・・・ よろしければアドバイスお願いします>< 実際の応用テキストではさらに数字が多く6番目数字(コンマ5つ目)が00:00:00(桁数は変化しない)以外の時に 11番目(コンマ10個目)の数字を表示するようにしたいのです。実際に表示したい数字も小数点を含む5.55(桁数は変化しない)などです。
- 185 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 20:07:38 ]
- >>184
かなり汚いですが一応動くので載せておきます。 コンマの位置を変えるにはfor文の数字をいじればいいですが、 できればコンマn番目から次のコンマもしくは行末までの文字列を 取り出す関数を別に作ってそれを呼び出した方が綺麗に書けると 思います。 void __fastcall TForm1::Button4Click(TObject *Sender) { OpenDialog1->Execute(); std::ifstream ifs(OpenDialog1->FileName.c_str()); std::string str; if (ifs) while (std::getline(ifs, str)) { std::string::size_type pos = 0; for (int i = 0; i < 5; i++) { if((pos = str.find(',', pos)) == std::string::npos) goto next; pos++; } 次に続く
- 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行エディットして改行したただけで
それ以降のブレークポイントがみんなズレるんだけど なんかいい方法ないかな
|

|