1 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:39:51 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 C++Builder使いが優しくコメントを返しますが、 お礼はC++Builderの布教と初心者の救済をお願いします。 Borland Home Page www.borland.co.jp/ <過去スレ> くだすれC++Builder(超初心者用) pc8.2ch.net/test/read.cgi/tech/1117225464/l50 くだすれC++Builder(超初心者用)その2 pc10.2ch.net/test/read.cgi/tech/1144308804/l50 <兄弟スレ> くだすれDelphi(超初心者用)その39 pc10.2ch.net/test/read.cgi/tech/1169386914/l50
2 名前:デフォルトの名無しさん mailto:sage [2007/02/12(月) 03:40:19 ] <関連スレ> 【Turbo】Borland Developer Studio 2006 No.11 pc10.2ch.net/test/read.cgi/tech/1167186538/l50 C++Builder相談室 Part17 pc10.2ch.net/test/read.cgi/tech/1162918887/l50 【Delphi】 Indyコンポーネント 【C++Builder】 pc8.2ch.net/test/read.cgi/tech/1093654251/l50 タダで使えるBorland C++ Part5 pc10.2ch.net/test/read.cgi/tech/1135127048/l50 Boostを語れゴラァ part3 pc10.2ch.net/test/read.cgi/tech/1158991211/l50 スレを勃てるまでもないC/C++の質問はここで pc10.2ch.net/test/read.cgi/tech/1167476845/l50 【C++】STL(Standard Template Library)相談室 6 pc10.2ch.net/test/read.cgi/tech/1160821240/l50
3 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 11:53:41 ] 実行ファイル名ってプロジェクトの名前以外に変更できますか?
4 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 02:11:15 ] 去年までDelphiユーザだった。 DelphiではusesにMathとか追加していくけど、BCBではどこに(#include <Math.hpp> を)書けばいいですか。 .h に書くのか、.cppに書くのか。.cppなら、#pragma hdrstopの前か後に書くのか、定石を教えてください。
5 名前:デフォルトの名無しさん [2007/02/26(月) 13:25:58 ] age
6 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 15:27:44 ] >>3 ヒント:エクスプローラー、名前の変更
7 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 07:12:16 ] OutputDebugStringで、イベントログを 見る方法は検索できましたが、 GUIアプリで作ったとき、printfの標準出力を 見ることは、できないのでしょうか?
8 名前:デフォルトの名無しさん [2007/02/28(水) 17:05:31 ] C99には対応していますか?
9 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:51:47 ] 済みません、 フォーム上で画像ビュアの様なカタログ?形式のを 作ろうと思っているのですが TImage等をプログラム上で 自分で作って並べていく事は出来るのでしょうか? 宜しくお願いいたしますm(__)m
10 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:55:57 ] TImage *Image = new TImage(this); Image->Parent = Panel1; //パネルの上に置く
11 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:07:15 ] 有り難う御座います やってみますm(__)m
12 名前:デフォルトの名無しさん [2007/03/04(日) 22:42:03 ] かんたんプログラミングC++Builder」という本に載っているカードゲーム のコードを本に倣って一から打ち込んでるんですが、メインフォームでカ ードの表示位置とかを決めるところまでは終って、次に敵というか、コン ピュータ側のクラスを定義する為にユニットを新規作成してそこに敵のク ラスを定義することになってるので、hファイルにデータメンバーを定義 とメソッドの宣言をして、最後にメソッドの定義をcppのほうに書いたんだ けど、実行しても該当するメソッドが未解決というエラーがでて実行でき ないんですが、どうすれば良いのでしょうか? いろいろ試したけど、敵のクラスを定義したユニットのcppのほうは一切チ ェックされてないのでメソッドの定義書こうが何書こうが一切関係ない状 態になってます。
13 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 02:13:26 ] >>12 *.cppがプロジェクトに登録されていない メソッドを呼出すソースファイルで*.hをインクルードしていない この二つを確認 遠い昔にその本で勉強したことがある たしか誤植が数箇所あった そのままだと動かないソースファイルが1つあったはず >>12 氏が引っかかってるのがそこかどうかはわからないが
14 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 13:12:00 ] CreateProcessで、コマンド実行すると、Dos窓が一瞬表示されるんですが、 表示されない方法ってないでしょうか?
15 名前:12 mailto:sage [2007/03/05(月) 19:25:41 ] >>13 ご指摘のとおり、cppがプロジェクトに登録されていませんでした。 あと、やはりこの本は誤植が多くて、今回の部分で云えば件のcppで 定義したメソッドの為にあるヘッダーファイルが必要なのですが、そ の記述が抜け落ちてました。(一応、C++の入門書一冊読んでたので それはすぐにわかりましたが。) 的確なご指摘、ありがとうございました。
16 名前:デフォルトの名無しさん [2007/03/06(火) 19:10:51 ] OpenMPは使えますか?
17 名前:デフォルトの名無しさん [2007/03/10(土) 20:25:47 ] ほんとに初歩的な質問で申し訳ないのですが、C++builderXを使用していて、 printfを使用した次の行にscanfを書いたのですが、コンパイルして実行すると、なぜか最初に入力を求めて、入力した後でprintfの文字列が表示されてしまいます。 説明が下手ですみません。ソースと実行結果を書きます 1 #include <stdio.h> 2 3 main(){ 4 int a; 5 printf("先に表示したい\n"); //プログラムを実行したら普通は最初に表示され、次に入力待ちになるはず 6 scanf("%d", &a); 7 printf("入力した値は%d",a); 8 return 0; 9} ▼実行結果 1 (最初に入力待ちになる。仮に1と入力) 先に表示したい 入力した値は1 と、なぜか6行目のscanfが最初に実行され、入力した後で5行目の文字列が表示されてしまいます。どうすれば5行目のprintf関数が最初に実行されるのでしょうか? また何が原因でscanfが最初に実行されるのでしょうか?稚拙な文章ですみませんが回答よろしくお願いします。
18 名前:デフォルトの名無しさん [2007/03/10(土) 22:45:33 ] >>7 AllocConsole()で検索 俺は開発環境の入ってない環境でのテストに良く使うな。
19 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:49:36 ] >>17 setvbufとか fflushとか
20 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 11:17:45 ] 済みません 2006Turbo C++で表示で開いた ツールパレットなどを現在位置で覚えておけないでしょうか? 再度立ち上げると前に出した物が消えて 初期状態に戻ってしまいます........orz
21 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 11:42:53 ] cppやhのファイルを自分でつくって それを他のcppから参照?呼び出しさせるような簡単なサンプルや 解説をしているhpは無いでしょうか? 宜しくお願いいたします
22 名前:デフォルトの名無しさん [2007/03/27(火) 11:17:35 ] 質問です 先日BCB6からBDS2006に乗り換えようと、よく判らずも、色々といじっていたのですが、 doubleをintへキャストする部分があるのですが、そこで 例外クラス EInvalidOp 不正な浮動小数点数演算命令の例外を発生するようになりました。 BCB6のときにはそのようなことはなかったのですが・・・ double d = 1e+300; int a = (int)d; //ここで発生 1e+300というのはお恥ずかしながら無謀な数字ですが、とりあえずBCB6ではa=0という結果で問題なかったもので・・・ こういうものということで、あらかじめ条件わけをしてあげる必要があるということでしょうか? Xp pro + BDS2006 proです。
23 名前:22 [2007/03/28(水) 22:28:55 ] まだハマッています;; VCで同じようなことをして見ましたが、VCでは例外のエラーは発生せず、 結果として上記のソースで言えばa=0が返ってきました。 で、やっている事はよろしくない事なんだろうと思って、少し勉強をして、例外を捉えたら無視してやろうという考えで try catchというのを使ってみることにしました。 double d; int a; d=1e+300; try { a=(int)d; } catch (Exception &e) { Memo1->Lines->Add("例外発生"+e.Message); a=0;} こんな感じで・・・でも動作が変なんです。BDS2006でコンパイルした方だけ。 ボタンを押すごとに上記を呼び出します。 1回目はエラー発生せず(注) 2回目エラー⇒catchで捕る。あと1回目から繰り返し (注)ここでマウスカーソルをタイトルバー上へ持ってくるとcatchで捕まらないエラー発生、ダイアログが現れます。 比較として0で割った場合の例外の実験もして見ましたが、こちらは毎回catchで捕まるみたいです。いったい何が問題なのでしょう? BCB6とBDS2006の実行ファイルとソースをアップします。よろしくお願いします。 ttp://puka-world.com/php/upload/large/img-box/1175087636206.zip
24 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 10:40:58 ] どっかで浮動小数点例外をつけたり外したりしてるんだろう Set8087CW(0x133f); のようにすれば浮動小数点演算からの例外は出なくなるよ
25 名前:23 [2007/03/29(木) 11:22:50 ] おおっ!早速有難うございます。とりあえず例外の発生はなくなりました。 BCB6の出方とはちょっと違うみたいですけど、それはおいといてとりあえず 進めてみます。ぐぐって見ると計算精度に関係しそうなのでちょっと心配。 その辺はぱっと見なのでまた調べてみます。 ちなみに1e+300とかそんな結果を無理矢理intにキャストするなんてのが そもそも間違えだということでいいんですかね? ・・・にしては挙動がおかしいので・・ちょっと気になりました。
26 名前:デフォルトの名無しさん [2007/03/29(木) 11:41:39 ] >>25 a = static_cast <int> (d); でいいと思うんだけど・・・どーなんでしょ
27 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 11:51:54 ] 1e+300は当然整数には入らないので例外が設定されてたら例外が出るというだけでしょ 除算とは独立に 例外を出す出さないを設定出来るから
28 名前:23 mailto:sage [2007/03/29(木) 13:16:12 ] >>26 やってみましたが、>>23 と同じ結果でした。 >>27 >例外が設定されてたら例外が出るというだけでしょ それが挙動不審で、例外キャッチできなかったりするので、どうなのかなと思ったのです。 あと、発生するのがBDS2006だけなので・・・ >除算とは独立に 例外を出す出さないを設定出来るから 設定とは何処にあるのでしょう?なんだかいっぱい設定があって・・・ Set8087CW(0x133f)では除算の例外もマスク?されてしまうみたいなので 出来ればそちらで対処できるならそうしたいです。
29 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 13:32:50 ] CWを読み出してみればいいじゃない var CWtemp:WORD; function Get8087CW: WORD; asm FSTCW CWtemp; mov AX,CWtemp; end; どのビットが何なのかは、intelのマニュアル読めば判るんだし
30 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 05:11:46 ] BCB6勉強してます。 表示->デバックのCPU、FPUっていうウィンドウ の見方がわかると、エラーの発見はやくなりますか? コンパイルして、エラーが出てきたとき、 たまにエラー出ますが、そもそも何のために表示されるのでしょうか。 どんなキーワードで、ググればいいのかもわかりません。 よろしくお願いします。
31 名前:23 mailto:sage [2007/03/30(金) 10:24:00 ] その後、BCB6とBDS2006でFPUのコントロールワードをみながら追いかけてみたところ、 BCB6では計算の前後で0x1273に設定しているのに対してBDS2006では前後で0x1372に なっていました。そこで、Set8087CW(0x1273)を最初に追加してBDSで実行したところ、 BCB6と同じ動作になったように見えました・・・・・・が、 他の浮動小数点エラーを起こすと何らかの拍子で戻ったりしてしまいます。 ちょっと待つとまた意図した動作に戻るんですけどね。 浮動小数点関連が呼ばれるたびにFPU_CWを読み書きしているみたいなので その辺で引きずられてエラーが出てしまうのか? いずれにせよ、意図している動作に近づいてきた感じです。 ところで質問ですが、この現象っておいらだけでしょうか? 大分はまったので別の環境で試してみたのですが、こちらも同じでした。 結論としてはそういう使い方しちゃダメよってことなんでしょうけど;; 例外処理で補足出来ないとかって、よくあることなんでしょうか? そもそも例外処理なんかイリーガルな使い方ということなのかなぁ・・・ 何万本?も出ているソフトということを考えるとおいらの考えがおかしいんだろうな。 ・・きっと。うん、そうだ。 ちょっとしたコントローラだけにしか使わないおいらにとってはハードルが 高そうです。
32 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 15:36:51 ] ちょっと説明しにくいのですが TForm *a[10]; a[0] = new TForm(this);〜9まで の様な感じで制御するフォームを作ったのですが 一つの(たとえばa[0])内部処理で数値を代入すると他の フォームまで同じ数値が入ってしまいます これを干渉しないようにするにはどうしたら良いのでしょうか? 一つのフォームを雛形にして 同じ形式の独立したフォームを幾つも作りたいのですが 宜しくお願いいたしますm(__)m
33 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 15:38:50 ] 訂正です TFormだとややこしいですね TOrgFormは自分でフォームを追加した物です TOrgForm *a[10]; a[0] = new TOrgForm(this);〜9まで
34 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 21:23:12 ] >>33 質問内容からして超々初心者みたいだけど そんだけの情報ではどこがバグっているのかなんてわからんよ。 ちゃんと別々にnewして作成して、かつ別々に参照しているなら干渉するなんてことは基本的にはありえん。
35 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 00:23:40 ] >>34 有り難う御座います 本当にこれだけなんですよ(^^; 何故か a[0]->Show(); a[1]->Show(); でフォームを出して たとえばフォームの中に int aint;と言うが有るとして a[0]の方に任意の数値を入れると a[1]の方にも同じ数字が入ってるというような感じで...orz もうちょっと色々試してみます
36 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 00:44:03 ] あれ今さっきやったら読み込んでこない..... 何だったんだろ....orz お騒がせしました有り難う御座います
37 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 09:21:45 ] たぶん、dfmを読み込ませて、全部同じになると思ってたんじゃないのかな
38 名前:デフォルトの名無しさん [2007/04/14(土) 07:53:01 ] フォントの設定は xxx->Font->Style=TFontStyles()<<fsBold<<fsUnderline; // 太字下線付き ようにして出来ることはわかったのですが フォントが太字下線付きに設定されているかを調べる(値を読み出す)方法がわかりません。 どうすればいいのでしょうか。
39 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 11:26:56 ] >38 if(xxx->Font->Style.Contains(fsBold) == true) ShowMessage("太字です"); else ShowMessage("太字ではありません"); だったかな?
40 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 22:24:28 ] >>39 さんくすです。 Contains()というのがあったんですね。
41 名前:デフォルトの名無しさん [2007/04/16(月) 21:40:34 ] button1を押すと別のFormを表示させるにはどうすればいいんですか?
42 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 21:49:55 ] Show()
43 名前:デフォルトの名無しさん [2007/04/16(月) 22:16:41 ] >>35 単にa[0]と思ったらa[1]に値入れてたってだけじゃねーの?
44 名前:名無し@沢村 [2007/04/16(月) 23:55:55 ] おみゃーらー♪ C++Builderを開発環境としてどう思うわけ? おりはC++Builderは開発環境としてつまらんと思うな。 おみゃーたー、『肥桶』つー開発環境があるの知ってる? おりは知ってるよ。 おりがつくった言語よ。これからh『肥えた語』の時代よ。 URLはここよ↓ www.geocities.jp/hontamagod/ 感想を頼むなー♪
45 名前:デフォルトの名無しさん [2007/04/19(木) 12:27:02 ] コード補完が反応しないんですがなぜですか?
46 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 12:40:28 ] コンパイルしても直らない? なら、不要ファイルを一度削除してみたら?
47 名前:45 mailto:sage [2007/04/19(木) 13:19:54 ] コンパイルしたら直りました。 ありがとうございましたm(__)m
48 名前:デフォルトの名無しさん [2007/05/06(日) 21:30:21 ] BDS2006を使っています。 自作のマウスカーソルを実現したいのですが やり方がわかりません。 ぐぐったら、ここを発見しました。 202.33.253.145/tips/cbuilder/cb011/index.html >イメージエディタなどのツールで、カーソルを作成し、リソースファイル(.res)に保管します。 これはできました。 >プロジェクトに作成したリソースファイルを追加します。 このリソースファイルを追加というのがやり方がわかりません。 リソース識別子をどこで指定するのかも、やり方がわかりません。 プロジェクトマネージャに追加してみたのですが、追加したCursor1.resがリンクエラーになりました。 よろしくお願いします。
49 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:43:04 ] {$R Cursor1,res} をコード上のどこかに記述、だったかな?
50 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:44:49 ] × {$R Cursor1,res} ○ {$R Cursor1.res}
51 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:59:45 ] pascal unitにね
52 名前:デフォルトの名無しさん [2007/05/06(日) 22:58:00 ] #include<stdio.h> void main(void) { int i = 1; int *p1; int *p2; p1=&i; p2=&i; *p1++; *p2++; i++; printf("ド○ゴンクエストは%dが一番おもしろい\n", i); } 3と表示させたいのですが、どうも *p1++; *p2++; が評価されていないようです。 どこがおかしいのか教えてください。
53 名前:48 mailto:sage [2007/05/06(日) 22:58:03 ] >>49-51 解答ありがとうございます。 パスカルユニットを作成してUnit1.pasをプロジェクトに加えました。 しかし [リンカ エラー] Error: 不明な RLINK32 エラーです というのが出てしまいます。 それと、リソースIDはどこで指定するのでしょうか。 うーん、難しいですね。
54 名前:48 mailto:sage [2007/05/06(日) 23:03:08 ] >>52 p1++; p2++; i++ ですね。 *p1++はポインタのインクリメントですね。
55 名前:デフォルトの名無しさん [2007/05/06(日) 23:06:19 ] >>54 int *p1; int *p2; ですので、 *p1++; *p2++; で値の増加のはずですので、そこではないと思うのですが・・・
56 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:15:03 ] >>55 (*p1)++ のように
57 名前:デフォルトの名無しさん [2007/05/06(日) 23:20:18 ] >>56 できました! ひょっとして1++が先に評価されてしまって、結果p2という意味の無い式文になっていたのでしょうか?
58 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:28:50 ] >>53 とりあえず、俺達は出来てるんだから、何か間違ってるんだろ。 後は自分で調べてくれよ。 パスカルユニット使わない方法もあったように思うぞ。
59 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:29:53 ] >>57 いや違う *p1++ は *(p1++) の事。 つまりアドレスが先にinc されて 1つ次のメモリを壊してる
60 名前:デフォルトの名無しさん [2007/05/06(日) 23:31:47 ] >>59 なるほど。 しっかり理解できました。 ありがとうございます。
61 名前:デフォルトの名無しさん [2007/05/07(月) 00:18:57 ] #include <stdio.h> int main(void) { char str[4][20]; str[0][20] = 'こんばんわ'; printf("%s\n", str[0]); return (0); } str[0] に こんばんわ と入れたいのですが、できません。 表示もなんだかおかしいです。 間違いの指摘をお願いします。
62 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:32:50 ] 先にDelphiをやってたの? 'こんばんわ' は文字列じゃなく文字 "こんばんわ"が文字列だけど C 言語ではそのポインタになる。 だから、ポインタから文字列を自前でコピーしてやらないといけない
63 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 01:25:20 ] >>61 つCの標準ライブラリ関数string.hに含まれるstrcpy() string.hをインクルードし以下のように書き換えればOK strcpy(str[0],"こんばんわ"); あと、'は文字定数を指定する物だから、文字列の時には"を使え ついでに誘導 ttp://pc11.2ch.net/test/read.cgi/tech/1176800483/ ttp://pc11.2ch.net/test/read.cgi/tech/1172099763/
64 名前:デフォルトの名無しさん [2007/05/07(月) 01:36:28 ] >>62-63 すいません。難しいです。 誘導先行って聞いて見ます。
65 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 01:44:06 ] おのれCypress
66 名前:デフォルトの名無しさん [2007/05/07(月) 10:10:46 ] ジェーブイルダーはLinux版出るようだが、 今後シー加算加算ブイルダーはLinux対応しないのか????
67 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 19:22:16 ] つ C++BuilderX
68 名前:デフォルトの名無しさん mailto:sage [2007/05/14(月) 22:03:04 ] C++Builderで10個程度の数字を打ち込んで並べ替えるってやりたいんだけどどんな感じでやれば出来るでしょうか? 普通のCならscanfで取り込んでってやればいいんだけどビルダーだと出来ないからどうやればいいかわからないです;;
69 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:25:03 ] scanfを使いたいなら、コンソールアプリで作ればいいのでは?
70 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:07:45 ] for文内部でEditのついた入力ダイアログを10回表示させればいいじゃん。 間違えたら戻れるとかの機能をつけて。
71 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 11:17:41 ] ソレをやるなら TMemoに10個打ち込んで、ボタン押したらソートする仕様の方が
72 名前:デフォルトの名無しさん [2007/05/16(水) 15:37:48 ] if(CppWebBrowser1->Document != NULL){ IHTMLElement * element; std::wstring html; { IHTMLDocument2 * html_docment2; CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (void **)&html_docment2); html_docment2->get_activeElement(&element); wchar_t * temp; element->get_innerHTML(&temp); --> html = temp; } // ここでいじくる element->put_innerHTML(const_cast<wchar_t *>(html.c_str())); } 矢印の位置でエラーが出ます。 stdio.hじゃだめ?何をインクルードすればいいかさっぱりわからんです。
73 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 16:45:21 ] >CodeGear?、Windows Vista?対応のC++ RADツールの新バージョンC++BuilderR 2007を発表 >ttp://www.codegear.com/jp/article/36469 BCB6が超安定してるんだが、Vi$ta用には逝行しなきゃならない?
74 名前:68 mailto:sage [2007/05/24(木) 10:42:47 ] >>69-71 返答が遅れてすみません。解答頂きありがとうございます。 いろいろ考えた結果Editを10個作りそこに数字を入力させボタンを押したら、 下のフォームに並び替え前と後の結果を出力する事にしました。 そこで質問なのですが、まずヘッダの方に入力と出力ようの配列a[10],b[10]を用意してやりボタンの方に void __fastcall TForm1::sortClick(TObject *Sender) { Bubble(int a[],&nyuryoku,&syuturyoku); } void TForm1::Bubble(int a[],int num* , int print*) int data, tmp; for (data = 0; data > 9; ++data) { for (nyuryoku = 0; nyuryoku < data - 1; ++nyuryoku) { if (a[nyuryoku] > a[nyuryoku+1]) { tmp = a[nyuryoku]; a[nyuryoku] = a[nyuryoku+1]; a[nyuryoku+1] = tmp; } } } としたのですがエラー出まくりです;; 後10個に分けたeditに打たせた数字を配列に格納しそれを出力させる方法がわからないです;; どうかご教授お願いいたします。
75 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 15:08:26 ] >>74 Edit10個でなくて、TMemo1個にした方がいいんじゃないのか?
76 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 16:07:32 ] まずは1個からやってみるべ
77 名前:68 mailto:sage [2007/05/28(月) 09:29:38 ] >>75-76 アドバイスありがとうございます。ですが今回はEdit10個でやってみることにします。 入出力に関して質問なのですが int work[10]; int output[10]; というのをヘッダのpublicで宣言してメインの方で void TForm1::input(int *Input) { int i; for (i=0;i<10;++i){ *pWork = StrToInt(data1->Text) ; } 出力の方で void TForm1::print(int *Input) { /*並び替え前と並び替え後の結果を画面に出力*/ int i; for(i=0;i<10;++i) { syuturyoku->Lines->Add(IntToStr(*Input)) ; } } とやっているのですがうまく行きません;; どのような方法を使えばうまく格納し出力できるのでしょうか? くだらない質問で申し訳ありませんがどうかよろしくお願い致します
78 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 10:08:44 ] >とやっているのですがうまく行きません;; 何がうまくいかないのか不明瞭 >どのような方法を使えばうまく格納し出力できるのでしょうか? 仕様不明瞭
79 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 10:27:16 ] >>77 アドバイスをチャント聞いてよ。 フォームにメモ2つ、ボタン1つを貼り付けて、ボタンをダブルクリック DynamicArray<int> work; void sort(DynamicArray<int> &dt) { for(int i=0;i<dt.Length-1;i++) for(int j=i;j<dt.Length;j++) if(dt[i]>dt[j]) {int w=dt[j];dt[j]=dt[i];dt[i]=w;}; } void __fastcall TForm1::Button1Click(TObject *Sender) { work.Length =Memo1->Lines->Count; int siz=0; for(int i=0;i<Memo1->Lines->Count;i++) if(Memo1->Lines->Strings[i]!="") work[siz++]=Memo1->Lines->Strings[i].ToInt(); work.Length = siz; sort(work); AnsiString s; Memo2->Lines->Clear(); for(int i=0;i<work.Length;i++) Memo2->Lines->Add(s.sprintf("%5d",work[i])); }
80 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 10:44:08 ] data1 ってなに? pWork ってなに? syuturyoku ってなに? つーか、ポインタってわかる?
81 名前:デフォルトの名無しさん [2007/05/28(月) 14:11:00 ] プログラムの特定箇所、たとえばプログラムのおしりとかに 特定のバイナリデータを付加する方法があれば教えてください。
82 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:24:46 ] 普通のファイルとして追加すればいいと思うが? ただ実行ファイルは実行されると排他処理されて書換えが出来ない。
83 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:36:00 ] >>82 意味がわかりません。 バイナリを埋め込む疑似命令みたいなものがあれば教えて欲しいという意味です。
84 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:45:50 ] リソースで埋め込んだら? pascalユニットなら比較的簡単だったように思うぞ
85 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:15:41 ] >>77 まずC++勉強しないとどうにもならないな CとC++は別の言語だよ
86 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:34:30 ] >>83 プログラム側から読み込むため? それとも、「特定箇所」と指定するからには、別の意図で? 前者であれば、バイナリデータ hogehoge.bin をリソースとして 埋め込む手順は以下のとおり。 res.rc を作って追加する。内容は下の一行。 hogehoge RCDATA hogehoge.bin 読み込みは以下の方法で TResourceStream *RS = new TResourceStream((int)HInstance,"hogehoge", RT_RCDATA); RS->Read();
87 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:41:15 ] その後、 .pas なら確か {$R res.res res.rc } の1行を入れるだけ C++だけでやりたい場合はどうやったっけ?
88 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:50:18 ] プロジェクトに.rcを追加 または #pragma resource で.resを指定
89 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 09:54:01 ] 1個もできないのにいきなり10個なんてやるのは無理
90 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 14:54:35 ] C99は使えますか?
91 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:22:09 ] 一個ボタンを作ってそれを押したら10秒後にプログラムが終了するようにするにはどのようにすればいいでしょうか?
92 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:23:30 ] Sleep(10000); Application->Terminate(); ?
93 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:43:14 ] >>91 VCLのデモンストレーション的コード Form上にTTimerを1つポトリ Timer1とする オブジェクトインスペクタでTimer1のIntervalを10000に設定 おなじくEnabledをfalseに設定 Timer1のOnTimerイベント内で Close(); ボタンのOnClickイベントで Timer->Enabled = true;
94 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:28:03 ] くだらない質問ですがどうかお願いします。 int ng=0 , i=0; while(i<20){ if(条件){ 処理 ng = ERROR; break; } i++; } それでreturn ng;で戻り値で返して、という関数を作ってメインの方に if(monaa(unko) == ERROR){ 処理 } else{ 処理 } としてエラー処理を行っているのですがビルダーでコンパイルすると一度while文を抜けてif(monaa)の部分までいくのですが その後またwhile文に戻ってしまいます。何か改善方法わかる方いらっしゃいませんでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:32:42 ] 普通はそんな事はありえないので 再現する最小のコードを作ってみてくれないかな?
96 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 14:35:46 ] >>94 デバッグすればいいだけだろ 200%バグだから
97 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 16:53:54 ] ソースレベルデバックを知らないに100ペソ。
98 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:28:36 ] なにが起きててなにがわからないのか、全く不明なのであてずっぽうで。 コードエディタ上でF5を押すとその行にブレークポイントを設定できる (行が赤くなる)ので、処理の流れを確認したい最初の部分にブレークポイントを 設定する。ただし最適化などで実行内容が存在しないとみなされる行には 設定できず、緑色になるので、コンパイルオプションで最適化を解除するなり 違う行に設定するなりすること。で実行するとブレークポイントを設定した行を 実行する*直前*にプログラムが停止してIDEに制御が戻り、対象行が青く ハイライトされる。あとは1行実行のF8(ステップオーバ)、F7(ステップイン)や F9(実行継続)を使って処理の流れを見る、変数の上にマウスをホバーすると 変数の値が表示される、Ctrl-F7で変数や式の値を評価、変更するなどの… 書いてて疲れた。まぁそういうことだ。がんがれ。
99 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:05:28 ] >>95->>98 みなさんいろいろありがとうございました デバックしながら原因探ってみたいと思います。
100 名前:デフォルトの名無しさん mailto:sega [2007/06/05(火) 17:02:47 ] プログラム初めて2週間くらいです。 複数のクラス間で変数を共有する方法を教えてください 具体的には弾や敵でクラス分けされたシューティングゲームで 自弾と敵の判定を敵の動きを処理するループの中でしたいです。
101 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:35:20 ] >>100 staticにすればいいんじゃない?
102 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:12:55 ] >>101 すみません、本とか買ってないんでやり方がよく分からないです 変数にstaticを付けるんですか? どこか参考になるサンプルソースが載ってるページがあったら教えて下さい
103 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:24:24 ] staticにしちゃ不味そうなようすだけど
104 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:35:27 ] >>103 あれ?クラスから生成した複数オブジェクト間で変数を共有するって意味だと思ってたよ・・・ もしかして異なるクラス間ってこと? だった面倒だからグローバルにしちゃえば?
105 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:41:58 ] グローバルってよく分かりません・・・ ソースコードが長くなりそうなのでクラスに分けてファイル分割したいのですが 変数は共有したいです。 何かサンプル下さい。お願いします
106 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:08:17 ] 単に他のクラスの変数を参照すればいいだけじゃん。 builder云々っていうレベルじゃないな。 C/C++の超初心者のお勉強をしないとプログラミングなんて到底無理。 C++の入門者向けの書籍を読みなさい。 他人に何かを聞く以前のレベルだ。
107 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:37:52 ] くだすれC++Builder(超初心者用)
108 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:43:58 ] ここは、C++Builderについての(超初心者用)質問スレ 変数宣言のprivateやpublic程度も理解していないなら こっちで聞くべし pc11.2ch.net/test/read.cgi/tech/1180877635/ こっちなら教えてくれる人もいるだろう
109 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 00:41:00 ] さすがにstaticもグローバルも分からないようじゃBCBの使いようがないじゃん >>108 で正解 ちなみに、>>100 をグローバル変数で処理するのも無茶でしょ ってか純Cならそうするしかないかもしれんが、それならC++を使う旨味がなんもなし
110 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 01:08:20 ] まぁ、>>107 氏が自分で教える分にはかまわないんじゃないのw
111 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 03:42:04 ] cpad使ってますが複数のソースファイルを扱えません BCC DeveloperとC++Builder どっち使うのがいいですか?
112 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 05:48:51 ] >>111 BCC Developer C++ Builderはそもそも統合開発環境でcpadやBCC Developerとは訳が違うぞ んでこのスレはC++Builderのスレだからあとはこちらに移動 タダで使えるBorland C++ Part5 pc11.2ch.net/test/read.cgi/tech/1135127048/
113 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 10:53:42 ] EditコンポーネントにUpDownコンポーネントをつけたものに 数字を消せないようにすることは出来ないでしょうか? 例えばUpDownコンポーネントを付けたものに初期値を0にするように設定したものに その数値を手動で消しても消せない、消してもまた0に戻るようにする、などは可能でしょうか? 元からEditの中身をいじれないようにする事はしたくないので・・・
114 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 11:03:04 ] OnChange で戻せば?
115 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:42:08 ] すみません BccDeveloperでメイクをすると Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照) というのが最後に出てきてメイクできません。 前日は普通にメイクできていたのと同じサンプルをコピッて貼ってもこれが出てきてしまいます。 何かファイルでも壊れているのでしょうか…
116 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:45:48 ] すみません、速攻で自己解決しましたorz 割とありがちなミスらしくて恥ずかしい…
117 名前:デフォルトの名無しさん [2007/06/21(木) 09:09:46 ] C++Builder2006を使いはじめてまだ1ヶ月です。 ライブラリ関係の資料を探したらBoostC++ とか STLPortライブラリとか dinkumwareとか...よく分かりせん。 何のライブラリを参考にすれば良いでしょうか?
118 名前:デフォルトの名無しさん mailto:sage [2007/06/21(木) 09:53:10 ] www005.upp.so-net.ne.jp/episteme/html/stlprog/
119 名前:デフォルトの名無しさん mailto:sage [2007/06/22(金) 15:11:58 ] BCB2007ってフリーバージョン出ると思う? やっぱ、フリーのTurboC++あるから、今回なしかな
120 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 06:18:49 ] OSを再インストールしようと思ってます。 C++Builder6のバックアップって、基本的にどのあたりを 保存しておけばよいでしょうか。 ・Projects ・Include これぐらいでしょうか。 Borlandっていう一番上のフォルダ保存しておけば 間違いないですか?
121 名前:デフォルトの名無しさん [2007/06/30(土) 19:32:08 ] boostはつかえますか?
122 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 19:44:26 ] 部分的に
123 名前:デフォルトの名無しさん [2007/07/02(月) 10:32:20 ] C++builder4とか5のCompanionToolsのCDってどんな物が入ってるの? 特別な物があるのかな?
124 名前:デフォルトの名無しさん mailto:sage [2007/07/02(月) 11:47:57 ] >>123 それぞれのバージョンのBCB用に書かれたフリーウェアやシェアウェアや 製品の紹介が入っていた。 発売と同時に出すものだから、大した物は入ってなかった。
125 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 15:42:42 ] String SBuf; double dBuf = 1; SBuf.sprintf("% .0lf", dBuf); て漢字ですが、 先頭にスペースが入らないのは何でですか? 数字の桁に応じてスペース入れたいんですが。
126 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 17:20:26 ] 印字幅を指定していないから。 sprintfからしたら、例えば数字が1桁の時はスペース何個入れりゃいいの?って話だ。 ちなみに%の後ろのスペースはいらない。
127 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:47:42 ] 低レベルで申し訳ないですが 出力結果をテキストファイルにするのってどうすんですか? Bcc developerつかってます
128 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 00:51:14 ] >>127 すれ違い こっち タダで使えるBorland C++ Part5 pc11.2ch.net/test/read.cgi/tech/1135127048/
129 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:00:30 ] Kylixのユーザー登録できないんですね。 builder互換で、Linux向けのGUIのクロス開発ツールは ないんですかねー。
130 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 08:45:45 ] つ Lazarus
131 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:18:25 ] >>130 うわー、こんなのあったんですね。 ありがとうございます。
132 名前:デフォルトの名無しさん [2007/07/17(火) 15:58:25 ] C++Builder2006を使って開発しています。 どこかにTcpServerコンポーネントの使い方またはサンプルプログラムが無いでしょうか?
133 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:17:20 ] XPスタイルを適用するとPageControlのタブを右や左にしたとき TabSheetのCaptionが表示されないんですが PageControlだけスタイルを適用しない方法とかないんでしょうか?
134 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:27:26 ] >タブを右や左にしたとき これの意味がわからんのだが 自分のとこではCaptionが表示されないという現象は見たことがない。 それにBuilderのバージョンも書いていなければ、Xpスタイルの設定方法も書いていないので まともな答えなど返ってこないぞ。
135 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 12:39:57 ] BCB2007です。 BDS2006ではTXPManifestをフォームにおけばスタイルが適用されていたんですが BCB2007からは何もしなくてもXPスタイルが適用されてしまいます。 プロジェクトオプションのアプリーケーションに「ランタイムテーマを適用する」という項目があったので チェックを外してみましたが変化はありませんでした(ヘルプをみたらVista用のオプションらしい) ちなみにPageControlのTabPositionというのがあるんですがご存じありませんか? XPスタイルでも上や下なら問題なく表示されます。が、デザインの関係上、右や左にタブを配置したいんで
136 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:09:40 ] >>133 Windowsの仕様
137 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 13:17:54 ] xpStyleの仕様だね。 OnDrawTabで自分で描画するといける。
138 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 00:28:16 ] くそっ、やっぱりOwnerDrawしかないのか
139 名前:デフォルトの名無しさん [2007/07/22(日) 08:19:03 ] >>138 × くそっ ○ くさっ
140 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 18:32:12 ] Application->Terminate();
141 名前:デフォルトの名無しさん [2007/08/25(土) 21:52:41 ] C言語を独学で初めて2日目ですが、ここに質問してもいいですか?
142 名前:デフォルトの名無しさん [2007/08/25(土) 22:05:00 ] C言語自体の質問ならすれ違い
143 名前:デフォルトの名無しさん [2007/08/25(土) 22:13:22 ] C言語自体の超初心者質問スレってありますか?
144 名前:デフォルトの名無しさん [2007/08/25(土) 22:39:53 ] C言語なら俺に聞け(入門篇) Part 18 pc11.2ch.net/test/read.cgi/tech/1187213990/ 自分で調べる気がないんなら プログラミングはやめたほうがいい。 どうせ1から10まで人に聞いてすますことしか考えてないんだろ。
145 名前:デフォルトの名無しさん [2007/08/25(土) 22:59:17 ] >>144 d やっぱこれしか無いわけね・・・
146 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:12:12 ] 知ってたふりしなくていいよ
147 名前:デフォルトの名無しさん [2007/08/25(土) 23:16:57 ] >>146 自分でC言語でソートかけたらこれしか無かったお(´・ω・`) でも、スレ見てたら自分の質問があまりにも超初心者すぎるから、超初心者スレ立ててみるお(`・ω・´) まりがとう ときに、親切な方なので伺いたいのですが、他板でスレを立ててしまった場合、次スレ立てる事ができるのは 何時間後ですか? たまに翌日立てれたり、立てれなかったり・・・ スレ違いなら諦めて撤収します
148 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 23:17:47 ] スレは立てるな あるものを使え
149 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 06:58:20 ] 夏休み速く終わってくれ。
150 名前:デフォルトの名無しさん mailto:sage [2007/09/01(土) 13:39:17 ] BCB6で空フォームだけのプログラムを作ったんですけど、 実行時パッケージを使って構築したときはupx圧縮して何も問題なかったのに 実行時パッケージを使わないようにしてupxにかけると 「アプリケーションを正しく初期化できませんでした」 てのが二回出てきてプログラムを起動できませんでした。 実行時パッケージを使うようにしってもプログラムのサイズが54KB程度のときは 同様に起動できず… どうなってるんですか!?教えてください><
151 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 21:50:59 ] >>150 しるか ASPackならうまくいくからそれでやれ
152 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 03:33:48 ] DLLを作っています。ホストプログラムから渡されたウィンドウハンドルを親にして、子ウィンドウを作成したいです。 TForm1を作っておき、親は非VCLなのでCreateParentedControlメソッドでForm1を作成すれば良さそうなのですが、どのオブジェクトのCreateParentedメソッドを呼べばいいのでしょうか。 また、CreateParentedControlの返り値はTWinControlとあるのですが、xxxx->CreateParentedControl(__classid(TForm1),親ハンドル);とした後では、作成されたTForm1へはどのようにアクセスするのでしょうか。 根本的に間違えてる気もするのですが・・・
153 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 09:12:48 ] > どのオブジェクトのCreateParentedメソッドを呼べばいいのでしょうか。 CreateParentedControlはstaticメソッドだからオブジェクトはいらない。クラス名::メソッド名で呼ぶ。 > CreateParentedControlの返り値はTWinControlとあるのですが、(略) TWinControlはTFormの親クラスなんだからキャストすればいい。 form1 = static_cast<TForm1*>(TWinControl::CreateParentedControl(__classid(TForm1), hwnd)); form1->Show();
154 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 13:25:13 ] >>153 ありがとうございます。助かりました。
155 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 06:07:26 ] TMemoでOLEドラッグ&ドロップでテキストを受け取りたいのですが、どのようにしたらよいでしょうか。 地道に書いていくしかない・・・?BCB用のサンプルコードさえ見つけられなかったです・・・
156 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 07:57:15 ] >>155 TMemoを継承して IDropTarget インターフェースを持たせればいいよ
157 名前:デフォルトの名無しさん [2007/09/06(木) 09:57:34 ] delphiの集合型をBCBから使う場合 support.codegear.com/article/35944 変数を定義して 要素を << で入れれば良いのは判ったのですが たとえば、 Hoge( const Sysutils::TSysCharSet &c) のような関数を呼び出すのに delphiでHoge(['A'..'Z']) のようにしたい場合は、どう表現すればいいのでしょ? やっぱり変数をそこで定義して入れるしかないのかな
158 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 11:06:06 ] Hoge(TSysCharSet() << 'A' << 'B' << 'C' << ... << 'Z');
159 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 11:36:58 ] >>158 ありがとう。 範囲を表現出来るようなメンバ関数とかも作っとけよって感じですね
160 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 11:39:06 ] 作ればええやん
161 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 14:23:07 ] >>156 ありがとうございます。がんばってみます。
162 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 17:16:05 ] たびたびすいません。TMemoを継承したTMemoWithDnDを定義しました。そして、TForm1のprivateにTMemoWithDnD *Memo1;と加え、使用するcppファイルの、関数の外側でTMemoWithDnD *Memo1;と宣言しました。コンパイルは問題なく終了します。 たとえば、Form1::initialize()でTMemoWithDnDをnewし、Parent,Text等を設定すると、フォームにTMemoWithDnDは表示されます。 しかし、ほかのForm1内の他の関数(例えばForm1::reset())で、先ほどのTMemoWithDnDのプロパティやメソッドにアクセスしても、実行時に、うまくいかないかエラーが出てしまいます。 原因が分からず、やったことを列挙したので、わかりにくくて済みません。原因は何処にあるのでしょうか・・・
163 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 17:24:47 ] >TForm1のprivateにTMemoWithDnD *Memo1 >関数の外側でTMemoWithDnD *Memo1;と宣言しました つまり、TForm1メンバーと、グローバルメンバーの2つの Memo1があるからでは?
164 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 17:54:52 ] >>163 ありがとうございます。TForm1メンバーを残し、グローバルメンバーの宣言を削除してみましたが、やはりうまくいきません。逆でも同じでした。 newした関数内だと問題ないんだけどなあ・・・この辺が手がかりにならないでしょうか?
165 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 19:51:50 ] TMemo なんか知らんが DragMode=dmAutomaticにして OnDragOver/OnDragDropに処理書けば エエだけとちゃーうんか なんか勘違いしてたらメンゴ
166 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 19:52:53 ] initialize()ってなんだろ ふつうこんな感じで使うよね? (Form1.h) class TForm1: public TForm { : : private: TMemoWithDnD* Memo1; : : : }; (Form1.cpp) __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Memo1 = new TMemoWithDnD(TForm1); } //--------------------------------------------------------------------------- void __fastcall TForm1::reset() { Memo1->Liness->Clear(); }
167 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 21:17:43 ] 返答ありがとうございます >>165 DragModeはコントロール自体のドラッグを制御する感じのようなので、違う気がします・・・ >>166 そんな感じで書いてるのですが・・・もう少し試行錯誤してみます。initializeとかはわたしが勝手に作ったものです。紛らわしくて済みません。
168 名前:162 mailto:sage [2007/09/06(木) 21:35:38 ] TMemo、原因が分かりました。newするとき、 Memo1 = new TMemoWithDnD(this); とするものを TMemoWithDnD* Memo1 = new TMemoWithDnD(this); としていたのが原因でした。この2つの何が違うかいまいちつかめないのですが、問題は解決しました。本当にお世話になりました。
169 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 22:36:18 ] コンパイラが変数を探すとき… 1. 直近のブロック({ })内で宣言されたローカル変数 2. 自クラスのメンバ変数 3. 継承元のメンバ変数 の順で探しに行くので TMemoWithDnD* Memo1 = new TMemoWithDnD(this); なんてやったら Memo1 を自クラスのメンバでなくその関数のローカル変数と見なすのですぅ
170 名前:162 mailto:sage [2007/09/06(木) 23:36:52 ] >>169 ふむふむ、理解した。トンクス
171 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 03:54:08 ] Cを書いてるのに、コンパイルエラーが出ると「C++エラー」と出るので、C++としてコンパイルされちゃってるようです。 コンソールアプリケーション → C を選んでるんですが、どこが悪いのでしょうか。
172 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 19:43:01 ] マルチスレッドで、サブのスレッドをWaitFor***Object(s)で待たせておいて、終了のイベントを送った場合終了させたいと考えています。 この場合はメインスレッドでTEventを作成し、そのハンドルをWaitFor***Object(s)に登録し、その後終了させたいタイミングでSetEvent()し、終了処理をさせれば良いのでしょうか。
173 名前:デフォルトの名無しさん mailto:sage [2007/09/10(月) 19:57:42 ] Turbo C++ Explorerを使ってネットワークプログラムを 組もうと思っているのですがTTcpServer(TTcpClient) とTServerSocket(TClientSocket)は何が違うんでしょ うか。 TTcpServerの方はツールパレットにあるものの対応する ヘルプがなく両者を比較検討しようにもできない状態で あります。 ちなみにDelphiでTServerSocket(TClientSocket)を使 った簡単なサンプルを作ったことがありこちらはヘルプもある ので問題ないのですが、TTcpXXXの方の情報が無くて困 ってます。
174 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 07:31:25 ] 全然詳しくないので質問させてください。 自称「マネージメントもできる」派遣クンが 「Visual Studio 2005が僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 彼のVisual Studio 2005プログラムが動かないのを調べるのは誰の仕事なのでしょうか?
175 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 08:42:51 ] スレ違いの質問に答えるのは誰の仕事なのでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 09:52:18 ] オレオレ
177 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 08:40:35 ] 16進文字列をキャラクタダンプするツールを作っています。 TMemoをフォームに置きます。 Widthを317位にします ?.........-..!%a5fe985cd9e46000426181712f338e67............ゥ-.D... コンパイル・実行して↑を貼り付けます。 右余白があるにも関わらず%の後ろで折り返しされます。 これをコントロールの幅きっちりで折り返しさせるにはどうしたらいいでしょうか。
178 名前:デフォルトの名無しさん mailto:sage [2007/09/14(金) 08:54:28 ] WordWrap=falseにして自分で改行するしかないような木がする
179 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 03:04:12 ] 当方、C++Builder4、WinXPです。 TPanelにドッキングしたTPanelの閉じるボタンを押したときに処理を行いたいのですが、 イベントが発生しません。 何か方法はないでしょうか?
180 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 18:04:04 ] Turbo C++で作成したソースを公開しようと思うのですが、 (プロジェクト名).bdsproj のファイルの中にはGUIDやらフォルダのパスやらが含まれててこれに関してはあまり公開したくありません。 しかし、これがないとビルドが面倒になるのでなんとかしたいのです。 いい方法はありませんか??
181 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 23:02:04 ] >>180 パスは相対パスに書き換える GUIDはエントリをそっくり削除する で逝ける筈
182 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 12:53:28 ] >>181 おお…GUIDってなくてもビルドできますね ありがとうございます
183 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 03:40:39 ] TMemoにおいて座標(文字数ではなくピクセル)をキャレット位置へ変換する方法はあるでしょうか?
184 名前:デフォルトの名無しさん [2007/09/30(日) 08:24:05 ] 以前VC++を使っていましたが、最近Turbo C++も使い始めた初心者です。 VCLは非常に使いやすくてよいのですが、コードエディタの操作感覚がVC++と だいぶ異なっているので戸惑っています。 ・行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。 ・オートインデントでタブ文字ではなくスペースが挿入される。 これらを変更することはできないのでしょうか? 本当に初歩的な質問で申し訳ありませんがどなたか教えて下さい。
185 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 08:45:20 ] 変更できなくはないけど変更せずに使った方がよいよ。 郷に入れては郷に従え。 慣れてショートカットキーが使えるようになってくると 逆に手になじんできます。
186 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:29:58 ] これって無料ですか?
187 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 09:57:56 ] 無料厨氏ね!
188 名前:184 mailto:sage [2007/10/01(月) 11:21:05 ] >>185 了解しました。もうちょっと慣れるまでがんばってみます。ご回答ありがとうございました。
189 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 19:21:50 ] UnixでもEmacs系しか使わない漏れにとっては 不便なエディタを無理して使うより 慣れたエディタ併用して書いたほうが気が楽だ。 でも、だからといってBCBが嫌いなわけじゃないんだからね?
190 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 04:40:43 ] >>184 >行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。 これ、行の長いソースの編集の時に便利。 最近はディスプレイも広いからCとかだとあんまり実感する事も無いと思うけど、 長いクラス名や変数名を扱う時とかに慣れると便利だよ。 >オートインデントでタブ文字ではなくスペースが挿入される。 オプションで切り換えられた様な、、、、、
191 名前:デフォルトの名無しさん [2007/10/03(水) 09:06:07 ] 外部エディタ使えばいいやん。
192 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:47:25 ] へたれだから補完がないと
193 名前:デフォルトの名無しさん [2007/10/04(木) 19:34:06 ] BCB6でJpeg2000を表示したいのですが、どうしたら良いですか?
194 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 19:38:07 ] がんばる
195 名前:デフォルトの名無しさん [2007/10/05(金) 08:39:53 ] 頑張り方教えて下さい。
196 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 10:15:31 ] susie用のjpeg2000のspi(要はDLL)があるから それを利用すれば簡単じゃん
197 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 10:56:34 ] >susie用のjpeg2000のspi(要はDLL)があるから 見つけました。 → ttp://software.kozoh.net/ >それを利用すれば簡単じゃん 使い方はどこかに書かれてますか?
198 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:39:39 ] >>197 ttp://www.digitalpad.co.jp/~takechin/download.html から ttp://homepage3.nifty.com/~takechin/archives/spi32008.lzh をダウンロードして解凍して spi_api.txtを嫁。 これで分からなかったらDLLを基礎から勉強しろ。
199 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:43:01 ] ttp://www2.big.or.jp/~osamu/Delphi/ ここの「builder-ML過去ログ」を検索すれば 山ほど出てきますよ。
200 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:43:44 ] ダウソしました。 DLLくらい作ったことありまつ>< でも、このプラグイン使うの結構難しいですね。 普段、ビットマップとか理解してなくて、TBitmapで済ませてるんで。
201 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:50:45 ] しかしJPEG2000の話は最近本当に聞かないね。 デジカメに組み込むという話はどこに行ってしまったのやら。 低圧縮JPEGで十分だと判断されてしまったんだね。
202 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:55:27 ] Jpeg2000、気力の低下でやっぱ挫折してきます多。 何か実行ファイルを起動して、Jpeg2000からビットマップファイルにコンバート出来ないでしょうか?
203 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:40:20 ] >>202 一番簡単なのはSusieにそのJPEG2000画像を食わせて画面を キャプチャすれば?
204 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:58:42 ] それは無茶杉。
205 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 23:50:38 ] >202 IrfanViewでバッチ処理?
206 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 20:28:50 ] Turbo C++を使ってプロジェクトをいくつかのファイルに分割して作業しているのですが、 ヘッダファイルに新しいクラスやメソッドを追加した時に 他のファイルから上手く認識されずにエラーが出てしまい、困っています。 Header1.h class classA{ ... }; Main1.cpp #include "Header1.h" ... classA a; //これはOk Header1.hに新しいクラスを追加 class classA{ ... }; class classB{ ... }; Main1.cpp #include "Header1.h" ... classA a; //これはOk classB b; //"E2303 型名が必要"が出る。 クラスに新しいメンバを追加した時も"xx は yyのメンバではない" と言うようなエラーが出てしまいます。 どなたかよい対処法がありましたら教えて下さい。
207 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 02:23:57 ] でもそのコードじゃエラー出ないし。
208 名前:206 mailto:sage [2007/10/15(月) 09:01:23 ] 自己解決しました。同名ファイルが複数のフォルダに分かれて存在していたのが原因だったようです。 お騒がせして申し訳ありませんでした。
209 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 15:08:20 ] デバッガーを走らせて変数をインスペクトしたとき、ちゃんと変数の中身が見えるのが殆どですが プロジェクト(変数?)によっては「???」と表示されてしまうのはなぜでしょうか 勿論その変数は有効で、ShowMessageなどではちゃんと表示されるのですが
210 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:29:50 ] たまにあるね。インスペクタウィンドウに直接変数名入れても、そんなもんはねぇとか言われたりね。
211 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 16:31:21 ] ヒント:最適化
212 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 17:26:04 ] デバッグ時はオフにしてるけどな
213 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 18:54:44 ] 変数のスコープの問題じゃないの?
214 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 19:55:55 ] その変数への代入文で止めたとしても、ツールチップもでないしインスペクトもできないってのがあった。 ???すらでないんで質問者のとは違うかも。
215 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:19:56 ] >>209 あてずっぽうで つ「副作用を許可する」
216 名前:209 mailto:sage [2007/10/17(水) 11:09:47 ] プロジェクト−オプション−最適化を切り替えたら見えるようになりました てもこんなオプションいじったことないのに、妖精さんのいたずらか
217 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 14:03:31 ] TListViewのアイテムをドラッグしてる時に表示される半透明のアイコン これを表示しないようにできませんかね
218 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 06:54:34 ] このコンポはどう? jp.youtube.com/watch?v=aMnI_grQk-4
219 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 13:34:19 ] 2007でSTLportを使えるようにする方法を 教えてください。
220 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 07:23:58 ] >>219 それBorlandのメールニュースで読んだきがする
221 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 09:18:18 ] あったあった 転載していいかどうか判らんから紹介だけ ボーランドのニュースグループ borland.public.cppbuilder.japanese の10月26日の投稿 『C++Builder2007になってからSTLの実行速度が遅くなっているのでしょうか?』 のレスに細かい手順があるよ Builder単体では出来ないので結構面倒
222 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 09:30:28 ] >>220 219です。できました! ありがとうございましたm(_ _)m
223 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:52:28 ] STLportはなぜかランタイムDLLの名前がgcc(MinGW)のものと同一に なるのでバッティングして同居できないんだよ。
224 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 15:55:37 ] >>221 のやり方みたら謎が解ける
225 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 16:13:34 ] >>221 はヘッダファイルいじってコンパイラのバージョン番号変えてるだけ ライブラリ名までは変わらない
226 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:10:33 ] C++Builderでボタンを押すたびに画像が変わるようにしたいんだけど 誰か分かる方いますか?どんなコード書いたらいいんでしょう。 イメージ的にはローカルに画像保存しておいてボタンを押したら そこの保存してある場所から持ってくるって感じなんだろうけど 上手くいきません。お願いします。
227 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 00:16:00 ] どこがうまくいかないの?を具体的に書いたほうが回答がつきやすいと思うよ。
228 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:07:53 ] std::vector<AnsiString> files; //読み込むファイルの配列 std::vector<AnsiString>::iterator files_it = files.begin(); //イベントハンドラ Image1->Picture->Bitmap->LoadFromFile(*files_it); files_it++; if (files_it == files.end()) files_it = files.begin();
229 名前:sage [2007/11/06(火) 16:00:03 ] C++Builder6を使用しています。 今回初めてスレッドプログラムを組んでいますが、 スレッドに対してパラメータを渡すにはどの様にすれば良いのでしょうか? DWORDとメモリのポインタを渡したいと思っています。
230 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:21:02 ] ターゲットスレッドのオブジェクトのメソッドコールしてやる。
231 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:21:14 ] TThreadならコンストラクタなりプロパティなりメンバ関数なり定義すればいいだろ。 フォームがTFormから派生してるように作成したスレッドもTThreadから派生してるだけだし。
232 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:25:06 ] スレッドクラスの派生にプロパティ付ける手もあったか。
233 名前:デフォルトの名無しさん [2007/11/07(水) 09:00:30 ] 最近、C++Builder 6 を使い始めた。 TXMLDocument の使い方教えてけろ。 EAccessViolation とかになっちゃうもんで。
234 名前:デフォルトの名無しさん [2007/11/07(水) 09:49:01 ] C++Builder 6を買おうと思っている初心者だけど、Personal版とProfessional版で何が違うの?値段が違うっていう回答はなしね
235 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:47:13 ] >>234 TurboC++でもDLして使っとき
236 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:48:30 ] >>234 VCLのソースの添付。
237 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:55:54 ] >>234 商利用の可否 DBコンポーネントの有無 紙のマニュアルの有無 tasmの有無(なくてもPascalソース上でインラインアセンブラ使用可能)
238 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 11:58:36 ] ま、Personalは体験版、Proは通常版、Entは資金提供版。
239 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:34:44 ] 初心者ながら古株のbcb5を使っています。 フォームを動的に表示する場合、 モーダルで表示したら次の行でデリートするのは わかっているのですが、 普通にショウする場合、 動的フォームを閉じた場合のデリートは どのタイミング(どのイベント)で 行えばよいのでしょうか? 動的フォームのcpp hにデリートを書く? 動的フォームが閉じた時の報告が親フォーム にくればいいんですが・・・ いろいろ調べたのですが、どうも。 教えてください。
240 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:32:07 ] 動的フォームのCloseイベントでthis->Release();じゃなかったっけ。 あとTCustomForm派生クラスはdeleteとかでデストラクタ直接呼び出したらだめ。
241 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:18:04 ] どうもです。 試してみます。
242 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:27:26 ] VCL6のソース読んだらCloseイベントでActionにcaFree突っ込めば勝手にRelease呼んでくれるっぽい
243 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 20:55:30 ] CBuilder 6を使っていますが、randomize()関数を呼び出しても乱数発生ルーチンが 初期化されていないようで、プログラムを実行するたびにrandom()関数が同じ値を 返してきます。RandSeed変数に出鱈目な値を入れてもrandomize()を呼び出しても 結果は変わりません。どんな原因が考えられるでしょうか。尚、Randomize()関数は フォームのコンストラクタの中で呼び出しています。
244 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:16:37 ] >>243 randomizeとRandomize両方表記してるけど、どっち? BCBにはどっちも存在して、random()に対応するのはrandomizeだけど、それは合ってる?
245 名前:デフォルトの名無しさん [2007/11/12(月) 21:20:33 ] >>243 種をstaticで保持しておかないとだめなんじゃないの?PCの乱数なんて周期があってそこから切り出すだけなんだから。
246 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:22:06 ] レス有難うございます。 Randomize()を呼んでも"r"andomize()を呼んでも結果は同じでした。実際の乱数 発生はrandom()関数を呼び出しています。尚、randomize()に対応するのはrandom() とのことですが、Randomize()に対応するのはrandom()とは別にあるのでしょうか。
247 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:29:34 ] >>246 System::Randomizeは下の関数に対応 System::RandG System::RandomFrom System::RandomRange randomize, srandはrandom、randに対応 上がVCLの乱数ルーチンで下はC標準関数。 で、乱数の初期化はsrand((unsigned)QueryPerformanceCounter());ならまず重複しないかと。 (パフォーマンスカウンタの戻り値が64bitだから桁あふれの警告出るかもしらん)
248 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:35:29 ] む、参照返しで戻り値がBOOLだた。 LARGE_INTEGER seed; QueryPerformanceCounter(&seed); srand(seed.LowPart); 大抵は srand(GetTickCount()); で十分だが。
249 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:41:31 ] 有難うございます。 早速RandomFrom()を使ってみたところ、コンパイルエラー(未定義の関数)が出てしまいました。 Randomize()に関してはエラーは出ません。プロジェクトに何かライブラリを追加しなくては ならないのでしょうか。
250 名前:249 mailto:sage [2007/11/12(月) 21:47:06 ] 失礼。 RandomFrom()ではなくRandomRange()でした。
251 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:51:54 ] >>249 ヘルプ見れ。 Pascalソースでuses MathってやるようにC++ソースだと#include <Math.hpp>が必要。 ヘルプの読み方は覚えておいたほうがいい。
252 名前:249 mailto:sage [2007/11/12(月) 21:53:23 ] 自己解決しました。 RandomRange()はvcl\math.hppで宣言されていますね。プログラムの先頭でこのファイルを インクルードしたらビルドできるようになりました。又、乱数発生機構もきちんと初期化 されているようです。プログラムを走らせるたびにRandomRange()から違う値が返ってきます。 どうもありがとうございました。
253 名前:249 mailto:sage [2007/11/12(月) 21:54:08 ] >>251 失礼、かぶってしまいました。
254 名前:デフォルトの名無しさん [2007/11/13(火) 03:52:42 ] 超初心者質問失礼します。classの練習で数字の合計値をdisplayする問題を、 classをいくつか作ってやろうとしたのですがどうしてもうまくいきません。 結局自分は下のようにmainでdisplayするよう作って動いたのですが、 classによって合計計算とdisplayを実行するにはどう作ればいいでしょうか。 class basic { int no; public: int accept() { cin>>no; return no; } }; void main() { int a[5],sum=0; basic ba[5]; for(int i=0;i<5;i++) { a[i]=ba[i].accept(); sum=sum+a[i]; } cout<<sum; }
255 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:10:37 ] BCB5の者です。 趣味でフリーソフトつくっていますが、 オプションフォームをnewで呼び出すか 起動と同時にロードしておくか どちらがいいのか迷っています。 ソフト自体の大きさは単体のみの動作で 1MB程度です。 一般配布を意識した場合、 オプションフォーオムはバックグラウンドに 待機させておくものでしょうか? それとも呼び出し毎にロードするものでしょうか? なお、常駐ソフトです。 オプションはダイアログ形式で 部品の数は20個ほどです。
256 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 09:37:11 ] >オプションはダイアログ形式で 部品の数は20個ほどです。 今のPC/dozなら、リソース的には無問題だが、 >起動と同時にロードしておくか コード的に素直じゃない。 さらに、オプション内容をフォームに保持させたりすると、プログラムが崩れてきたり。 フォームを開く時点でnewしてグローバルはなるべく無い方が良い。 どうしても消せないグローバルはあると思うが、グローバルフォームっていうのは...
257 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:31:17 ] よくわかりました。 一般作法ってのは聞かないと わからないものですから。 助かりました。
258 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:42:24 ] Win9xを考慮しなくて良いなら別に動的に作らんでも良いんじゃないの〜
259 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 10:59:08 ] 別に全部グローバルで良いんじゃないの〜 ってこと?
260 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 08:03:49 ] >>258 VB or JAVA プログラマみたいな発想でつな
261 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:56:40 ] BuilderはVB感覚で使ってるからね〜
262 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 12:42:39 ] VB->BCBはまったく違和感がない。 最近ここに張り付いたBCB5厨だけど、 ヴァーアップを考えています。 ターボCとBCB2007のどちらかとおもっています。 ベンダーのページみたら ターボCでもいけそうな・・・ どうなんだろ。 用途は、ちょっとしたアプリ程度で、通信なんか使わない。
263 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:17:22 ] >用途は、ちょっとしたアプリ程度で、通信なんか使わない。 今の時代超便利だお。 だってIndyをポトペタしただけで、データ渡しの手段が増えるんだから。
264 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:20:09 ] へぇ。 ターボCでもOK?ですか
265 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:47:34 ] って、言ったけど・・・。 ターボCの情報はスレチガイでつか?
266 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 19:47:51 ] YES
267 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:15:22 ] んなこたーない TurboC++Expはコンポーネントの追加ができないからプロジェクトにIndyのユニット追加してソース上で自分で宣言/newしないとダメ。 Pro買うんなら2007かっとけ(TurboC++ = C++Builder2006 = C++Builder10)
268 名前:デフォルトの名無しさん [2007/11/16(金) 08:33:42 ] SQLでLIKE %あ%としたときに パソコンによって あ ア ア が対象になるパソコンと あ しか対象にならないパソコンがありますが なにか環境が必要になってくるのでしょうか? いろいろ調べてますが決め手がわかりません よろしくお願いします。
269 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:12:43 ] >あ ア ア が対象になるパソコンと >あ しか対象にならないパソコンがありますが んなこたーない LIKE '%あ%' クォートつけるべし スレ違いだ
270 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:20:19 ] static_castって、何をするものなのですか?普通の型変換と何が違うのでしょうか。 コードを書いていて、うまくいくのだけど、何をしているのか分からないと気持ち悪いし、問題もあるだろうし。
271 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 10:19:20 ] ttp://ray.sakura.ne.jp/tips/cast.html
272 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:27:43 ] >>271 トン。読んでみます。
273 名前:デフォルトの名無しさん [2007/11/27(火) 10:42:05 ] 質問です。 TStringList* lst; lstに文字列をセットして char* p=lst->Text.c_str(); として文字列先頭アドレスを求めて処理をしている部分があったのですが ある特定文字列のときに、pがNULLになります。 でも、 AnsiString str=lst->Text; char* p=str.c_str(); とすると正常に文字列先頭がセットされます。 この二つで違いが出る理由は何故なのでしょうか。
274 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 10:51:04 ] 物が違うから。
275 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:12:57 ] pがNULLってのは勘違いのはず。ただ無効な領域を指しているのでアクセスした時の動作は不定。 p = lst->Text.c_str()の実際の動作は、p = lst->GetTextStr().c_str()なので、 pはGetTextStrが返す一時オブジェクトが持つバッファを指していることになる。 上の式の評価後に一時オブジェクトは破棄されてpの参照先も無効になる。
276 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:04:54 ] ひさびさにくだスレが正常に機能してる例をみた
277 名前:273 mailto:sage [2007/11/27(火) 20:10:11 ] >>275 超ありがとうございます。 とてもよくわかりました。 ちゃんと表示されていないのは大きな文字列のときでした。 小さな文字列のときは、一時的なバッファがたまたま破壊されなかったので 正常に動いているように見えたのですね。
278 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:56:19 ] 質問です。 下記 __finallyの中のA位置で、返そうとしている戻り値を知りたいのですが result変数を作る以外の方法はないでしょうか? int hoge() { try{ if(...) return 1; if(...) return 2; if(...) return 3; if(...) return 4; throw; }__fianlly{ (A) } }
279 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:05:12 ] fianlly
280 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:47:01 ] 無理でしょ
281 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:21:32 ] むしろresult作らない理由がないとおもう。 コスト云々なら例外処理やめてgotoで(A)に飛ばした方がはるかにコスト低いし。
282 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:28:46 ] どちらかというと、finallyはDelphi用であって、C++には元々無いもの。 Delphiにfinallyが必須なのはFreeのためであり、C++ではローカルオブジェクトの使用が推奨されている。 try finallyとtry except(←こっちはC++標準)のネストやその中でのthrow や return は言語規定されてないんじゃないかと思うのでやヴぁ目。 逆にローカル変数やローカルオブジェクトは推奨なので、 >result変数を作る以外の方法はないでしょうか? という考えがワケワカメ。
283 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:34:18 ] C++でもWindowsAPIのハンドル閉じたりするのにfinallyは有用よ。 最近のC++処理系は大抵__finally使えるし。
284 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:37:50 ] finallyが有用なのと各種処理系で実装されているのは認めますが(実際自分も使ってる)、 finallyと例外catch(上では間違えてexceptって書いちゃった)系や、returnを組み合わせちゃダメ。 何でかっていうと、tryを2つ組み合わせて、その中でreturnすると、一番外のfinallyを通過しない。 ソースコードを読む上ではfinallyは必ず通るって頭で読むから、バグの元になるだけだお。
285 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:50:46 ] むしろreturnできる処理でどう__finally使うのか
286 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:59:47 ] その通り。 ・finallyするなら複数箇所でreturnするな ・複数箇所でreturnするならfinallyするな あと、プログラミングテクニック的には、 関数やメソッドから抜ける箇所は1箇所にするとコーディングバグを防げる。 つまり、複数箇所returnはやめるべき。 (これも適材適所で、使い方によっては便利なときもあるけどね)
287 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:23:07 ] >>285 Delphi で Exit の後に finally が実行されるのを利用するのと同じで ローカル変数のデストラクタは return の後に実行されるのだろ?
288 名前:209 mailto:sage [2007/11/28(水) 14:22:59 ] TListBoxのn行目を「マウスでクリックした状態」にするにはどうすればいいのでしょうか?
289 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:12:00 ] SelectedIndexプロパティ とかなかったか?
290 名前:288 mailto:sage [2007/11/28(水) 17:53:35 ] Selected[n]でいいようです。ありがとうございました。
291 名前:278 mailto:sage [2007/11/28(水) 20:50:41 ] >>280-287 有難う御座いました。 各種参考にさせていただきます。
292 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:09:08 ] GetWindowLong(hwnd, nIndex)を使って、 すでにわかっている他アプリの子ウインドウ(ツールバー)の 位置変更およびサイズ変更をフックしたいと考えています。 フック自体良くわかっていません。 別に横取りして変更を加えるつもりはありません。スルーします。 単にバーの座標と幅・高さがユーザによって変更されたことの 通知がほしいだけです。 WM_MOVE WM_SIZE をつかって云々と他板での情報ですが、 WinAPIプログラマーリファレンスを見ても、 GetWindowLongとWM_MOVE・WM_SIZEのつながりが見えてきません。 再度申しますが、ユーザの変更知りたいだけで、座標データ等は取得済みです。 環境WinXP BCB5
293 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:17:45 ] GetWindowLong(HWND, GWL_WNDPROC)は対象が自プロセスじゃないと使えない。 SetWindowsHookEx使ってフックDLLからフックしないと無理。
294 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:35:17 ] なるほど。ますますわからん。 bcbのコード少ないからなぁ。 タイマーなんか使って こちらからアプローチすれば、座標データが わかっているんで、比較するだけで変更こそは 感知できるんですが、 ユーザーの変更を感知したいんですよね。 もう少し精進してみます。
295 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 22:45:19 ] BCBじゃなくてWin32APIの問題
296 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:00:56 ] 292です。 マルチいやだから書くけど、 Win32APIスレに転載して もまれて来ます。 とりあえず、一日放置してから 明日くらいにカキコしてみます。
297 名前:デフォルトの名無しさん [2007/12/08(土) 10:37:10 ] WinExecを使って自アプリAから他のアプリBを起動しています アプリB処理完了後に自動で終了するものなのですが アプリAからアプリBが終了したのを調べる方法はありませんか? Aからデータを渡しながらBを順次稼動させたいのですが
298 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 11:06:25 ] CreateProcessをどうして使わないの? どうしてもWinExecって事だと実行ファイルを開いてみてロックされてるかどうか見るか パソコン上のプロセスを列挙させるかだけど、他に実行されてると厄介だし 手間はズーっと大変だろうに
299 名前:297 mailto:sage [2007/12/08(土) 12:50:35 ] 単純に知りませんでした CreateProcessなら簡単にできるのかな 少し調べてみます
300 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:54:23 ] CreateProcess() WaitForSingleObject() CloseHandle() このあたりでしょうかね?
301 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 18:53:47 ] プロジェクト開こうとしたら、プロジェクトルールがみつかりません って出るんだけど、これ何が原因ですかね?
302 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 14:04:15 ] TForm上に配置した複数のTCheckBox同士をDnDして位置を変えたいのですが Checked値を変える為にクリックしただけでOnDragOverイベントに飛んでしまいます。 これらを切り分けるにはどうすればいいのでしょうか。
303 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 17:25:00 ] TMemoryStream::LoadFromFile にて大きなファイルを読み込もうとすると 「メモリストリームの拡大中にメモリが足りなくなりました」と言われます OSはXP、ファイルの具体的なサイズは1,382,526,976バイトです 確かにちょっと大きめのファイルですが何とか読み込みたいのですが BCBでは読み込めないサイズなのでしょうか
304 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 18:52:11 ] 搭載メモリは1GBという落ちか
305 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:08:12 ] ストリームなんだからファイルストリームでシークしてアクセスすればいいと思うんだけどな どうしてわざわざメモリに読むのだろ?
306 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 19:20:11 ] メモリに取り込みたいって、高速処理したい以外に理由はあるんかね?
307 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 20:03:55 ] >>303 の環境に十分な空き領域があっても、仮想メモリ空間内で"連続して"1.3GB分の空き領域がないと メモリの確保には失敗する。どうしてもメモリに置きたいなら、小さいブロックに分けないと。
308 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:35:44 ] 私もオフセット指定でシークするのを薦めるな
309 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 08:56:45 ] 303です。 暗号化させるのにどかんと読んでどかんと処理させたかったのですが 僕のやり方は非常識だったんですね(苦笑)方針を変更してみます ありがとうございました
310 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 09:41:41 ] 大きなファイルはメモリに読むだけでも処理時間がかかるし、その間操作出来ないから ユーザにはストレスがかかるだろ? それに仮想記憶の機構ってのはHDDのキャッシュの機構でもあるから、 ハードディスクをブロック的にアクセスするのもメモリに読むのもそうスピードは変わらない。 ブロック単位に読んで処理するのが一般的だし最速だと思うよ。 途中でユーザーはキャンセルも出来るしね。
311 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:58:30 ] データベースをパソコンで動かすようになってから、巨大ファイルは 一度にメモリに読み込んで処理するような機会は無くなってきたと思う。 1レコードが固定長ならランダムアクセスが出来るし、必要なインデックス 番号でシークすればいいのだから。
312 名前:デフォルトの名無しさん [2007/12/14(金) 20:32:36 ] ボタンを押したら、あらかじめbuilderで作っておいたexeファイルを実行(開く)にはどうすれば良いですか?
313 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:45:49 ] 他のプロセスとして実行させるなら 1, ShellExecute CreateProcess WinExec の windowsAPI 2,execl / execv とかのprocess.h どっちか
314 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 14:14:59 ] >>311 固定長じゃなくてもインデックス作っとけばランダムアクセスできるじゃん
315 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 14:22:03 ] 可変長だと読み込みはよくても、書き込み時にサイズ変わると大変だな
316 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 12:05:19 ] ちょっと良くわからないなりに 以下のようなソースを 書きました。 ColorDialog1->Color=(TColor)iFontColor; if(ColorDialog1->Execute()){ iFontColor=ColorToRGB(ColorDialog1->Color); } #255255255 or #FFFFFF のような値を得たいのですが、 どうしたら得られるでしょうか?
317 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:14:02 ] このコードならiFontColor にその形式で入ってる筈だけど?
318 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:39:20 ] とおもうんですが、 B R Gそれぞれ0-255の値がほしいのです。 逆に言うと、#FFFFFFから ColorDialog1->Color=hoge(FFFFFF); か ColorDialog1->Color=hoge(FF,FF,FF); か ColorDialog1->Color=hoge(255,255,255); のように扱いたいのです。 iFontColorの値がいまいち理解できていないと おもてまする。 今はカラーダイアログを使いとそれなりに動くので、 いいのですが、カラーピッカーからの数字データを 手入力でカラーダイアログもしくは、フォントカラーに 反映させたいのです。 iFontColorを16進法に酢りゃいいのでしょうか? 未熟で申し訳ないです。
319 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 13:49:21 ] char 配列とのunion かchar ポインタでアクセスするか iFontColor & 0xff; (iFontColor>>8 ) & 0xff; (iFontColor>>16 ) & 0xff; とやるか
320 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 14:32:22 ] やっぱり深みにはまってしまった模様。 即レスいただけると大変ありがたいのですが、 内容が理解不能ならあせりますね。 iFontColorの構造をもう少し調べてみます。
321 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:04:50 ] iFontColor=ColorToRGB(ColorDialog1->Color) でiFontColorの値が 14811135で フォトショップで得た値 FFFBE7 相関関係が見えてきません。
322 名前:デフォルトの名無しさん [2007/12/28(金) 15:16:12 ] ただのビット演算じゃないの?
323 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:23:36 ] 14811145は16進でE1FFFF。 TColorはBGRの順だから、RGBだとRとB入れ替えてFFFFE1。
324 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 15:43:26 ] 理解できました。 14811145 ではなく 14811135 でした。 ありがとうございました。
325 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 16:42:31 ] ちなみにTColor = COLORREFだからGetRValue()マクロとか使えば簡単に色成分取り出せる
326 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 20:18:30 ] 厳密にはTColor = COLORREFではない。
327 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 11:46:28 ] $00FFFFFF 右6桁がBGRだべ
328 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:09:30 ] VCL&C++ってキモイな ソース見るたびにそう思う
329 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:15:13 ] そうか。
330 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:19:13 ] VCL&Delphiは潔い ソース見るたびにそう思う
331 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 23:51:07 ] できました。 ありがとうございました。 くそソース晒して手直ししてもらえるものでしょうか? VB仕込みのソースが悲しくて
332 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:14:23 ] どんどん晒せ
333 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:11:37 ] でも、かなり痛いソースですよ 痛いなりに面倒みてもらえたらいいんですが プロのソースみてみたいし。 擦違いのような
334 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:47:06 ] 別にスレ違いとは思わないけど2chでやるのは無理がないか
335 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:33:11 ] int __fastcall CConv::fcRGBToInt(AnsiString strRGB){ // AnsiString sC="FFFFE1"; //FFFFE1(Winツールチップカラー) char bf[32]; strcpy(bf,strRGB.c_str()); //RGBからBGRに変換 AnsiString strBRG= (AnsiString)bf[4]+(AnsiString)bf[5]+ (AnsiString)bf[0]+(AnsiString)bf[1]+ (AnsiString)bf[2]+(AnsiString)bf[3]; return strtol(strBRG.c_str(), NULL, 16);//int型に変換 } //--------------------------------------------------------------------------- AnsiString __fastcall CConv::fcIntToRGB(int intRGB){ //TColorからR G B 16進法へ変換 AnsiString str = IntToHex(intRGB,6); char bf[32]; strcpy(bf,""); char bfRGB[32]; strcpy(bfRGB,str.c_str()); if(str.Length()==1){ bf[0]='0'; bf[1]='0'; bf[2]='0'; bf[3]='0'; bf[4]='0'; bf[5]=bfRGB[0]; bf[6]='\0';
336 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:34:01 ] }else if(str.Length()==2){ bf[0]='0'; bf[1]='0'; bf[2]='0'; bf[3]='0'; bf[4]=bfRGB[0]; bf[5]=bfRGB[1]; bf[6]='\0'; 途中rk }else if(str.Length()==5){ bf[0]='0'; bf[1]=bfRGB[0]; bf[2]=bfRGB[1]; bf[3]=bfRGB[2]; bf[4]=bfRGB[3]; bf[5]=bfRGB[4]; bf[6]='\0'; }else if(str.Length()==6){ bf[0]=bfRGB[0]; bf[1]=bfRGB[1]; bf[2]=bfRGB[2]; bf[3]=bfRGB[3]; bf[4]=bfRGB[4]; bf[5]=bfRGB[5]; bf[6]='\0'; }else{} return (AnsiString)bf; };
337 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:09:29 ] int __fastcall CConv::fcRGBToInt(AnsiString strRGB) { int intRGB = strtol(strRGB.c_str(), NULL, 16); return (intRGB >> 16 & 0x000000FF) | (intRGB & 0x0000FF00) | (intRGB << 16 & 0x00FF0000); } AnsiString __fastcall CConv::fcIntToRGB(int intRGB) { int intBGR = (intRGB >> 16 & 0x000000FF) | (intRGB & 0x0000FF00) | (intRGB << 16 & 0x00FF0000); return IntToHex(intBGR, 6); }
338 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:27:44 ] スゲーコンパクトでシンプルだ 礼をもうします。
339 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 15:51:34 ] BRGってのはミス?
340 名前:デフォルトの名無しさん [2007/12/31(月) 09:16:27 ] LMD Toolって何ですか? 英語でよくわからないのですが、 日本語サイトないですかね?
341 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 04:46:46 ] pc5.2ch.net/tech/kako/1061/10615/1061594556.html#R487 にある方法を使ってコンポーネントを置き換えた場合、オブジェクトインスペクタで指定したイベント対応コードが実行されません。 普通に配置したコンポーネント同様に、イベント対応のコードを実行させるにはどうしたらいいのでしょうか。 よろしくお願いします。
342 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 08:43:04 ] >>341 homepage1.nifty.com/MADIA/delphi/delphi_bbs/200703/200703_07030070.html
343 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:33:37 ] >>342 ありがとうございます。
344 名前:デフォルトの名無しさん [2008/01/02(水) 15:07:36 ] C++Builder2007のエディタの支援機能が誤作動してるみたいで、 改行するたびに余分な}が勝手に入力されるんだけど、これって直らないの? 誤作動するのは次のコードの前後からみたいだが。 char c[2]="\"";
345 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:31:40 ] QCには出てないね。登録を依頼してみたら?
346 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:33:14 ] Turbo C++ を始めようと思ったのですが、 .Net frame work v1.1のインストールができません。 WindowsXP SP2で、Windows Installerサービスは起動してます。 何か気をつけなければならない要素ってありますか?
347 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:00:03 ] >346 個別にMSのサイトからダウンロードしてインストールしてみたら? ttp://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&DisplayLang=ja ttp://www.microsoft.com/downloads/details.aspx?FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38&DisplayLang=ja ttp://www.microsoft.com/downloads/details.aspx?FamilyID=04dbaf2e-61ed-43f4-8d2a-ccb2bab7b8eb&DisplayLang=ja
348 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:26:53 ] >>347 おっ うまくいきました ありがとうございました〜
349 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:45:55 ] Windows Updateとかでセキュリティ関係の更新プログラムを適用するのを忘れないようにね、
350 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:13:08 ] C++Builder起動直後のブラウザ画面で、 どのメニューをクリックしても反応しないのですがどうしたらなおりますか? ブラウザは普段はIE6(sp1)+Sleipnirを使っています
351 名前:350 mailto:sage [2008/01/08(火) 20:50:37 ] IEのインターネットオプションで、bds:/を信頼済みサイトに登録してみましたが駄目でした ここで不具合でた人いないのかなぁ・・・ メニューのヘルプ>ボーランドのホームページ を選択すると、ブラウザでwww.borland.com/jp/ が開き、 この画面では、普通にブラウジングできるので、 bds:/だから駄目なのかな、と思ったのですが・。・・
352 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:03:13 ] バージョンくらい書けよ
353 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:35:01 ] >>352 すいません忘れてました Turbo C++ Borland(R) C++Builder(R) for Microsoft(R) WindowsTM Version 10.0.2288.42451 Update 2 Copyright (C) 2005 BorlandR Software Corporation. All Rights Reserved. OS Windows XP Home Edition build 2600.xpsp_sp2_gdr.070227-2254 (Service Pack 2) IE Version 6.0.2900.2180.xpsp_sp2_gdr.070227-2264 暗号強度: 128 ビット プロダクト ID:76492-OEM-0011903-00111 更新バージョン:; SP2; 3283; となっています よろしくおねがいします
354 名前:デフォルトの名無しさん [2008/01/10(木) 03:09:25 ] すいません 16進数が入ったBYTE型変数を10進数のINT型の値に変換するにはどうすればいいですか?
355 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 08:03:39 ] 「16進数が入ったBYTE型変数」 の意味が判らん。 もしかして単なるBYTE = unsigned char の配列か? ASCIIで文字列が入ってるなら '$'を足して StrToInt とかだが 配列ならどっちが上位なのか判らんけど 256倍しながら加算すればいいだけ 「10進数のINT型の値」も意味が判らんが、後で10進数で表示したいって事なら、そんな情報は胸にしまっとけ パック10進でって事なら、そう書け
356 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 21:20:38 ] Turbo C++ Builderで、XPスタイルのボタンって作れますか?
357 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:04:00 ] >>356 TXPManifestをパレットからフォームに適当に配置する
358 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 00:56:43 ] >>357 ありがとう もうCodeGearについていく
359 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 08:20:08 ] 俺も
360 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:36:25 ] C++Builder 2007ではその必要すらないのだが
361 名前:デフォルトの名無しさん [2008/01/16(水) 22:17:55 ] シリアルポートからのオン信号とオフ信号を受信してその間の時間を表示するだけのプログラムを 作りました、最大でも約5秒程度です、パソコンによっては遅くカウントされてしまいます。 いろいろなパソコンで試して見ましたが、パソコンのスピードやWIN2000 win xp とか関係なく 正しく計測されるパソコンもあります、何かパソコンの設定のような気もしますが どなたかわかりますか? c++builder5 pro で作ったプログラムです。
362 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:03:39 ] >>361 > シリアルポートからのオン信号とオフ信号を受信して 受信処理はどうなってるの?というかオン信号とオフ信号って? > その間の時間を どうやって取得してる? > 何かパソコンの設定のような気もしますが まず自分のコードを疑おう。 > どなたかわかりますか? エスパー求むってこと?
363 名前:デフォルトの名無しさん [2008/01/16(水) 23:28:12 ] >>362 説明不足でした。 特定コマンドをオン信号 オフ信号として判断してます。
364 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:41:13 ] このスレには超能力者は存在していない。 阿呆の見本なら居るようだが。
365 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 07:40:26 ] >>363 キミが困ってるのは時間表示の結果が思うようにならないって事なんだろ? 試しに複数の方法で計測してみたらどうだ? 1、VCL Now() 関数の差 windowsAPI 2 GetTickCount()の差 3 GetMessageTime() 4、timeGetTime() 5、QueryPerformanceCounter()/QueryPerformanceFrequency
366 名前:デフォルトの名無しさん [2008/01/17(木) 08:37:09 ] >>365 親切に対応して頂き有り難う御座います。 試してみます。
367 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:51:17 ] あとはシリアルポートの通信速度の設定とか
368 名前:デフォルトの名無しさん [2008/01/19(土) 18:42:14 ] C++Buider6を使ってます。 何ミリ秒後に処理を行うというプログラムを書きたいのですが、 時刻をミリ秒以下の単位で加算できるような関数はないでしょうか? 一応、単一スレッドで、複数の処理を実行しないといけないので、Sleep による停止は出来ません。 例えば、こんな感じで使いたい: time = getTime(); time1 += 3500; time2 += 4000; : for(;;){ now = getTime(); if( now >= time1 ){ doSometing(); time1 = now + 3500 } if( now >= time2 ){ doSometing(); time2 = now + 3500 } : }
369 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:54:10 ] CodeGear C++Builder2007の評価版を使っています。 BCB5で作ったソースを読み込み実行すると パラメータSenderは一度も使用されないと警告がでます。 気になります。 警告を外すのもなんですし。 警告が55もだされるのもいやなんですが。 みなさんはどんな感じなのでしょうか? void __fastcall TForm1::Button8Click(TObject *Sender) ちなみに呼び方はBCB7でOK?
370 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:43:28 ] C++Builder(BCB7ではなくC++Builder2007かBCB11だと思う)を持ってないんであてずっぽなんだけど、 void __fastcall TForm1::Button8Click(TObject *) {... とかパラメータを型だけにして仮引数名を書かないってのはだめですか?
371 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:51:06 ] (TObject *) がっつり怒られました^^;
372 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 20:55:05 ] あ、cppだけSenderを消したらコンパイル通りました。 いろいろやってみます。 Senderってなんだっけ? 調べてみます。ども、助かりました。
373 名前:デフォルトの名無しさん [2008/01/19(土) 21:01:26 ] 自己解決 timeGetTimeの戻値を加算で出来ました。
374 名前:370 mailto:sage [2008/01/19(土) 21:06:48 ] Senderはそのイベントを起動したオブジェクト。この場合はButton8へのポインタが入っている。
375 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:06:59 ] SenderのほかにShiftとかX・Y・Buttonとかあったので、 消したら警告はきれいさっぱり。 ほんとにいいのか?ま、いいか
376 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:20:42 ] >>374 了解です。
377 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:45:26 ] >>373 完全にオーバースペックになるけどパフォーマンスカウンタ使うと恐ろしい精度で計測できるよ
378 名前:370 mailto:sage [2008/01/19(土) 22:17:20 ] 使わないパラメータは名無しでおk
379 名前:デフォルトの名無しさん [2008/01/21(月) 16:25:37 ] 小さいアイコンを取得したくて、下記のようにしてみました。 TImage* img=new TImage(this); img->Height=16; img->Width=16; Image1->Picture->Icon->Handle=LoadIcon(NULL,IDI_APPLICATION); すると大きいアイコンの左上1/4が取得されてしまいました。 小さいアイコンをリソースから取得するにはどうすればいいのでしょうか、教えてください。
380 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 16:43:01 ] LoadImageでサイズ指定してみては?
381 名前:デフォルトの名無しさん [2008/01/21(月) 19:55:02 ] Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。 プロのプログラマでもあまりにレベルが低い人が多すぎます。 そんな人に限って、自分のレベルの低さを自覚していない、、、 本人は構わないかもしれませんが、その下についた新人プログラマは たまったものではありません。(私が経験しました。) 今になって分かりました。 彼らもまた、理解できていなかったのです。 プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。 (何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、 その証拠にC言語の学習で悩む人がどんなに多いことか) 私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。 私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、 今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。 と、嬉しいコメントをたくさんもらいました。 そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。 宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。 プログラムの世界そのものの実力を底あげに貢献し、 無意味なバグに、残業したり、悩んだりして欲しくないのです。 興味がある方はどうか、下のサイトをみてみてください。 mori.eco.to/
382 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:42:30 ] 日本語でおk
383 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:49:20 ] そろそろひろゆきの目に止まって多額の広告料金請求されっぞ
384 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:03:25 ] >379 ExtractIconEx
385 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:03:53 ] ごめん。リソースからなら違うや
386 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 00:14:57 ] >>381 おまえ、2chに宣伝出したら、広告料すごいぞ? 最初にレス書いた時の許諾事項は読んだよな?大丈夫なのか?
387 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:07:36 ] 私の年収は10億万円なので大丈夫です。
388 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 00:33:41 ] 俺の年収は一兆億円だもんね!
389 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 03:30:36 ] TForm1->Release; としたあと、その開放完了をWaitForSingleObjectのように低い負荷で待ちたいと考えています。 どのようにすればよいでしょうか。 よろしくお願いします。
390 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 07:50:02 ] 他のスレッドで待ちたいの? どっちにしても、メインスレッドでメッセージポンプ回してやらないとPostMessage しただけじゃいつまでたっても終了しないよ。
391 名前:デフォルトの名無しさん [2008/01/29(火) 10:22:48 ] おしえてください。 下記のように定義して、abcの要素数分(5個)をdefの大きさ(x)にしたいのですが abcを書き換えても、xが自動的に決まるように書くにはどう記述すれいいですか。 AnsiString abc[]={ "111.", "222", "333", "444", "555" }; int def[x];
392 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:34:46 ] >>391 こういう風に。 blogs.wankuma.com/melt/archive/2007/09/01/93176.aspx
393 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 13:02:17 ] >>392 ありがとう。 _countof()はBuilderには無いんですね。エラーですた。 template <typename _CountofType, size_t _SizeOfArray> char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray]; #define _countof(_Array) sizeof(*__countof_helper(_Array)) これをこぴってきて _countof(abc) にて要素数が簡単に取得できるようになりました。
394 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:14:23 ] BDS2006で問題なかったプロジェクトが 2007でコンパイルしたらリソースリークが発生した。なんで? sys\sysutils.pasの何行目とか表示してるけど、このファイルどこにあるの? エディタのメッセージからは開けなかった。環境変数がおかしいのかな?
395 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:57:59 ] 質問です。 windows タスクバーのボリュームコントロールをプログラムから開くには? スタート・メニューは、webから探した HWND hTaskBar=FindWindow(PChar("Shell_TrayWnd"), NULL); if (SetForegroundWindow(hTaskBar)){ PostMessage(hTaskBar, WM_USER+0x0104, 0, 0); } で開けたので、似たような方法で出来ると思うのですが???
396 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:13:23 ] ::ShellExecute(0, "open", "sndvol32.exe", 0, 0, SW_SHOWNORMAL);
397 名前:389 mailto:sage [2008/01/29(火) 21:04:42 ] >>390 ありがとうございます。 DLLを作っているのですけれども、ホストの終了時に呼ばれる関数内でフォームを解放し、それが完了したらホストに値を返すようにしたいです。 だから別スレッドでは無いと思います。
398 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:06:13 ] >>396 レス感謝です。 実は先ほどボンヤリとsystem32フォルダを眺めていてsndvol32.exeを見つけ WINEXECで開けました。 メインのボリュームだけで良かったんだけど、取り合えず良しとします。 最終的にはアプリ内の自作スライドでこのマスター・ボリュームをコントロール したくてWin32 API プログラマーズ リファレンスと格闘中です(^^;)
399 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:23:07 ] >394 FastMMで詳細を表示させてみたら?
400 名前:394 mailto:sage [2008/02/01(金) 21:51:01 ] すまん。俺のプログラムミスだったらしい。 原因はよくわからんが、同じ処理を2回やってたのがまずかったらしい。 AnsiStringに数字を入力するときにエラー処理として try{ edit->Text.ToDouble(); }catch{ edit->Text="1.0"; } みたいなコード書いてて、この処理の後に別の関数呼ぶんだけど 同じような処理の後、描画の処理になってたのを このコードの別の関数を呼ぶ場所に描画の関数を書いたらエラーは出なくなったよ。 何でエラーが出たのかさっぱりわからん。 とりあえず自己解決しました。 FastMMはこれから作るプログラム全部に導入しようと思います ありがとう。
401 名前:デフォルトの名無しさん [2008/02/06(水) 14:17:19 ] OpenMPは使えますか?
402 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:40:37 ] 使えますん。
403 名前:デフォルトの名無しさん [2008/02/16(土) 13:24:18 ] AnsiString s; AnsiString t=""; s.printf("t=%s",t); とすると、s が "t=(null)" となってしまいます。 この(null)を出力させないようにするには、 s が "t="となるようにするにはどうすればいいでしょうか。
404 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:43:33 ] s.printf("t=%s",t.c_str());
405 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:28:37 ] >>404 早々に、さんくすです。
406 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 10:05:06 ] TubroC++のIDEでhとcppを切り替えるタブが下に付いているんだけど 上に持って来ることは出来ますか? なんか使いづらくて
407 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 12:07:37 ] そんなことよりCtrl+F6押そうぜ!
408 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 01:06:00 ] Ctrl+F6は窓使いの憂鬱で別のキーに設定して使ってます 昔のバージョンでは1発で目的のファイルを開けたのに つかいにくく感じるのは自分だけなのか
409 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 15:40:26 ] コンポーネントパレットが見えなくなったのですが 修復できる方法はないでしょうか
410 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:55:19 ] レジストリのみのインストールは?
411 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:56:04 ] メガネ買って来い
412 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 09:56:40 ] はてな??? プログラム上からのフォルダーのリネーム ってどうやるんでしょう? 環境XP+BCB++V5。手段は問いません。
413 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 10:30:12 ] >>412 Sysutils::RenameFile(const AnsiString OldName, const AnsiString NewName);
414 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 19:57:19 ] >>413 レス有難う ファイルじゃなくてフォルダ (ディレクトリ)のリネームなんですよ RenameFile(a,b)ではエラーになりますね。 ヒントなのかな・・・読めない・・?
415 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:02:04 ] どんなエラー出る?
416 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:18:06 ] ありがちなところだと、パス名含めてフォルダ名が長すぎ お手軽にMoveFileのUnicode版使えば?
417 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 21:52:34 ] 6.0使っています。 image->canvas->pixel[x][y] = (TColor)((a[x][y] >> 16) | (b[x][y] >> 8) | (c[x][y])) でCanvasに書き、それを SavePictureDialogでビットマップに保存しているのですが、 保存されるファイルが32bitのビットマップになっているようです。(ファイルサイズ的に) これを24bitのビットマップで保存したいのですが、どのようにすれば宜しいのでしょうか?
418 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 22:40:53 ] Image->Picture->Bitmap->PixelFormat でいいんじゃね?
419 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:28:54 ] C++Builder2007開発してます。 非BCB環境のwin2000で実行したところ、 CG32.DLLがないと怒られます。開発環境では動きます。 オプション->デバッグ->CodeGuardの有効チェックボタンfalseと ツール->CodeGuardの環境設定->CodeGuard無効としてます。 バージョンはC++Builder(R) 2007 R2 Version 11.0.2902.10471で、 sp2とは書いていないのですが、最新と思ってます。 参考に以下のサイトを参考にしましたが、 うまくいきません。情報があれば教えてください。 tp://www.gesource.jp/weblog/archives/2007/08/cbuilder2007cg32dll.html
420 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 00:57:03 ] dn.codegear.com/jp/article/36796 の追加情報にバージョンの確認方法書いてあるからまずはそれをチェックしてみれ
421 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 01:14:29 ] お世話になります 追加情報 1. このパッチを適用した後も、バージョン情報ダイアログに表示されるバージョン番号は変わりませんが、 bin ディレクトリにあるファイルのタイムスタンプは、11:02になります。 bds.exeが4:04でした。 インストール4回目だわさorz あしたやってみます。 インストールキャッシュの有無の確認方法ってありますか? また、インストール時キャッシュの保存ってあったっけ? 情報ありがとうございました。
422 名前:417 mailto:sage [2008/03/05(水) 19:44:28 ] >>418 出来ました!ありがとうございます。 しかし、同じコードを書いた別のプロジェクトがあるんですが、それは24bitのビットマップで保存されているんですよね。 imageコンポート上かどっかで設定が出来るんですかね
423 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 21:43:12 ] TImageって無駄に冗長だからなぁ
424 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:48:52 ] ども。 CG32.DLLの件のものです。 意気揚々とアンインスコに取り掛かり、 せいぜい1h程度と思いきや2h以上orzで、 再インスコで以下のキャッシュの削除の有無の 選択画面を期待しながら「次」を押すと ttp://support.codegear.com/jp/article/images/36815/03000008.png そんな画面が出ずにガンガン突き進んで 無事?完了 で、なぜキャッシュの運用を聞いてこないか 理解できない。 ちなみに、インスコプログラムのバック画像は グリッド状のドーム天井を背景に パルテノン神殿っぽい建物の画像で、 ttp://support.codegear.com/jp/article/images/36815/03000008.png は12345といったプログラムコードの背景なので・・・ つかれた。情報あれば、教えてください。
425 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:25:24 ] 某のサポートに問い合わせた方がいいような気もする。 無料インストールサポートあったでしょ。たしか。
426 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 10:09:31 ] そうですね。レスありがとうございました。
427 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:16:11 ] 環境はBCB2007WINXP 行数の関係で、詰めてかきます。 以下のソースで、実行F9とビルド時S+F9では挙動がことなりよくわからなくなっています。 実行時は普通にアクティブなソフトの全パスが表示されますが、ビルドしたのを実行すると取得できません。 何かの勘違いか、コンパイラの使用知識不足としか思えません。よくないところを教えていただけないでしょうか? #include <vcl.h> #include <psapi.h> #pragma hdrstop #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {} //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { HWND hWnd=GetForegroundWindow(); bool blJEJ=false; DWORD dwPID; GetWindowThreadProcessId(hWnd, &dwPID); hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID); DWORD ReturnSize; if(!hWnd){ ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ? } if(hWnd){ char buf[MAX_PATH]; HMODULE hMod; DWORD size; EnumProcessModules(hWnd, &hMod, sizeof(hMod) ,&size); GetModuleFileNameEx(hWnd, hMod, buf, sizeof(buf)); CloseHandle(hWnd);//これの意味がわからない。 AnsiString str=fname; ShowMessage(str); } //--------------------------------------------------------------------------- へたなコードですが、素人なのでご容赦を
428 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:16:57 ] bool blJEJ=false; DWORD dwPID; GetWindowThreadProcessId(hWnd, &dwPID); hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID); DWORD ReturnSize; if(!hWnd){ ShowMessage("if(!hWnd)");/ どうも、if(!hWnd)がtrueになるみたいです。 ほとほと困りました。なにとどご支援お願いいたします。 状況説明に不足がございましたら、レスしていただければ 助かります。
429 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:03:08 ] くだスレなんで思いつきだけど OpenProcess() の戻り値とOSの関係とか、権限とかはOK?
430 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:19:33 ] >>427 ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ? ↓ IntToStr(hWnd) or IntToStr(hWnd) or AnsiString().sprintf("%08X", hWnd)
431 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:28:41 ] ちょっと待て、なんでOpenProcessの戻り値をHWNDに入れてる。 OpenProcessの戻り値はHANDLE型。
432 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:52:09 ] BCB6ってUTF8ファイルのコンパイルってできましたっけ? 能とか表があると、gccのコンパイルが失敗するので、ソースファイルをUTF8にしたいんでつよね。
433 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 10:08:31 ] どもです。 >OpenProcessの戻り値をHWNDに入れてる。 OpenProcessの戻り値はHANDLE型。 ちょっと見えてきました。 まずは型の勉強をしてみます。 APIの型ってよくわからないんです。 でも、実行では動くのにビルドでは動かない。 ビルドはできるのに。ちくしょう! 夜やってみます。キャストの件ありがとうございます。
434 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:53:33 ] OpenProcess()の直後 GetLastError()を調べたところ、 5が帰ってきました。 p://onegland.hp.infoseek.co.jp/wincgi/help/winerror.txt によると5は 5: アクセスは拒否されました。 とあり、悲しい限りです。 なんらかの対策はないでしょうか?
435 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:56:41 ] OS側が拒否しないようにセットアップしておく。
436 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 14:36:34 ] OpenProcessで要求するアクセス権を必要最小限に
437 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:34:26 ] dwDesiredAccessの値を全部試してみましたが、 だめでした。 「ウインドウハンドル ファイル名」でググッて 実装しているんですが。 GetForegroundWindowして、希望のexeがトップかどうかを 調べてるだけなんです。。。 ほかにいい方法ありませんか? あきらかにAPIの問題だけど、あのスレ結構きついんだなぁ。 BCBしかわからんし。すれ違いかな?しつこくて申し訳ないです。
438 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:58:21 ] というか、何がしたいのか全くわからん
439 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:09:03 ] アクティブなウインドウが特定のアプリかどうかを 調べたいのです。 そのため、GetForegroundWindowでウインドウハンドルを求めて、 アプリ名を検出し、特定のアプリかどうかの文字列判定をしています。 というわけで、アプリ名を知りたいのではないのです。 具体的には、作ってるのはユーティリティで、特定のアプリを 操作しているときに、激しく自前ソフトを実行し、 非特定アプリを操作しているときは、特定のアプリかどうかの 判定のみを実行するのです。ぅ〜ん、うまくいかないなぁ。 実行とビルド実行でこれだけ差がでるとつらいなぁ。
440 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:29:05 ] うちの似たようなことしてるソースだとこれで動いてるけど HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid);
441 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:44:04 ] >>440 おみごと! どうにか動きました。よくわかんないけど。 いろいろありがとうございました。
442 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 20:44:14 ] フルパス必要なきゃこっちの方が手軽かも DWORD pid; GetWindowThreadProcessId(hWnd, &pid); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,pid); PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); bool ret = Process32First(snapshot, &pe32); while(ret) { if( pid == pe32.th32ProcessID ) ShowMessage(pe32.szExeFile); ret = Process32Next(snapshot, &pe32); } CloseHandle(snapshot);
443 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:09:03 ] ども。参考にさせていただきます。 9xにも対応させたいし。って対応可能?? では。
444 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 01:15:57 ] 9xはProcess32First/Nextでフルパス返してくる(NT系はファイル名のみ) NT系でフルパス取るにはやっぱりPSAPIで取らないとだめ。 あと9x対応にするにはGetModuleFileNmaeExとEnumProcessModulesをLoadLibrary/GetProcAddressでロードしないとエラーが出る。
445 名前:デフォルトの名無しさん [2008/03/12(水) 02:01:47 ] 質問です TListViewにて ListView1->ViewStyle=vsReport;にして ListView1->Columns->Items[0]->Alignment=taRightJustify; としても、文字列表示が左寄せのままです。 他の列はちゃんと右寄せに表示されます。 先頭列を右寄せで表示するにはどうすればいいでしょうか。
446 名前:デフォルトの名無しさん [2008/03/12(水) 06:14:06 ] TValueListEditorコンポーネントの行数設定は、どうすればできますか?
447 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 01:31:11 ] >445 最初のカラムのAlignmentが無効なのはコモンコントロールの仕様じゃなかったっけ?
448 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:01:53 ] リストボックスをコンボボックスのように一行で表示して プルダウンリストで表示するプロパティを探しているのですが、 わかりません。教えていただければ助かります。 リストボックスでなくてもいいです。 コンボボックスのように入力は受け付けたくありません。 例としてはIEのインターネットオプションのプログラムタグの HTMLエディタや電子メールといったリストボックスです。
449 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:25:27 ] コンボボックスのStyleプロパティにcrDropDownListで問題あるの?
450 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:28:39 ] OKでした。節穴でした。 ありがとございました。
451 名前:デフォルトの名無しさん [2008/03/20(木) 22:39:55 ] テキストファイルを読み込ませるにはどうすればいいんですか? 今までGCCでやっていたときには同じフォルダにテキストファイル おいておけばよかったんですが Turbo C++に変えてからは同じフォルダに置いてもできません
452 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:50:54 ] カレントディレクトリ?ファイル名は絶対パスで扱うほうが間違いないと思うけどね。
453 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:22:49 ] >>452 できました テキストファイルをプロジェクトファイルにおいていました 実行ファイルはDebug_Build内に作られるんですね
454 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 00:43:11 ] WinMainの先頭に SetCurrentDirectory(ExtractFileDir(Application->ExeName).c_str()); とか書いておけばいい
455 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 23:52:20 ] それはちょっと…。カレントディレクトリはいつ変更されるかわからんから。
456 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 01:10:47 ] win2000でBCB6を使用しています。 TListViewでチェックボックスを表示した場合とTCheckListBoxに表示される チェックボックスでは見た目が違うのですが(TListViewに表示される方が枠が黒く太い) これをTCheckListBoxで使われているようなチェックボックスに変える簡単な方法は ないでしょうか?
457 名前:デフォルトの名無しさん [2008/03/27(木) 09:12:23 ] 教えてください。 ダイアログボックスでOKボタンが押されたときに、TEditの内容が未入力だったら TEditにカーソルを持っていき、入力をしてもらうようにしたいと考えています。 カーソルを持っていくには、 Edit1->SetFocus();で出来たのですが OKボタンがおされたときに、OKBtnClick(TObject *Sender)で Edit1のなかみを調べて、何も入っていなければ Edit1->SetFocus();を実行しても、ダイアログが閉じてしまいます。 これは、ボタンにModalResult=mrOkを指定しているからだとは思います。 OKボタンがおされたときに、Edit1がカラならEdit1へ ちゃんと入力されていれば、そのままダイアログを閉じたいのですが どうすればよいでしょうか。
458 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:23:51 ] if (Edit1->Text.IsEmpty()) { Edit1->SetFocus(); ModalResult = mrNone; }
459 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:30:42 ] TForm::OnCloseQueryで中身をチェックする
460 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:18:26 ] >>458 >>459 できました。 どうもありがとうございます。
461 名前:デフォルトの名無しさん [2008/04/04(金) 07:54:34 ] 三項演算子の使い方を教えてください。 AnsiString str; int index; if(index!=0) str="AAA"; else str="BBB"; これは、 str= index!=0 ? str="AAA" : str="BBB"; このように書けば良いのはわかるのですが、 if(index!=0) str.printf("%d",a); else str.printf("%d",b); これの三項演算子での記述の仕方がわかりません。 indext!=0 ? (str=str.printf("%d",a)) : (str=str.printf("%d",b)); とすると、strにはstrの長さが文字として入ってしまいました。
462 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:04:16 ] index!=0 ? str.printf("%d",2) : str.printf("%d",3);
463 名前:デフォルトの名無しさん [2008/04/04(金) 08:36:01 ] >>462 できました。ありがとうございます。 すいませんがもう一つ教えてください。 if(index!=0) str.printf("%d",a); else str="あいうえお"; の場合はどうすればよいでしょうか。 index!=0 ? str.printf("%d",a) : str="あいうえお"; ではエラーになってしまいます。
464 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:46:40 ] 型を合わせる index!= 0 ? (void)str.printf("%d", a) : (void)(str = "あいうえお");
465 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 08:58:40 ] >>464 なるほどー すごい勉強になりました。 E2034 'AnsiString' 型は 'int' 型に変換できない というエラーの意味が全然わからなかったのですが、 三項演算子は、両方で同じ型にしないとダメなんですね。 どうもありがとうございます。
466 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 12:25:42 ] てゆーかさ、普通は str = index != 0 ? "AAA" : "BBB"; とか str.printf("%d", index != 0 ? a : b); と書くんだよ。 あと、コンストラクタの初期化リスト等、どうしても「式」が必要な場所とか。 だから、「同じ型」の「式」が並ぶのが当然なの。「式文」じゃないから。
467 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 14:06:01 ] 質問ですが、VSSとBCBを連携させることはできますか?
468 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 15:49:54 ] 連携ってどういうふうに? 相互にobjを使うのは形式が違うから誰か変換ツール作らないと無理だけど 同じC++言語だから変換する意味無いでしょうから誰も作らない。
469 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:11:21 ] Visual SourceSafe ?
470 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 16:12:28 ] CVSならコンポあった気がしないでもない
471 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 01:04:43 ] まさかC++の方もフリーカーソルだったりしますか?
472 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 08:13:59 ] モチロンソウヨ
473 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:15:44 ] 絶望した
474 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:34:37 ] GExpert?
475 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 15:13:54 ] C++Builder2007で開発をしております。 C++Builder6で作られたプロジェクトのビルドができません。 エラー内容は以下の通りです。 [BCC32 エラー] functional(135): E2093 < 演算子が使われたがクラス string には定義が存在しない。 どなたか教えて頂けますか。
476 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 16:19:18 ] >>472 いい事言うなあお前。 みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。 それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。 そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。
477 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:31:56 ] おk
478 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:25:46 ] >>475 いい事言うなお前。
479 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:05:26 ] >475 newsgroupで質問した人?エスパー求むってのもちょっとねぇ。 最小限の再現状況をさらしなさいな。
480 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 02:33:06 ] >>475 最低限、エラー行を書けよ。 そんな質問の仕方では誰も答えねえぞ。
481 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:42:20 ] 型のチェックが厳密になってるから 曖昧な表現はすべて確定的表現にしないとダメよ
482 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 02:50:01 ] 475です。 >>479 >>480 >>481 質問の仕方が悪くてごめんなさい。 このエラーで困ってたのは 私(とnewsgroupで質問してた人)の関係者なのですが、解決したとのことです。 詳しい事は聞いてないのですが エラーが出る直前にコンパイル中のCPPに#include <string>を追加したら通ったそうです。 どうもありがとうございました。
483 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 15:48:42 ] >482 関係者なんですね?わかります。 ともあれnewsgroupにもなんか書いておいたほうがいいと思いますよ。
484 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 18:28:24 ] 批判されたら他人のせいにするのは、ゆとりの常套手段。
485 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 15:47:08 ] 初心者ですが質問させてください。 特殊フォルダを取得したいためSHGetSpecialFolderPath()を使いたいのですが、 定義されていないというエラーが出ます。 #include <shlobj.h>を先頭に挿入すると、さらに大量のエラーが出ます。 どうすれば、よいのでしょうか。 この系統の方法以外で特殊フォルダのパス名を取得する方法はありますか?
486 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 16:46:18 ] とりあえず、質問するときにはBuilderのバージョンを書いてね。 それが礼儀っちゅうもん。 #include "shlobj.h"するには、 NO_WIN32_LEAN_AND_MEAN を追加しなければ、二重定義エラーがでる。 設定方法は、Builderのバージョンによりちょいと異なる。
487 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:09:59 ] >>486 様 すみません、これから気をつけます。 バージョンに関してですが、Turbo C++です。 無料に引きつけられて勉強を始めましたが、国民機時代のTurbo君とは 名前だけが同じだけで後は全く別物でした。(汗) Turbo C++をもう少し使ってみて、ものになりそうでしたら製品版の Builderを買おうと思っています。 本題につきまして、 NO_WIN32_LEAN_AND_MEAN を#defineしましたら、問題なく動きました。 本当にありがとうございました。 今後も調べても分からないことを質問させて頂きますのでよろしく お願いいたします。
488 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:19:36 ] >>487 こっちのTurbo君などはいかが? dn.codegear.com/article/21751 ちなみに新TurboのExplorerエディションはコンポーネントの追加が出来ない以外はほぼProfessionalと同等の機能持ってた気がする。 ちなみに自作や他作コンポーネントはRAD環境で使えないだけでソース上でnewすればExplorerでも使える。
489 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:57:30 ] C++Builder6.0で、VBのMidBみたいに指定した場所の文字を抜き出すにはどうやったらいいのでしょうか? ググったらBuilder3で、専用の関数を作ったりしてましたが・・・6.0でも簡単にはできないのでしょうか?
490 名前:489 mailto:sage [2008/05/01(木) 23:21:32 ] あ、文字は半角のみで全角は扱いません
491 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:20:10 ] 文字を?c_str/dataで。文字列を?Copyで。
492 名前:489 mailto:sage [2008/05/02(金) 00:36:04 ] ああっ、AnsiStringのSubStringとかで出来たんですね すいませんでした&ありがとうございました
493 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 00:44:32 ] 別にAnsiString使わなくても::strncpy(dest, src + 先頭オフセット, 抜き出す長さ);でいいじゃない。
494 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 02:59:51 ] AnsiStringがずっと便利じゃん。 バッファとか考えなくてイイ。
495 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 08:06:11 ] 速度を取るか簡便性を取るかは自由
496 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:17:55 ] TStringGrid を継承したクラスを作ろうとしたら、「型名が必要」というエラーがでてしまいました。 新規作成→アプリケーション から、ヘッダファイルでとりあえず、classの宣言をしただけなんですが 「Unit1.h」 : #include <Forms.hpp> //--------------------------------------------------------------------------- typedef class TMyStringGrid : public TStringGrid { // ← ここんとこで 「[C++ エラー] Unit1.h(12): E2303 型名が必要」 と怒られます private: public: __fastcall TMyStringGrid(TComponent* Owner); }TMyStringGrid; //--------------------------------------------------------------------------- class TForm1 : public TForm : 「TStringGrid」 を「TForm」や「TCheckBox」に変更すれば、問題なくコンパイルされるので 「タイプミスか?」と何度もチェックしてみたのですが、、、 環境は BCB6pro、cb6_upd4_pro修正パッチ適用済、WinXP pro SP2 です。ご指導の程、よろしくお願いいたします <(_ _)>
497 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:28:29 ] >>496 まずはVCLリファレンスの読み方でも勉強しようか TStringGrid ユニット Grids 結論から言うと宣言されてない型から継承したクラスをどうやって作るのかと。
498 名前:496 mailto:sage [2008/05/07(水) 13:33:21 ] すんません、自己解決しました。 #include <Grids.hpp> これが必要だったみたいです (^^;;;; ども、お騒がせでした
499 名前:496 mailto:sage [2008/05/07(水) 13:36:14 ] >>497 あ、すいません、前後してしまいました いや、なんかそこらへんのクラスに必要なヘッダってのは最初っから インクルードされてるもんだと思ってました (^^;;;; ありがとうございました <(_ _)>
500 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:38:16 ] >>499 パレットからフォームにコンポーネント置けば勝手にヘッダファイルが追加されるけど、ソース上でのみ宣言だと手動でヘッダincludeしないとダメだお ついでにtypedefはいらん気もするけど。
501 名前:496 mailto:sage [2008/05/07(水) 14:09:51 ] >>500 なるほど、そういう仕組みでしたか。 typedef しとかないと、宣言のときに一々 class xxxx って 頭にclassをつけなきゃいけなくなると思っていたのですが、 あれ?typedef しなくても、「 class 」って記述抜きで通っちゃいました なんでだろう???? 色々とありがとうございました <(_ _)>
502 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 10:21:49 ] そして、ドナドナ
503 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 06:35:46 ] unixのソースをPC上に移植したいと考えています。 ・別階層に同名のファイルやフォルダって作れますか?( ・一気にサブフォルダを含めてプロジェクトに作成する事はできますか? (一つずつ、フォルダを掘って作成しないといけませんか?ドロップできなくて..)
504 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:04:01 ] コンポーネントのアンインストール方法 コンポーネントを試作中なのですが コンポーネントをインストールした状態でのテストをしてみたいと考えています。 (オブジェクトインスペクタがどんな感じになるかとか。。。) ということで 1.テストコンポーネントのインストール 2.コンポーネントのテスト 3.テストコンポーネントのアンインストール 4.コンポーネントの手直し という手順を繰り返したいのですが 3.をどうやってやったらよいのかがわかりません bcb6proです。 ご指導の程よろしくお願いします <(_ _)>
505 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:12:20 ] パッケージのインストールのダイアログで該当パッケージのチェックボックスを外すでいいんじゃないの? てかアンインストールしなくてもテスト>手直し>コンポのビルド>インストールで問題ない。
506 名前:504 mailto:sage [2008/05/09(金) 17:55:26 ] >>505 なるほど!それでやってみます ありがとうございました <(_ _)>
507 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:08:30 ] 複数のフォームで同一の関数を使うにはどうしたらよいのでしょうか? ヘッダファイルのpublicに入れるだけではダメですよね? ソフトはBCB6.0Proです。 よろしくお願いします。
508 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:35:37 ] 入門書嫁としか
509 名前:507 mailto:sage [2008/05/10(土) 00:51:44 ] 調べたところ、以下の本が良い、とのことで注文してみましたが・・・載っていますでしょうか? 田舎なので本屋に置いてないので、見てから買うことが出来ないため、来るまでわからないんです。 www.amazon.co.jp/C%2B%2BBuilder6-%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E6%B4%BB%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89- %E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%80%88Vol-2%E3%80%89%E5%AE%9F%E8%B7%B5%E3%83%86%E3%82%AF%E3%8 3%8B%E3%83%83%E3%82%AF%E7%B7%A8-%E7%94%B0%E4%B8%AD-%E5%92%8C%E6%98%8E/dp/4877830626/ref=sr_1_22?ie=UTF8&s=books&qid=1210348178&sr=1-22
510 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 13:26:42 ] とりあえず関数の宣言が書いてあるヘッダファイルを 全部のフォームのソースにインクルードしときゃいいんじゃね?
511 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 13:59:05 ] 派生コンポーネントでのプロパティのオーバーライド アクセッサの再利用について。 bcb6.0pro / WinXP SP2 pro 例えば、TEdit を継承して TMyEdit というコンポーネントを作成し、 そこで、BorderStyle プロパティをオーバーライドして BorderStyle を変更するときに、サイズも一緒に変化させるようにしたい場合、 新規の writeアクセッサ の中で従来のアクセッサを再利用することは出来ないもんでしょうか? つまり // QMyEdit.h //--------------------------------------------------------------------------- class PACKAGE TMyEdit : public TEdit { private: void __fastcall SetMyBorderStyle(TBorderStyle BorderStyle); // Myアクセッサ宣言 TBorderStyle FBorderStyle; // ここで再宣言?しないと // 「'FBorderStyle' は 'TMyEdit' のメンバーではない」 と怒られる protected: public: __fastcall TMyEdit(TComponent* Owner); __published: __property TBorderStyle BorderStyle = // プロパティオーバーライド {read=FBorderStyle, write=SetMyBorderStyle, // ←ここのwriteを拡張したい default=bsSingle}; }; //---------------------------------------------------------------------------
512 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:01:05 ] // QMyEdit.cpp //--------------------------------------------------------------------------- void __fastcall TMyEdit::SetMyBorderStyle(TBorderStyle BorderStyle) // Myアクセッサ実装 { if(BorderStyle != FBorderStyle) if(BorderStyle == bsSingle) this->Width += 10; // なんだかんだで else this->Width -= 10; // ぐちゃぐちゃやってから TCustomEdit::SetBorderStyle(BorderStyle); // 基底のアクセッサを呼び出す } //--------------------------------------------------------------------------- と、こんな感じのソースなのですが [C++ エラー] QMyEdit.cpp(39): E2247 '_fastcall TCustomEdit::SetBorderStyle(const TBorderStyle)' はアクセスできない と怒られてしまいます。 っていうかよく考えたら、元々こいつらはprivateで宣言されてるはずなので 当たり前っつっちゃ、当たり前なんですが、なんとかして SetBorderStyle ってのを 再利用できないものでしょうか? それともやっぱり、ゴリゴリと一から実装し直さないと駄目なのものなのでしょうか? よろしくお願い致します <(_ _)>
513 名前:507 mailto:sage [2008/05/10(土) 15:49:09 ] >>510 それはやっているんですけど、動かないので・・・。 メインのフォームに書かれている関数なので、そのヘッダファイルは他のフォームでもインクルードしているのですが、 未定義の関数として見られてしまうんです。
514 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:40:20 ] TEdit から継承されたBorderStyleに値を突っ込めばええだけだろ。
515 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:51:18 ] >>513 メインフォームのメンバ関数として定義してりゃそりゃ見つからんだろ。 普通の関数にしないと。
516 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:26:48 ] >>514 なるほどっ!! // this->BorderStyle = FBorderStyle; // ←これじゃBorderStyleが変わるわけがない TEdit::BorderStyle = FBorderStyle; // ←こっちでバッチリ!! オーバーライドされる前のやつってのも、こうすれば使えるんっすね!! ありがとうございましたぁーーーーっ!!!
517 名前:507 mailto:sage [2008/05/10(土) 18:55:18 ] >>515 あー、そゆことですか ありがとうございました
518 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:38:35 ] >>517 C++Builderの入門書じゃなくてC/C++そのものの入門書読むことをすすめとく。 STLもvectorくらいは最低覚えとけ。
519 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:48:44 ] プロパティエディターを登録しようとしても「'__classid' には VCL 形式のクラス型が必要」となってしまう。 enum TMyEnum {meA = 3, meB = 6, …… }; という型のプロパティを、オブジェクトインスペクタでプルダウンリストから選択して設定できるようにしたい。 ということで、プロパティエディターに TEnumProperty を使って登録しようと思ったのですが、ヘルプを参考に #include <DesignEditors.hpp> namespace Tenumproperty { void __fastcall PACKAGE Register() { RegisterPropertyEditor(__typeinfo(TMyEnum), 0L, "", __classid(TEnumProperty)); } } とやっても、 [C++ エラー] BinEdit.cpp(52): E2242 '__classid' には VCL 形式のクラス型が必要 というエラーが出て通りません。 インクルードするヘッダを <VCLEditors.hpp> と取り替えたり、両方記述してみたり、 あるいは、「Designeditors::TEnumProperty」としてみたりとか色々と試行錯誤してみましたが駄目でした。 class DELPHICLASS TEnumProperty; class PASCALIMPLEMENTATION TEnumProperty : public TOrdinalProperty というのは「VCL 形式のクラス型」ではないのでしょうか? ご指導の程、よろしくお願いいたします。 <(_ _)>
520 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 16:46:19 ] すみません。RegisterPropertyEditor のヘルプをよく読んでいませんでした。 エラーが出ていたのは、__classid(TEnumProperty) ではなく、__typeinfo(TMyEnum) の方でした。 TMyEnum はクラスではないので、 PTypeInfo TypeInfo; PPropInfo PropInfo = GetPropInfo(__typeinfo(TForm), "BorderStyle"); if (PropInfo) TypeInfo = *(PropInfo->PropType); という具合にしないといけないようですが、GetPropInfo がよくわかりません。 ヘルプを見ても引数が void のものしかありませんし、 Win32API の方で GetProp というのが該当する様ですが、こちらに変えてもうまくゆきませんでした。 enum型の型情報ポインタってのは、いったいどうやったら取得できるのでしょうか (´;ω;`)
521 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 19:02:40 ] ヘルプに記載はありませんでしたが、 extern PACKAGE PPropInfo __fastcall GetPropInfo(PTypeInfo TypeInfo, const AnsiString PropName)/* overload */; こんな関数がオーバーライドされているようでした。 コンポーネント本体のヘッダ、ソースと同じパッケージに突っ込むことで なんとかこれで「TMyEnum型の型情報ポインタ」とやらを取得できているっぽいです。 これで、プロパティエディタを登録できたはず! と思いきや、全然反映されていません(´;ω;`) 素のTEnumPropertyじゃ駄目なのかと、継承クラスを作ってもみましたが、やっぱりだめ Designintf::TPropertyAttributes __fastcall TAlignmentProperty::GetAttributes(void){ return TPropertyAttributes() << paValueList << paRevertable; } AnsiString __fastcall TAlignmentProperty::GetValue() { int iValue = GetOrdValue(); switch(iValue) { 〜中略〜 default : return AnsiString("dtUnknown"); } } void __fastcall TAlignmentProperty::SetValue(const AnsiString asValue) { if(asValue == AnsiString("dtLeftTop") ) SetOrdValue(DT_LEFT + DT_TOP + DT_SINGLELINE + DT_NOCLIP); else SetOrdValue(NULL); } TEnumPropertyを継承したときのオーバーライドってこれで合ってますでしょうか よろしくお願いします <(_ _)>
522 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:06:01 ] 動的にフォームを出したいのですが、 TfmOption *fmOption = new TfmOption(this); fmOption->ShowModal(); delete fmOption; どうもうごきません。 それとモーダルもしたくないのですが、 普通にメインウィンドウと同等のウィンドウとしたいのです。 オプションで初期にはロードしたくありません
523 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 07:43:32 ] >>522 TForm::Visibleをチェック。 新規作成したフォームはデフォルト値がfalseになってる。
524 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:04:48 ] ShowModal();すると、自動的にVisible=trueに設定されるから Visible=trueは必要ないハズ。 >>522 は基本的にOKだと思う。 動かないとは、表示されないという意味なのだろうか。 モーダルにしたくないなら、 fmOption->Show();
525 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:42:51 ] //--------------------------------------------------------------------------- void __fastcall Tform1::Button1Click(TObject *Sender) { *fmOption = new TfmOption(this); fmOption->Show(); } //--------------------------------------------------------------------------- void __fastcall Tform1::Button2Click(TObject *Sender) { delete fmOption; } //--------------------------------------------------------------------------- //ヘッダ private: // ユーザー宣言 TfmOption *fmOption ; まず、*fmOptionの*すらわからずやってます。 やりたいことは、オプションのコンポーネントがおおすきるので、 fmOptionの起動に時間がかかります。 それで、exe起動時に起動画面をだし、その間にオプションを出すよていです。 自動生成フォームとして提供したら起動画面がオプションがロードされた後 出てきて意味がないのです。 で、メインフォームのprivate変数にオプション保持用の変数をもって、 ロードしたいのですが、簡単そうでむずかしくて・・・。
526 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:43:57 ] ネット見てもShowModalしか出てこなくて。
527 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:21:12 ] で?
528 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 01:06:04 ] つかC/C++の基本だけでも勉強しないとにっちもさっちもいかなんじゃないかな。 その気がないならDelphiのほうがまだましだと思う。
529 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:06:13 ] >>525 も低脳だが、 >>528 の方がもっと低脳 の件について
530 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:49:26 ] なんでー?
531 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 19:58:38 ] >525 ヒント:ヘルプ
532 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 17:59:51 ] >>529 × の件 ○ な件
533 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:07:55 ] ものすごく素朴な質問なんですがエディットボックスがあるとして buf[0]の値が255であるとき Edit->Text.printf("%02X",buf[0]); ヘキサの[FF]と表示されるようにしたいのですが、やはり AnsiString ss.printf("%02X",buf[0]); Edit->Text = ss; のように代入するしか方法はないのでしょうか?先人の方教えて 頂けませんか?
534 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:25:01 ] Edit->Text = AnsiString().sprintf("%02X", buf[0]);
535 名前:533 mailto:sage [2008/05/20(火) 18:45:00 ] >>534 教えて頂きありがとうございます。長い間のモヤモヤがとれて すっきりしました。
536 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:39:56 ] char[100]とかで配列持ってて、 AnsiStringで受け取った入力を、char[80]から入れたいんだけど、どすればいいんすか?
537 名前:536 mailto:sage [2008/05/20(火) 19:41:10 ] 連投すんません 入力されるブツは、日本語ダス
538 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:58:30 ] >>536 strcpy
539 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:22:05 ] エディトボックス入力(日本語を想定)のAnsiStringの文字列長ってどうやって調べるの?
540 名前:デフォルトの名無しさん [2008/05/22(木) 21:03:52 ] すいませんが教えてください。 BDS2006にて VCLフォームアプリケーションを新規作成する。 TExcelApplicationをフォームに貼り付ける。 コンパイルすると [リンカ エラー] Error: 未解決の外部参照 '__fastcall System::Variant::operator =(wchar_t *)' が C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\BCBOFFICEXP.LIB|Excel_XP_srvr.cpp から参照されました というエラーが出ます。 このエラーの解決方法がわかりません。 なにかをincludeしなければならないのでしょうか。
541 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:09:34 ] ちなみに、BCB5で同じことをすると、 Excel_XP・・・となっている部分が Excel_2K・・・となり 問題なくコンパイルは通ります。
542 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:12:15 ] >>540 ヘッダじゃなくてライブラリファイルが抜けてるっぽいね。リンカエラーだから。
543 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:29:09 ] imageコンポーネントでTColor型で絵を描いていきたいんだが、 BMP形式で保存すると32bitになりますよね? そこで、PixcelFormat で pf24bitを指定すると、なぜか書けないんです。 そこで、あえて32bitを指定してもなぜか書けずに特に指定せずに image->picture->〜 = (TColor)0xffffff だと書ける。 ただ、保存するのは24bitのBMPにしたいんだが、ググると ColorToRGBという関数があるみたいなんですが、 これの使い方教えて貰えませんか?ヘルプ見ても、いまいちわからなくて。 また、この関数使うのより簡単に24bitBMPへ保存できる良い方法が有れば伝授してください
544 名前:543 mailto:sage [2008/05/26(月) 23:01:57 ] すいません。 環境は、Builder 2006です。
545 名前:543 mailto:sage [2008/05/27(火) 19:08:00 ] 自己レス Canvasに書いてから、pf24bitを指定する事で書けました。 どうやら順番があったようです
546 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:40:21 ] bcb2007を使っています。 dll内にフォームを用意したいのですが うまくいきません Form1=new TForm1(this);Form1->ShowModal();delete Form1; うまく呼び出す方法はあるのでしょうか?
547 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:17:59 ] C++Builder6.0でマルチスレッドのプログラムを作っています。 フォームにボタンとラベルを各1個配置し、ボタンをクリックする度に ラベルに表示される数字が+1されるようにしてあります。 以下のコードで普通に実行するぶんには動くのですが、(※)の箇所で ブレークを掛けてステップ実行を2回くらいやって再実行すると フリーズ(と思うほど長時間固まる)してしまいます。 なぜなのか教えて頂けないでしょうか。 void __fastcall TAppThread::Execute(void) { int cnt; cnt = 0; count = 0; while ( 1 ) { cnt++; //(※) cnt--; cnt++; Synchronize( Update ); Suspend(); } } void __fastcall TAppThread::Update() { Form1->Label1->Caption = IntToStr( ++count ); } void __fastcall TForm1::Button1Click(TObject *Sender) { if ( appThread ) appThread->Resume(); }
548 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:43:57 ] builder6.0を使っている初心者です。 恐縮ですが質問させてください。 プログラム上で動的にコンポーネント(TPanel)を配置しています。 そのコンポーネントにOnDragDropとOnDragOverイベントを取得させて 動作させたいのですがやり方がよく分からずうまくいきません。 初歩的な質問で申し訳ありませんが教えて頂けないでしょうか。 よろしくお願いします。
549 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 08:15:26 ] 抽象的すぎて意味わからんがな(´・ω・`)
550 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:23:37 ] C++Builder6 をつかっています。 だんだんプロジェクトが大きくなってくると、デバッガのインスペクトとかで表示される値が むちゃくちゃになってきます。回避方法ってないものでしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 10:26:58 ] >デバッガのインスペクトとかで表示される値が むちゃくちゃになってきます。 それは無い。
552 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:24:59 ] そんな変数無ぇって言われる事はあるな
553 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:26:56 ] それはプロジェクトの大小じゃなくて、 コンパイラの最適化の結果。
554 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:32:53 ] そこは置いといて、変になることがあるってことよ
555 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:52:05 ] BCB6では変にならないお。 プロジェクトにファイルを追加した直後は、ブレークポイントで止まらなくなるけど。 ブレークポイントで止まった後は変数が変になることはない。
556 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:13:29 ] 全然関係ないけど、うちのBCB6は struct Hoge : vector<int> {}; Hoge hoge; try { string a; if (a.empty()) throw exception(); Test test; } catch (...) { } これのTest(何のクラスでもいい)のデストラクタがなぜか呼ばれるんだけど、 再現する人いるかな。
557 名前:550 mailto:sage [2008/06/17(火) 12:37:45 ] ごめん、うちのバージョンは5だった・・・。 コンパイラの最適化OFFで、 if(Instance != NULL) { Instance->Data = 3; } とかやって、Instance->Data にブレークポイントを設定したとする。 それで、Instance の値を見ると NULL になってることがある。 プログラム自体はちゃんと動くんだけど、デバッガが、グダグダになることがある。 ダイレクトXアプリってのもあるのかなぁ? あと、これは仕様だと思うんだけど、いつのまにか、TOpenDialog で マイコンピュータを開くと、なにも表示されなくなった。
558 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:39:14 ] >>557 多分、6にうpするとそんなことない。
559 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:49:03 ] >>558 6ってもう買えないよね?
560 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 12:53:02 ] あー、新規なら買えるのか。スレ汚しスマヌ。
561 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:40:40 ] コードガードにバグがある6を今更買うの?
562 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 16:42:46 ] 5ならコードガード無いんじゃね? ま、5と6使った自分なら、間違いなく6を選ぶ。
563 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 17:07:53 ] 5にもコードガードついてるよ。5のコードガードのバグは気づかなかった。 BDS2006 はもってるんだけど、なんかこれもバギーらしいな。 思い切って、2008 がでるまで待とうかとも思ってるんだけどね。 9月ぐらい? printf デバッグとかもう嫌だよ・・・。
564 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:40:32 ] デバッガで変数が正しく表示されなくなったら パソコンを再起動 これ常識。 これで回復する。 自分のプログラムで、どっかぶち壊しまくってるんだよ。
565 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:45:00 ] 9xじゃあるまいし
566 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:52:20 ] 9xなら暴走して落ちるんだよ。 自分で自分のDSをぶちこわしているから変数がヘンになる。
567 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:11:35 ] 今時アプリがどんだけメモリ空間壊したって、PCの再起動なんて必要ないだろw DSとか言ってるから古い人ぽいけど。
568 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:47:06 ] じゃあFSとか言えば納得するのか
569 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:13:34 ] メモリ空間を壊すって事は、Builder の場合、 デバッガ、コードガード、OS、の3つをすり抜けないと無理なんだけど、 そう言う事って出来るの?セキュリティホールみたいな物か?
570 名前:548 mailto:sage [2008/06/18(水) 02:27:24 ] すみません。説明不足でした。 void __fastcall TForm1::N1Click(TObject *Sender) { TTabSheet* tb; TScrollBox* sbox; TPanel* panel; TButton* bt; tb = new TTabSheet(PageControl1); tb->PageControl = PageControl1; sbox = new TScrollBox(tb); sbox->Parent = tb; ... panel = new TPanel(sbox); panel->Parent = sbox; ... bt = new TButton(panel); bt->Parent = panel; ... bt->DragMode = dmAutomatic; } こんな感じでPageControlに新しいタブを作成し、その中にTScrollBox、 更にその中にTPanel、更にその中にTButtonを配置させています。 やりたいことは、この新しく配置したTPanel上のTButtonをマウスドラッグで 移動できるようにしたいのですがその方法がよく分からないということです。 回りくどい説明で申し訳ありません。
571 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:39:03 ] ボタンをドラッグってどんな操作を想定してるの?ボタンはクリックするものなのに。
572 名前:548 mailto:sage [2008/06/18(水) 12:05:40 ] >>571 マウスの操作でボタンの座標位置を変更できるようにしたいです。 「自分で追加したボタンを自分の配置したい位置につまんで移動できる」 と言った方がわかりやすいかもです・・・。 OnDragDropイベントではなくOnMouseMoveイベントを使えばもっときれいにできるのかもしれないんですが、 ここではとりあえず「ドラッグで移動して配置する」という操作だけを目的としていたので イベントとして使いやすいと感じたDragDropを使用しています。
573 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:48:51 ] いや、だから、ボタンをつまもうとしたらクリックになっちゃうでしょ。 でクリックしようとしたときにちょっとした操作ミスでドラッグで移動になる、と。 そんな自己満足なUIは考え直せって。
574 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:07:01 ] そんなのレイアウトモード←→通常モードみたいな感じで切り替えれば済む問題でないの
575 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:39:38 ] もちろんそれでもOKだと思うが。 で所望の動作はWM_NCHITTESTでHT_CAPTIONってのがお手軽。
576 名前:548 mailto:sage [2008/06/20(金) 02:47:20 ] >>573-575 ボタンクリックとドラッグ混同の操作ミス等、言われてみたらその通りだと感じました。 アドバイス含め、対処できるように組み直したいと思います。 移動についてはさせることができました。 アドバイス、ご指摘ありがとうございました。
577 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:57:40 ] >>576 うちも VCL 以外で近いことを以前やったことあるけど、 そのときの実装は何ピクセル以上ドラッグするとドラッグ開始、 っていうふうにしてた。
578 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 04:30:23 ] 古いプロジェクトをコンパイルすると -Hr スイッチにより vcl4.h を vcl.h の代わりにインクルードします っていうメッセージが出るんだけど、このスイッチって何処に記載されてるの? 古いプロジェクトの移行って面倒だね・・・。
579 名前:デフォルトの名無しさん [2008/06/30(月) 16:46:20 ] Vi$taにBCB6をインスコできますか?
580 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 04:50:20 ] V$sta捨てれ
581 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 09:39:37 ] 正直、そうしたいんですが、出来上がったexeのVi$ta検証に必要。 ところで、Vi$taってなぜかXPとマルチブートできませんよね?
582 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 09:50:06 ] っリムーバブルフレーム
583 名前:デフォルトの名無しさん [2008/07/01(火) 19:26:51 ] >>579 Vistaの動作検証だけなら開発は2000かXPで。 視覚スタイルは.manifest同梱で対応可。 Vistaアイコン(PNG圧縮256px)はIcoFxで可能。 res作成はVista対応SDKのrc.exeで可能。
584 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 19:49:26 ] 2000だとVistaなSDKがインスコできない罠が(;゙゚'ω゚'):
585 名前:デフォルトの名無しさん [2008/07/01(火) 22:49:40 ] >>583 そうなのか・・・XPに入れてexeとdllだけ2000にコピーしたから気付かなかったわ。
586 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 08:57:02 ] >>583 ビジュアルスタイル対応は、Theme Manager 使った方がいいのでは。
587 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:52:10 ] Windows XPでTurbo C++を使っているのですが、 TButtonのCaptionの色を変えるのに、次のようなコードでは変わりませんでした。 void __fastcall TForm1::Button1Click(TObject *Sender) { if (Button1->Caption == "blue") { Button1->Caption = "red"; Button1->Font->Color = clRed; } else { Button1->Caption = "blue"; Button1->Font->Color = clBlue; } } どうしたらいいんでしょうか? アドバイスよろしくお願いします。
588 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:56:41 ] TButtonのキャプションの文字色は変更できません。これはWindowsの仕様です。 もし文字色をシステムに従わないようにしたいのであれば、オーナドローでどうぞ。
589 名前:587 mailto:sage [2008/07/04(金) 23:06:41 ] >>588 迅速な回答ありがとうございます
590 名前:デフォルトの名無しさん [2008/07/06(日) 01:08:29 ] void __fastcall TfrmMain::Button1Click(TObject *Sender) { char *aaa; aaa = "jpg"; if(aaa == "jpg")Button1->Caption = "jpg"; } C言語の基本的なことだとはわかっているのですが・・・ これがtrueにならない理由って何でしょう? 基本的すぎるのか、文字列でググっても出てこないのはなぜー
591 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:18:27 ] >>590 void __fastcall TForm1::Button1Click(TObject *Sender) { char* aaa; char* bbb; aaa = "jpg"; bbb = "jpg"; ShowMessage(AnsiString().sprintf("aaa=%08X bbb=%08X", aaa, bbb)); }
592 名前:デフォルトの名無しさん [2008/07/06(日) 03:08:06 ] メモリ壊しまくりんぐ
593 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 04:34:54 ] リリースビルドならtrueになりそう
594 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 05:21:36 ] char* の大きさは4byteだから、 3文字突っ込むとちょうど4byte使用するから メモリは壊れないのではないのか。
595 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 05:24:50 ] operator ==(const char*, const char*) {} ができないのを今初めて知った(´・ω・`)
596 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 13:57:48 ] >>590 if ( strcmp( aaa,"jpg" )==0 ) とすればええんでないの? "jpg"ってすると、メモリのどっかに確保された4バイト('j','p','g',0)のアドレスを示す。 aaaに格納された"jpg"のアドレスと、ifで比較している"jpg"のアドレスが違うからfalseになる。
597 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 18:27:30 ] >>590 char* でやらないで AnsiString でやれば動く。
598 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:36:09 ] イベントハンドラを呼び出すとき、 Button1Click(Button1); Button1Click(Button2); Button1Click(Form1); のどれでも動くみたいですが、Senderには普通何を与えるのが正しいの? Senderの役割を教えてください。 //Form1上にButton1とButton2 void __fastcall TForm1::Button2Click(TObject *Sender) { Button1Click(Button2); }
599 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:54:20 ] Senderはイベント呼び出し元のTagやデータ読むのに使うから、そのイベントに関連づけたいオブジェクトを指定。 たとえば拡大ボタンと縮小ボタンがあって、それぞれにイベントハンドラ書くのはアホ臭いから void __fastcall TForm1::Button2Click(TObject *Sender) { int zoom; TButton* button = dynamic_cast<TButton*>(Sender); zoom = button->Tag; if (zoon == 1) 拡大(); else 縮小(); } こんな感じで使ったりする。 ハンドラ内でSender使わないならthisで十分。
600 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:14:17 ] >>599 ありがとうございます。
601 名前:デフォルトの名無しさん [2008/07/22(火) 14:35:51 ] WindowsXPでBCB6.0を使っています。 homepage2.nifty.com/spw/tips/GetIfTable.html 上記のサンプルプログラムを自分の環境で実行してみたのですが、以下のエラーが出てしまいます。 [リンカ エラー] 外部シンボル 'GetIfTable' が未解決(D:\ADDRESGET\UNIT1.OBJ が参照) ソースファイルをダウンロードして実行してみたところ、正常に動作したことから環境は間違って無いと思うのですが・・・。 インクルードファイルも同じにして、オプションのリンカやディレクトリ/条件も揃えてみましたがダメでした。 この場合、何を見たらよろしいのでしょうか? よろしくお願いします。
602 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 14:54:57 ] iphlpapi.libリンクしてないだろ。 bcb/lib/psdkにあるのプロジェクトに追加しる
603 名前:デフォルトの名無しさん [2008/07/22(火) 15:01:37 ] >>602 ・・・その通りでした。 インクルードで指定して、エラーも出ていないから必要無いと思い込んでました。 本当にありがとうございました。
604 名前:D [2008/07/22(火) 15:12:34 ] ☆ チン ハラヘッタ〜 ハラヘッタ〜 ☆ チン 〃 ∧_∧ ヽ___\(\・∀・) \_/ ⊂ ⊂_) / ̄ ̄ ̄ ̄ ̄ /| | ̄ ̄ ̄ ̄ ̄ ̄| | |淡路たまねぎ|/  ̄ ̄ ̄ ̄ ̄ ̄
605 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 15:38:51 ] >>603 コンパイルとリンクに違いについてもうちょっと勉強した方がいい
606 名前:デフォルトの名無しさん [2008/07/25(金) 03:16:38 ] 文字列の加工方法について質問です。 char chrBuf[1024]; AnsiString asBuf; strcpy(chrBuf,"123456"); strcpy(asBuf.c_str(),chrBuf); asBuf.Delete(3,3); Label1->Caption = asBuf.c_str(); これで、「126」と表示させたいのですが、実際には「123456」となってしまうのは何故でしょうか・・・? よろしくお願いします。
607 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 04:39:22 ] char chrBuf[1024]; AnsiString asBuf; strcpy(chrBuf,"123456"); asBuf = chrBuf; asBuf.Delete(3,3); Label1->Caption = asBuf; とやりたいの? Caption は AnsiString だから、AnsiString → char * → AnsiString っていう キャストが行われると思うんだけど、これはわざと? c_str() で確保されたメモリ空間の寿命は未確定。 コピー先として使うべきではない。
608 名前:デフォルトの名無しさん [2008/07/25(金) 10:30:26 ] >>607 AnsiStringを加工に使いたいのですが、挙動を理解しきれてないので・・・。 「homepage1.nifty.com/emil/ansistring.html 」で、 >char* c_str( ) >文字列をC言語の char* 文字列で返す。返すのはあくまでも char* 型のポインタであり、 >文字列のコピーが作られるわけではない。従って、受け取った char* 文字列を安全に操作したい場合は strcpy( ) などでコピーすると良い。 と、あるのでコピーしたのですが・・・解釈が違ったのかな? ポインタとして渡せば動作するのですね。 ありがとうございます。
609 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 10:35:12 ] >c_str( ) は、無理して使う必要は無い。 どうしても使わないといけないときは、AnsiStringとstd::stringの渡しくらい。 例えば、 AnsiString SBuf; string sBuf; のとき、 sBuf = SBuf.c_str(); SBuf = sBuf.c_str(); と書く。 それ以外は、「.c_str()」を書かなくても、多分演算子がオーバーロードされてて、簡単に代入できる。
610 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 13:51:01 ] >>608 解釈が違うと思う。 c_str() で得られたポインタから strcpy 等で 「自分で確保したメモリにコピーする」っていう意味。 そうすれば、自分で確保したメモリの寿命は自分で決められるから。 ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-016.html ↑も参照してみて。
611 名前:デフォルトの名無しさん [2008/07/25(金) 15:16:04 ] >>609-610 詳しい解説ありがとうございます。 入門書を見ると、「初心者はAnsiStringを使えば簡単」って書いてあるけど、実は取り扱いには注意しないといけないんですね。 暑くて頭があまり回っていませんが、がんばってみます。
612 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:20:45 ] >>611 基本的には常に AnsiString を使って、 API とのやりとりや、標準ライブラリの呼び出しだけに c_str() を使う、 って考え方が良いと思う。
613 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 15:48:01 ] >実は取り扱いには注意しないといけないんですね。 なことない。簡単。
614 名前:デフォルトの名無しさん [2008/07/25(金) 18:05:18 ] 今年買ったPCでTurboC++ Builder, WinXPでOpenGLに挑戦中なんですが, テクスチャについて質問があります。 今, 「C++ Builder 6 コンポーネント活用ガイド&実践プログラミング Vol.8 OopenGL プログラミング編」 の「53-2 Bitmap形式のファイルを利用する」のソースコードex19を試しています。 このex19で1枚のテクスチャにbmpファイルを貼り付けているんですが, サイズが 64*64, 128*128, 256*256ならうまくいくんですが, 512*512や1024*1024のbmpを利用しようとすると スタックオーバフローを検出して止まります。 これは, 256が4枚で512を表現したりするしかないのでしょうか? 512*512やそれ以上のサイズが使える解決方法をお願いします。
615 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:15:00 ] >>614 よくわからないけど、ファイル自体をスタックに積んでるのかねぇ? そんなコード見たことがないが。 その辺り調べてみた?
616 名前:デフォルトの名無しさん [2008/07/25(金) 18:37:34 ] 一様乱数を生成する関数のソースについて質問があります。y=1/sqrt(2)*exp(-1/2*x*x)の計算で In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom':: undefined reference to `exp'というエラーがでて実行できません。もちろん<math.h>は定義しました。 レポート課題なのでマジで困ってます。是非教えてください。ソースを下に載せておきます。ちなみにxが一様乱数で、yが正規乱数です。 double GaussRandom() { double x; double y; x=UniformRandom(); y=1/sqrt(2)*exp(-1/2*x*x); return y; } double UniformRandom() { double x; int r=1; r=1229*r+351750; x=r/1664501; return x; } }
617 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 18:48:29 ] GaussRandom()の前にUniformRandom()が定義されてないからじゃないの
618 名前:デフォルトの名無しさん [2008/07/25(金) 18:54:34 ] >>617 今入れ換えて実行してみたのですが駄目でした。
619 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 20:02:44 ] おかしいね、うちはそれコピペしただけの通るよ math.hのincludeがうまくできてないのかね
620 名前:デフォルトの名無しさん mailto:sage [2008/07/25(金) 21:11:48 ] マルチポストしまくりで解決済みなんでスルーでいいよ
621 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 21:04:15 ] >>615 スタックのサイズを大きくしたらいけました。ありがとうございます。
622 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 21:09:55 ] >>621 とりあえず載ってるコードがダメダメな気がするから自分で書き直すことをお奨めする
623 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 22:36:46 ] コンパイルするとError: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照 とでるのですが、理由がわかりません・・・。 どなたかわかる方お願いします。
624 名前:デフォルトの名無しさん [2008/07/27(日) 14:51:31 ] フォームに配置したTButtonのOnClickイベントを、 実際にボタンを押してではなく、あるメソッド内から呼び出したいのですが そういうことは可能ですか?
625 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:12:14 ] TButton::Click()があるじゃない
626 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 15:43:56 ] >>625 おかげさまで解決しました。 ありがとうございました。
627 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:16:52 ] おすすめのエディタ教えてください! 今までC言語を始めよう!というフリーソフトを使ってきました
628 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 22:17:48 ] >>627 スレ違い
629 名前:デフォルトの名無しさん mailto:sage [2008/07/27(日) 23:24:30 ] >>627 エディタ部分だけなら2006以降のエディタの方がいいかな ウィンドウ構成とかは6までのIDEのほうが好きだけど
630 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 15:25:09 ] C++Builder6からmecabを使いたいのですが、一週間以上格闘しても光が見えません(涙) mecabの初期化すら出来ない状態なので何かアドバイス頂ければ嬉しいです。 よろしくお願いします。
631 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:12:29 ] OpenProcessで使うPROCESS_ALLACCESSマクロだが、定義間違ってね? VCその他では #define PROCESS_ALL_ACCESS 0x001f0fff BCCでは #define PROCESS_ALL_ACCESS 0x001fffff になってる。 たぶん>>427 の問題もそのせい こういうバグってどこに報告すればいいん?
632 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:31:13 ] 普通に0x1F0FFFになってるが。 検証コードはprintf("%08X", PROCESS_ALL_ACCESS); 環境は6pro update4
633 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:37:38 ] winnt.h #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0xFFF) #define STANDARD_RIGHTS_REQUIRED (0x000F0000L) #define SYNCHRONIZE (0x00100000L) どう見ても 001f0fff だわな
634 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:38:59 ] おっと、手元のが古いだけか 駄レスすまそ
635 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:28:57 ] そういうところまで疑わなきゃいけないんだな、面倒な
636 名前:デフォルトの名無しさん [2008/08/09(土) 21:33:14 ] TEditにある数値を入力して、OnExitイベントで入力された数値を チェックしてますが、入力値が異常でも、フォーカスが次のTEdit にうつってしまいます。 よく考えれば当然といえば当然の結果なのですが、どうしても正常値 を入力するまでフォーカスを保持させたいのですが、行き詰ってしまい ました。 よい解決方法がないでしょうか。よろしくお願いします。
637 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:19:30 ] できるじゃん void __fastcall TForm1::Edit1Exit(TObject *Sender) { TEdit* edit = dynamic_cast<TEdit*>(Sender); if (edit->Text != AnsiString("aaa")) { edit->SetFocus(); } }
638 名前:デフォルトの名無しさん [2008/08/11(月) 15:43:16 ] ScanLineとRGBTRIPLEについて質問です。 ネットで調べると、ScanLineで取り込んだ配列はBGRの順番に入っているのでRGBTRIPLEに入れればよいとなっていたのですが、 実際に使ってみるとずれており、4番目の数値(中身は0)があるような感じでした。 BYTEが4つある配列に入れることで動作させましたが、以下の書き方は間違っているのでしょうか? int i,j; int RoopMax=100; // ループ回数 DynamicArray<RGBTRIPLE*> slbuf; slbuf.Length=RoopMax; for (i=0 ; i<RoopMax ; i++){ slbuf[i] = (RGBTRIPLE*)ColPos[Num]->Picture->Bitmap->ScanLine[i]; } for(i=0;i<RoopMax;i++){ for(j=0;j<RoopMax;j++){ Ra[i][j] = slbuf[i][j].rgbtRed; Ga[i][j] = slbuf[i][j].rgbtGreen; Ba[i][j] = slbuf[i][j].rgbtBlue; } }
639 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 15:56:51 ] >>638 ビットマップが24bitならBGRの3bytes、32bitならBGRAの4bytes。
640 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 15:58:52 ] あと、今のPCだと32bitのほうが一般に処理速度早くなるから注意。 24bitだとワード+バイト転送なのに対し、32bitはダブルワード1回ですむ
641 名前:デフォルトの名無しさん [2008/08/11(月) 16:07:26 ] >>639-640 なるほど、ビットマップの形式によって変わるので処理としては間違ってはいないんですね。 BGRAがあることに気づきませんでした。 ありがとうございます。
642 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 17:02:27 ] サブのスレッド(TThread)でTNotifyEventを発生させて、そのイベントによりメイン側の関数が実行されたとき メイン側のメンバ変数の内容が見えないのですが、どうすればいいのでしょうか。 エラーが出るのではなく、関係ない数値が入っているので、別の部分を参照しているみたいです 具体的には メイン側クラス(MainClass)、サブのスレッド(SubThread) MainClass内で AnsiString a; SubThread->hogeEvent = (TNotifyEvent)&hogeFunc; さらに void hogeFunc(TObject* Sender) { MessageBox(Handle , a.c_str() , "",MB_OK); } として、hogeEventを発生させたとき、メイン側で既に代入したaの内容が読み取れていない といった感じです。 よろしくお願いします。
643 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:46:54 ] 実行コンテキストを無視しちゃだめ。メインスレッドに属するコード部分はメインスレッドのコンテキストで 実行する。PostMessageとかSynchronizeとかを使う。
644 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:13:49 ] >>643 ありがとうございます。 TNotifyEvent fOnHoge; __property TNotifyEvent hogeEvent = {read=fOnHoge,write=fOnHoge}; void __fastcall TSubThread::evHoge(TObject* Sender) { if(hogeEvent){ hogeEvent(this); } として、サブスレッド内で Synchronize((TThreadMethod)&evHoge); を呼び出しても、解決しません。 このような書き方ではメインスレッドのコンテキストで実行されないのでしょうか。 2度も申し訳ありませんが、よろしくお願いします。
645 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 18:47:21 ] アホな質問をお許し下さい。 Unit1.cppにくっついてるフォームForm1(Unit1.dfm)のMemo1に Unit2.cppの処理から文字を入れたいときはどうすればよいでしょうか… VBっぽくForm1->Memo1->Lines->Add(a);みたいにしたら出来るかなーと思ったけど駄目でした Turbo C++を使っています。
646 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 18:48:37 ] Unit2.hppに#include "Unit1.hpp"
647 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 18:50:14 ] ファイル→ユニットヘッダーファイルの追加の方が楽か
648 名前:645 mailto:sage [2008/08/14(木) 19:10:20 ] おおお 出来ました。ありがとうございます!
649 名前:デフォルトの名無しさん [2008/08/17(日) 03:27:01 ] NI社のUSB-6008という製品を使ったことのある方はいますか? これを使用してみたいのですが、最初にどこから手をつけていいのかわからなくって・・・。 とりあえず、DLLのインポートライブラリを作成してみようと、nidaq32.dllを使用してみたのですが、 Error nidaq32.dll: unknown file type と、なってしまいます。 NI-DAQのバージョンは7.2 XPでBuilder6.0を使用しています。
650 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:43:53 ] それインポートライブラリが悪いか、nidaq32.dll にパスが通ってない、とか。
651 名前:デフォルトの名無しさん [2008/08/18(月) 01:24:22 ] nidaq32.dllがあるフォルダで、コマンドプロンプトから実行したのですが・・・ これってIMPLIBの使い方間違ってます?
652 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 20:02:18 ] #include <stdio.h> #include <System.hpp> #pragma link "vcl.lib" #pragma link "rtl.lib" int main() { wchar_t col_caption[256]; int width; int r0 = swscanf(L"知名性 (20)", L"%s (%d)", col_caption, &width); printf("> %s : %d (%d)", AnsiString(col_caption).c_str(), width, r0); } 上のコードの実行結果が期待する結果の > 知名性 : 20 (2) にならずに > 知 : 4 (1) となるのですがRTLのバグのほかになにか原因はありますでしょうか 環境はBCB6Pro#4、Win2kです。
653 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:01:04 ] setlocale
654 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:09:17 ] >setlocale これって何のライブラリになるんでしょ?C++標準?VCL? それを知らないと、#includeできないので。 あと、getlocaleってのもあるんでしょうか?
655 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:18:02 ] ついでですが、 localelist みたいな1式も取れるんでしょうか?
656 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:35:41 ] setlocaleはswscanfには関係ないと思うんですの。VC2005だとちゃんと動くし。 BCBでも他の文字列ではちゃんと動いてるし。
657 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 09:50:06 ] 確かにBCBヘルプに >Standard C++ Library: Class Reference >locale ってのがありますね。 これはクラスだからいろいろメソッド使えるかも。 でも、これで切り替えても、 AnsiToUtf8/Utf8ToAnsiのロケールとは無関係なんかなぁ。 あ〜、テストプログラム作れば良いんだが、通勤時の暑さのせいでしんどい。
658 名前:デフォルトの名無しさん [2008/08/19(火) 23:14:53 ] >>650 インポートライブラリが悪いって、どのような現象があるのでしょうか? BuilderのバージョンはBuild10.166ですが・・・
659 名前: ◆jButlJVlzY mailto:sage [2008/08/19(火) 23:16:05 ] #include <iostream> using namespace std; int op; char a,b,c,d,f; int main(){ cout>>"物語の始まり">>endl; /* char a ="起"; char b ="承"; char c ="転"; char d ="結"; char f ="おまけ"; */ cout << "1目次1ページ目 目次2ページ 目次3ページ 目次4ページ 目次5ペーじ おまけ" << flush; cin >> op; {
660 名前:デフォルトの名無しさん [2008/08/21(木) 02:12:21 ] すいません、どなたか>>658 についてわからないでしょうか。 正解でなくても、何か参考になるようなことでもいいので意見を下さい。 よろしくお願いします。
661 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 07:47:42 ] implib nidaq32.dll nidaq32.lib と引数の順番を間違って実行して、nidaq32.dllが壊れて、その後 implib nidaq32.lib nidaq32.dll と順番を直したけどnidaq32.dllは壊れてるからエラー、とか? 一応本家にbcc用のインポートライブラリがあるみたいだけど。 ↓の一番下のzip digital.ni.com/public.nsf/allkb/7793F4D8AFC47C1E86256E84005BBBE8
662 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 20:09:54 ] >>649 NIDAQmxのDLLはnicaiu.dll見たいだよ? NIDAQmxをインストールするとc:\WINDOWS\system32あたりにnicaiu.dllがあるはずだから >implib nicaiu nicaiu.dll でnicaiu.libを作ってリンクしてみたら?
663 名前:デフォルトの名無しさん [2008/08/22(金) 02:33:44 ] >>661 すいません、一度壊してました・・・orz >>662 NIDAQではなく、NIDAQmxを使うのですか!! ありがとうございます、やってみます。
664 名前:デフォルトの名無しさん [2008/08/27(水) 17:23:50 ] メインフォームのForm1と、 処理中ダイアログ用のForm2があって、 次のように使っています。 void __fastcall TForm1::ShowDialog() { Form2->Show(); for (i=0;i<100;i++) {... ;ProgressBar1->Position=i; ...} Form2->Hide(); } このForm2が前面に表示されている最中は、 Form1上にあるボタンをクリックしても OnClickイベントが発生しないようにしたい(無視したい)のですが、 どうしたらいいのでしょうか? Form2表示中にForm1上のボタンをクリックしたことによる処理が、 Form2が隠れた後に 実行されて困っています。 よろしくお願いします。
665 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 19:58:48 ] ShowModalでもしておけば?
666 名前:664 mailto:sage [2008/08/27(水) 20:39:55 ] >>665 ありがとうございます
667 名前:デフォルトの名無しさん [2008/08/28(木) 03:05:24 ] 8点ほど計測して、下の脳波測定のように境目をボカしたいのですが、何か良い方法はありますでしょうか? www.speedreading.co.jp/read/riron07.html 8つの円を描き、全体をぼかすように前後左右の平均を取るように処理してみたところ、何度もやるとものすごく時間がかかるので・・・。 ぼかし処理は下のものを使用しました。 gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=135
668 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:15:29 ] 全然ダウンロードできないのですが、今日だけの現象ですか? update.codegear.com/forms/jp_cpp_download_reg ここに何度登録したことか。。。。
669 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:34:00 ] now.eloqua.com/e/f2.aspx サーバーが見つかりません
670 名前:デフォルトの名無しさん [2008/08/31(日) 00:08:20 ] そうだね
671 名前:デフォルトの名無しさん [2008/09/06(土) 08:25:00 ] TurboC++ Professionalは、もうどこにも売ってないのですか?
672 名前:デフォルトの名無しさん [2008/09/06(土) 10:46:04 ] 初心者質問すいません 英単語の文字数を数えるにはどうすればいいですか?
673 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:52:49 ] AnsiString::Length()
674 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:57:35 ] C++とC#は別物ですか?
675 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:04:33 ] 別物
676 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:15:14 ] >>675 ありがとうございました。ここではC++という文字をよくみるのに本屋ではC#をよくみたので一緒かなと思いました ありがとうございました
677 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:27:47 ] 実は # は ++ ++ だったんだよ!
678 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:24:48 ] >>677 C++が一つ増えるなら、 C#は半分だけ増えるっていうイメージなんだけど。 それだと、2つも増えてるな。
679 名前:デフォルトの名無しさん [2008/09/07(日) 02:35:29 ] >>677 その発想は無かったわ
680 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:30:34 ] エクスプローラの「表示」→「縮小版」みたいに、複数の画像を サムネイル表示したいと思っています。 ttp://www2.ttcn.ne.jp/tkky/Tips/DrawGrid/drawgrid1.htm を参考にDrawGridを使って実現しようかと思っていたのですが、 DrawGridコンポーネント1個に対して, 1つの画像しか表示できないんでしょうか?
681 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 23:31:12 ] サムネイルはListView使っとけ
682 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:57:33 ] Buliderっていう名前が明らかにマッチョ男性専用ソフトですっていってるようで怖い。 アメリカ人は本当にマッチョが好きだよな。サンフランシスコ。
683 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 04:41:14 ] >>681 そうします。ありがとうございます
684 名前:680 mailto:sage [2008/09/09(火) 07:34:14 ] 追加の質問ですみません。 ListViewでサムネイル表示を試してみようと、 下の(1)〜(6)の手順でやってみたのですが、ビルド中に固まります。 アイコン画像サイズ256×256を越えているせいみたいなのですが, 表示されるサムネイルの画像サイズを320×240で表示するには、どうしたらいいんでしょうか? アドバイスよろしくお願いします。 ----- (1)Form1にImageList1を貼り付ける (2)オブジェクトインスペクタからImageList1のプロパティをWidth=320;Heiht=240;に変更 (3)ImageList1ダブルクリックして, 「追加」押して320×240の画像1枚を選択して「OK」押す (4)Form1にListView1を貼り付ける (5)オブジェクトインスペクタからListView1のLargeImagesプロパティでImageList1を指定 (6)オブジェクトインスペクタからListView1のItemsプロパティで「新規作成」押して「キャプション」にテストと入力して「OK」押す
685 名前:デフォルトの名無しさん [2008/09/22(月) 10:04:17 ] メニュー項目を設定する TMenuItemのCaptionにて 開く(&O)... と設定されますけど、 このピリオド3個の意味を教えてください。
686 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 12:43:51 ] 押すと他のウィンドウが開くって意味がほとんどじゃ?
687 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 20:03:06 ] >>685 ピリオドがないのは、処理がすぐ終わるけど ピリオドがあるのは、ダイアログが出るでしょ。 それだよ。
688 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 23:25:23 ] >>686 >>687 れすありがとうございます。 確かに...なのは、ダイアログが開く系ですね。 (& みたいな特別な機能がある訳ではなく WindowsのUIの作法みたいなものなのですね。 とても参考になりすた。
689 名前:デフォルトの名無しさん [2008/09/28(日) 23:08:48 ] 質問です。 TFontのStyleがSet という特別な型だったのですが 設定は、Font->Style << fsBold のようにすれば良いのはヘルプに記載があったのですが FontにfsBoldが設定されているかを調べる方法がわかりません。 どうすればいいのでしょうか。
690 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 23:34:45 ] if ( Font->Style.Contains(fsBold) )
691 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 23:45:56 ] >>690 できましたーーー。超ありがとうございます。
692 名前:デフォルトの名無しさん [2008/09/29(月) 23:49:18 ] いろんなほかのプログラムのボタンを押すプログラムを作るにはどうすればいいのでしょう? 具体的には mplayerの再生ボタンや巻き戻しボタンを押したり、mediaplayerの再生ボタンを押したり その他新しいプログラムの再生ボタンを簡単に登録して押せるようなそんなプログラムを くみたいのですが。
693 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 00:17:51 ] ウィンドウハンドル持ってるコントロールならBN_CLICKEDをPostすればいいじゃない。 メニューバーから操作できる機能なら、コマンドIDをメニューリソース見るか、SPY++やWinspectorでコマンドID調べてWM_COMMANDでPostすればいい。 どっちもだめならSendInputでがんばるしかない。
694 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 00:18:33 ] 簡単に説明すると、ウインドウを列挙して、中の再生ボタンのハンドルを取る。 ハンドルが取れれば、APIでごにょごにょできるでしょ。 あとはがんばれ。
695 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 10:50:39 ] あぁ!そっか、難しく考えすぎてた。 ありがとうございます。
696 名前:デフォルトの名無しさん [2008/09/30(火) 20:54:22 ] 質問です。 リストボックスにD&Dでリストボックスにファイルパスを表示する プログラムをどうすれば言いか教えていただけないでしょうか?
697 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:04:17 ] をぃ、日本語が不自由な奴よ。 マルチポストはルール違反だぜよ。
698 名前:デフォルトの名無しさん mailto:sage [2008/09/30(火) 22:44:16 ] >696 "C++Builder" ファイル ドラッグアンドドロップ でぐぐれ
699 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:15:22 ] test
700 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:19:19 ] ごめんなさい、プロバイダが規制くらってたのでtest書き込みしてしまいました。 質問なんですが、フォームを使ってアプリを作っており、 デバッグで配列の中身や変数を見たく、printfなんかでコンソールに表示させたいのですが 何か方法はありますか? インスペクタ?みたいなのはどうも使いにくくて・・・ ちなみに、C++Builder6を使ってます
701 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 00:32:28 ] これでどうでしょ? ttp://msdn.microsoft.com/ja-jp/library/cc428973.aspx でもIDEのデバッガ機能をちゃんと勉強して使ったほうが楽だと思うけどね。
702 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 01:08:53 ] >>700 AllocConsole()でコンソールが開きます。コンソールのハンドルをGetStdHandle( STD_OUTPUT_HANDLE )で取得したら SetConsoleTextAttribute()とWriteConsole()で好きな文章を色つきで出力できます。 printf() っぽく使うならこんな感じ #include <stdio.h> int __stdcall con_printf( const CHAR* Format, ... ) { const int nLengthMax = 1024; int nLength = 0; HANDLE hConsole = ::GetStdHandle( STD_OUTPUT_HANDLE ); if( hConsole != INVALID_HANDLE_VALUE ){ CHAR Message[ nLengthMax ]; va_list List; va_start( List, Format ); nLength = vsnprintf( Message, nLengthMax - 1, Format, List ); va_end( List ); DWORD dwLengthWritten; ::WriteConsole( hConsole, Message, (DWORD)nLength, &dwLengthWritten, NULL ); } return( nLength ); } IDEが入ってない環境とかで使えるよ。
703 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 02:04:16 ] _open_osfhandle()とかdup2()とかを組み合わせれば 普通にそのままのprintfが使えるようになるんじゃないかね。 知らないけど。
704 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 02:44:28 ] IDEでデバッグしてるならOutputDebugString使えばイベントウィンドウに出力されるぞ
705 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 10:34:03 ] 複数のフォームを持ったアプリを作っています。 メインフォームの初期化ルーチン(FormCreateとか)から他のフォームの初期化ルーチンを呼び出したいが、 それがまだ生成されていないのでエラーになるというケースが多くて困っています。 全てのフォームが生成された後で一括して初期化を行いたいという時にはどうすればよいのでしょうか? どなたか教えて下さい。
706 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:02:22 ] メインフォームのコンストラクタで他のフォームnewすれば?
707 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 12:46:22 ] >>700 解決したかも知れないけど、 TMemo 貼って Add で俺はやってる。
708 名前:デフォルトの名無しさん [2008/10/02(木) 17:46:19 ] コンパイルした時に作成される実行ファイルの名前を、プログラム側で変更することってできます? #ifdefで二種類作るので、間違えないようにしたいのですが・・・
709 名前:700 mailto:sage [2008/10/02(木) 18:59:26 ] なるほど、色んなやり方があるんですね。 しかしこのスレ非常にやさしいw ありがとうございました〜、色々とやってみて合うもの見つけてみます
710 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 19:43:14 ] >>708 #pragma optionでできないものリストに「-efilename」が書かれてるから無理 objファイルならできるけど。
711 名前:デフォルトの名無しさん [2008/10/02(木) 19:56:58 ] >>710 無理なんですか、了解です。 ありがとうございました。
712 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:00:24 ] >>711 makefileで分けるといい
713 名前:705 mailto:sage [2008/10/03(金) 17:03:11 ] >>706 どうもありがとうございます。やってみます。
714 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 00:02:21 ] TwebBrowserで表示したページのセレクトボックスを変更したりボタンを押したりしたいのですが、参考になるページが見つからず途方に暮れています(他の言語は多少あるのですが・・・) 他の言語のを真似して WebBrowser1->Document->All->GetElementsByName("hoge")[0]->selectedindex = 0; ※hogeは表示するページのソースをみて名前を調べました などとしたのですが、「AllはIdispatchのメンバーではない」とエラーが出ます・・・ どんな書き方をすればよいのでしょうか
715 名前:デフォルトの名無しさん mailto:sage [2008/10/17(金) 04:28:58 ] たぶん中身をIHTMDocument2とかにして触るんじゃないかな。 昔触ったのを見たら IHTMLDocument2Ptr doc; doc = browser->Document; IHTMLElementPtr body = doc->body; とかやってた。 IHTMLDocument2Ptrとして使うには、MSHTMLかなんかをimportだかする必要があったと思うけど。
716 名前:デフォルトの名無しさん [2008/10/19(日) 04:31:46 ] Imageに貼り付けた四角の画像を台形とかに変形させることはできますか?
717 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 04:18:55 ] できる
718 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 16:48:53 ] できるよ
719 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 15:03:10 ] AnsiStringsの中に何も入っていない場合、c_str()で比較してチェックすることはできますか? if(c_str()=="")やif(c_str()==NULL)と書いても素通りしますよね。 Lengthが0かどうかでチェックをしているので問題は無いのですが、気になったのでよろしくお願いします。
720 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 16:20:53 ] IsEmpty()
721 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 17:14:13 ] 素通りっつーのはよく分からんが、そもそも「if(c_str()=="")やif(c_str()==NULL)」って書き方おかしくね? c_str使うんならstrcmpとか使おうぜ。 AnsiStringとchar型文字列の比較なら普通に==で良いとも思うけどな。
722 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 17:56:44 ] >>720 専用の関数があったんですね、ありがとうございます。 >>721 素通りというのは""やNULLで比較しても、何か文字が入っているような動きをしていたものですから。 まだAnsiStringを理解してないかもです。 strcmpも使ってみたのですが、動きは同じだったので・・・。 ところで、フォルダ名をチェックするのに最後に\がついているかを見て、無かったら\を付けたいのですが、 これってどうやればいいんでしょう? AnsiLastCharで拾おうとしてのですが、うまくいかないので、よろしくお願いします。
723 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 18:11:14 ] IncludeTrailingBackslash()
724 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 19:05:07 ] >>723 処理してくれる関数があったんですね。 ありがとうございます。
725 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 20:18:52 ] IncludeTrailingPathDelimiterがあればそちらを使うのが望ましい。
726 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 15:47:30 ] Imageを2枚重ねて、下に写真、上に色を塗るようにしています。 上のImageに半透明や透明色を塗ることってできるのでしょうか? 半透明で調べてもフォームやボタンはあるのですが・・・。 すいませんが、どなたか方法を教えて頂けないでしょうか。
727 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 16:24:39 ] 実際には透明色や半透明色ってのはないからなぁ。アルファブレンド?
728 名前:デフォルトの名無しさん [2008/10/25(土) 19:16:29 ] 計算した数字をEdit1,Edit2,Edit3に出したのですが、 それをMemo1にすべて書き出しExcelで読み込んだときにA欄B欄C欄と分けて出したいのですが いったいどのようにすればいいんでしょうか? Edit1->Text=a; Edit2->Text=b; Edit3->Text=c; Memo1->Lines->Strings[0]=a; Memo1->Lines->Strings[1]=b; Memo1->Lines->Strings[2]=c; 今こんな感じで書いてるのですが全然わかりません・・ どなたかよろしければアドバイスお願いします。
729 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:10:23 ] コンマ区切りにすればいいってことじゃなくて?
730 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 13:45:41 ] >>729 あ、コンマ区切りで数列を出せばExcelでは枠別に表示されるんですね ありがとうございます! よろしければどなたかコンマ区切りでEdit1から3までの数字を一つのMemo1に出す 方法を教えていただけないでしょうか
731 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 14:20:40 ] void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Lines->Add(AnsiString().sprintf("%s,%s,%s", Edit1->Text, Edit2->Text, Edit3->Text)); }
732 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 15:03:38 ] BCBで使えるRS-232Cコンポーネントで安定しているのってありますでしょうか? 現在はHmCommを使用しているのですが、USB-232C変換器が物によって正常に通信できたりタイミングがずれたりするので、 別の物を試してみたいのですが・・・良い物がありましたら紹介してください。 よろしくお願いします。
733 名前:デフォルトの名無しさん [2008/10/26(日) 18:23:25 ] TMemoryStream* ms=new TMemoryStream(); char *mTop=(char*)(ms->Memory); char *mEnd=pTop+(ms->Size); と記述すると W8072 問題のあるポインタ演算 という警告が出ます。 警告の出ない正しい記述方法を教えてください。
734 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 22:51:08 ] ms->Sizeの型が__int64だからintにキャストすれば出ないよ
735 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 23:19:32 ] >>732 ttp://www.geocities.jp/in_subaru/erslib/index-erslib16.html これ使ってごらん。 コンポーネントじゃないけど、ヘッダファイルだけで動作する。 初期化に2行、出し入れに数行、後始末に1行ぐらい書けばいいので PICとやり取りするのに簡単だから使ってる。 でも、USBのシリアル変換機はもともと不安定だからなぁ・・・。
736 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 00:15:44 ] >>734 解決しました。ありがとうございます。
737 名前:732 mailto:sage [2008/10/27(月) 00:45:44 ] >>735 ありがとうございます。 シンプルで良さそうですね。 ちょっと使ってみます。 ノートPCが前提なので、USBのシリアル変換機を使用して安定してないといけないんです・・・。
738 名前:デフォルトの名無しさん [2008/10/27(月) 15:18:20 ] A, B, C, D, E, 00:00, f, g, h, i, j, k, l, A1, B1,C1,D1,E1, 00:00, f1, g1, h1, i1, j1, k1, l1, A2, B2,C2,D2,E2, 00:00, f2, g2, h2, i2, j2, k2, l2, というコンマ区切りの何百行のデータがあり、j(1.2.3・・・)の部分だけ読み込みたいのですが どういう風にやればいいですか。よろしくお願いします。
739 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 15:37:37 ] >>726 写真ともう一枚の32bppなTBitmap用意、アルファブレンドしてTImageに転送するしかないと思う。 アルファチャンネル扱えるTBitmap継承クラスも何種類か公開されてるから難しい物じゃない。 写真じゃないほうにペイントするとかだったら、TImageのイベントで取ったストロークの情報でペイント描画用のTBitmapに描けばいいだけだし。 >>738 ただのCSVファイルじゃん(・ε・)
740 名前:738 [2008/10/27(月) 15:48:54 ] 少し説明不足でしたが、テキストで読み込んでMemoに表示させたいのです。
741 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:06:44 ] >>738 要するに 00:00 を取り除くって事?
742 名前:738 [2008/10/27(月) 16:10:52 ] >>741 j(1.2.3・・・)の部分だけをmemoに表示させたいのです。
743 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:13:33 ] >>j(1.2.3・・・) の意味がわからん
744 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:14:48 ] Memoに j1, j2, j3 とかって表示させたいの?
745 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:19:37 ] だからcsvファイル扱うクラス書いて、各行から11列目の値をTMemoに突っ込めばいいだけじゃ‥‥
746 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:24:14 ] こういうの見るとBCB2009でregex使いたくなるな
747 名前:738 [2008/10/27(月) 16:33:42 ] はい。 Memo1 j j1 j2 j3 ・ ・ な感じで。
748 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:40:05 ] >>738 そんなん単に先頭からカンマを10こ読み飛ばせばいいだけじゃん。 strXXX系の関数使うまでもなく。 とみんな思うんだろうけど、暇だったのでVCLのヘルプみてみた。 TStrings::DelimiterとTStrings::DelimitedTextなんてものがあるのな。 TStringList* Data = new TStringList; Data->Delimiter = ','; Data->DelimitedText = "aa,bb,cc,dd,ee"; Caption = Data->Strings[3]; // ddが表示される ただしBCB5以前は無理かもしれない。あしからず。
749 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:49:38 ] こんなんとか。 void __fastcall TForm1::Button1Click(TObject *Sender) { std::ifstream ifs("File1.txt"); std::string str, s2; if (!ifs) { Memo1->Lines->Add("File1 not found."); } while (std::getline(ifs, str)) { std::string::size_type pos = str.find('j'), pos2; if (pos != std::string::npos) { s2 = "j"; if (pos < str.size() && (pos2 = str.find(',', pos)) != std::string::npos) { s2 += str.substr(pos + 1, pos2 - pos - 1); } Memo1->Lines->Add(AnsiString(s2.c_str())); } } }
750 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 16:58:54 ] くだスレが役に立ってry
751 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 17:36:22 ] ないってことか
752 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 14:44:59 ] すいません、プログラム上でスクロールバーが動いたことにするには、どのようにすればよいのでしょうか? Positionの値を変えるのでは無く、マウスで操作した時の動きをさせたいのですが・・・。
753 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 15:28:27 ] イベント呼べばいいんでないの?
754 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 15:58:04 ] イベントは、呼ばれるものじゃねえのか。 イベントはさすがに呼べねえだろ。
755 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:56:44 ] 自分でOnChange呼べつったんだ馬鹿かお前
756 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:21:13 ] >>755 Are you a big baka ? スクロールした結果、OnChange()が発生するのであって OnChange()を自前で呼んでも無意味じゃん。
757 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:25:37 ] もも・・・ しかして>>755 は OnChange()を呼べばスクロールが発生するとでも思っているのかぁ プププ
758 名前:755 mailto:sage [2008/10/28(火) 19:00:09 ] 私のために争うのはもうやめてっ プログラム上からイベントを発生させる方法ってあります?
759 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 19:06:50 ] 自分宛にメッセージ投げればいいと思うよ
760 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 23:13:14 ] >>755 嘘はいかんな
761 名前:752 mailto:sage [2008/10/29(水) 02:51:14 ] 名前間違えた、こっちだ どうやってやればいいんでしょう・・・?
762 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 01:22:01 ] 標準のボタンの背景や形を変えることってできますか? BitBtnは画像を配置すると文字が消えてしまうので、他に何か方法は無いでしょうか? よろしくお願いします。
763 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 15:51:47 ] >>762 起動時bitbtnにするDIBにフォントを使って字を書いてしまえばいいじゃないかw 元の画像は普通のボタンから抜くなりなんなりすればいいジャマイカ そしてそれをフリーで後悔すれば…. と思う前に誰かすでに作ってないかとかおもってググ…
764 名前:デフォルトの名無しさん [2008/11/01(土) 15:52:23 ] 同じフォルダにあるテキストデータA001〜A020を同時に読み込んで その中の計算を行いそれを50個またテキストデータとして保存したいのですが テキストデータを同時に読む込むプログラムとそしてそれを同時に書き出す方法が どうしてもわかりません。よければアドバイスお願いします。
765 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 17:32:46 ] いちどきに読み込むことや書き出すことはできてもどうじに読んだり書き出したりするのは非常に困難です
766 名前:デフォルトの名無しさん [2008/11/01(土) 18:48:32 ] >>765 すみません、説明不足だったようです。 同時にではなくたとえばA001〜020で読み込む場合にfor文などで回して 自動ですべてを順に読み込み書き出すようにしたいのです
767 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 20:10:09 ] >>766 for文で回して順に読み込み書き出しすればいいと思うよ と思ったが「同じフォルダにあるテキストデータ」ってファイルのこと? ならファイルを順繰りに読んで希望のファイルだけ読み込み書き出しすれば良いんじゃないかね
768 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 20:51:35 ] TStringList使っとけ
769 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 23:37:20 ] 具体的に何をする方法がわからんのか そのへんが全然わからんから エスパーじゃないから 答えようがねえなぁ 文章から類推すると、何もかもまったくわからんようにしか見えんが。
770 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 13:55:50 ] 教えてください。 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { progressBar1->Maximum = shikou_kaisu; /* 最大値 */ progressBar1->Visible = true; label8->Text = "処理中"; label8->ForeColor = System::Drawing::Color::Red; for(i=0; i<shikou_kaisu; i++){ rnd(kibou_kosu); //自作関数呼び出し Sleep(1); } }; このようにshikou_kaisuには10000を入れていまして、1万回のループに入る前に プログレスバーを出し、label8の文字色を赤にし、処理中と書き換えているのですが どちらとも(プログレスバーもlabel書き換えも)for文が終了したあとに処理されてしまいます。 なぜでしょうか?
771 名前:デフォルトの名無しさん mailto:age [2008/11/02(日) 14:03:05 ] 連投すみません。 あともう一つ教えてください。 出力ウィンドウに、テスト的に変数の値などを表示させたいのですが、 Console::WriteLine("aaa"); などとしてもまったく表示されません。何か方法はありますでしょうか? よろしくお願いします。
772 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 14:27:08 ] >>770 誤爆? ここは、 くだすれC++Builder(超初心者用)その3
773 名前:デフォルトの名無しさん mailto:sage [2008/11/02(日) 14:57:22 ] >>772 すみません。間違えました><
774 名前:デフォルトの名無しさん [2008/11/03(月) 18:05:44 ] 読み込みと保存について質問なんですが バイナリ形式のファイル読み込んで、その内容を同じファイル名でテキスト形式に置き換えて保存したいのですが それを手動保存するのではなく自動で同じファイルネームでそのフォルダ内に生成されるプログラムを作りたいのですがどのようにすればよいのでしょうか
775 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:49:03 ] >>774 スレ違い C/C++の宿題を片付けます 117代目 pc11.2ch.net/test/read.cgi/tech/1225320579/ こっちだな
776 名前:デフォルトの名無しさん mailto:save [2008/11/03(月) 18:55:33 ] >>775 すいません、これをSaveDialogやOpenDialogなどを用いてc++builderで 実行しなくてはいけないのですが読み込んだファイルを同じ名前のテキスト形式で自動生成する保存の方法を教えていただけないでしょうか
777 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 19:46:17 ] >>776 君の質問に回答できる奴はエスパー
778 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 20:06:21 ] そんな事できません バイナリの中身が構造体だったり、浮動小数点と整数が 交互に書かれていたりする時どうやって判別するのですか? コンピュータから見るとどちらもただの0と1の羅列ですよ?
779 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 04:10:55 ] 00010111000 とかをテキストで保存するんだろ。
780 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 12:41:53 ] それはファイルダンプじゃん。
781 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 13:44:41 ] 失礼します。 OpenDialogを使用して、指定したフォルダからファイルを読み込みたいのですが、 最初の動作ではInitialDirに指定フォルダ名が入っているのにも関わらず、デフォルトのフォルダが表示されてしまいます。 再起動しても変わりません。 でも、他の動作で指定フォルダを開くと、最初のOpenDialogも指定フォルダを開けるようになります。 フォルダ名を指定した後、確定させる方法があるのでしょうか? よろしくお願いします。 if(FolderTXT.IsEmpty()){ // フォルダ指定無し OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName)+"DATA"; }else{ OpenDialog1->InitialDir = FolderTXT+"DATA"; } // フォルダオープン if(OpenDialog1->Execute()){ if(FileExists(OpenDialog1->FileName)){ fn=OpenDialog1->FileName; } } ※FolderTXTにフォルダ名が入っています。
782 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 14:14:42 ] Execute()する前に DirectoryExists(OpenDialog1->InitialDir) してみい falseが返ってくるからさ
783 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 14:41:37 ] そうじゃなくて FileNameにフルパスでいれときゃいい
784 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 15:16:55 ] >>782 はい、falseでした。 一度動くようになると、PCを再起動してもtrueですね・・・。 なぜでしょう? >>783 汚い書き方ですが、 OpenDialog1->FileName = OpenDialog1->InitialDir; をExecute()の前に置いたら動作しました。 Execute()で最初に開くフォルダはFileNameのフォルダで、InitialDirでは無いってことでよろしいでしょうか?
785 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 17:13:51 ] さっさと教えてくださいよ。グズは嫌いですよ。 こっちも忙しいんだから早くして下さいね。
786 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 23:57:41 ] >>784 >一度動くようになると パスが通ってるから。 想定される状況で通るように場合分けしたら? フォルダを開くという概念がどうもね。
787 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 17:01:27 ] ShowMessage()で表示したメッセージを 指定時間後に自動的に閉じることって可能でしょうか? 可能であればどうすればいいのでしょうか?
788 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 17:24:43 ] 根性
789 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 17:47:09 ] >>787 TSplashForm
790 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 23:35:09 ] タイマーで閉じればいいじゃん。
791 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 00:16:07 ] タイマーイベントを設定して Close(); Release(); で閉じれるね
792 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 02:51:27 ] Delphi/C++Builderにはスプラッシュウィンドウが用意されてなかったっけ?
793 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:17:33 ] VC++には昔っからあるのにね。 ってか、大麻付きダイアログを作ればいいだけだけど。
794 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:38:46 ] 面倒くさい。とか言ってる奴がBCB使うわけで。
795 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 09:41:38 ] あるある
796 名前:デフォルトの名無しさん [2008/11/10(月) 16:04:46 ] for (int I = 1; I <=9 ; I++){ pass = ID +"0"+IntToStr(I); fp = fopen(pass.c_str(), "rb" ); fread(data,2,10,fp); fclose(fp); } と途中まで作ったのですが、この9個の読み込んだ配列データ(data)を9個別々に A1〜A9(AnsiString)で格納したいのですがやりかたがわからないのでアドバイスください。 A1にはID01の読み込んだ配列データ・・・A9にはID09の配列データです。
797 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 16:16:55 ] AnsiStringの配列じゃダメなのか?
798 名前:796 [2008/11/10(月) 16:25:20 ] >>797 AnsiStringでいいです。別のところでそれぞれの配列を使って計算したいので。。 どういう風に書けば9個格納できるでしょうか。
799 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 16:36:03 ] AnsiStringの配列でいいじゃないかw
800 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 16:46:49 ] 普通に配列使おうぜ? char wk[128]; AnsiString A[10]; for (int I = 1; I <=9 ; I++){ pass = ID +"0"+IntToStr(I); fp = fopen(pass.c_str(), "rb" ); fread(wk,2,10,fp); fclose(fp); A[i] = wk; }
801 名前:796 [2008/11/10(月) 17:26:07 ] >>800 うまくいきません。 Memo1->Lines->Add(A1)で確認してみたのですがうまく読み込めていませんでした。 読み込むファイルが数百行というのは関係あるのでしょうか。 A1 = 1回目に読み込んだ配列 A2 ・・・ という感じでやりたいのですが。。。 とりあえずがんばってやってみます。
802 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:35:33 ] >>801 んじゃさ、TStringList使えばいいんでないの? TStringList *sl = TStringList(); sl->LoadFromFile("ファイル名""); for( int i = 0; i < sl->Count; i ++ ){ aa = sl->Strings[i]; } こんな感じでどうよ?
803 名前:デフォルトの名無しさん [2008/11/10(月) 17:59:23 ] Memoに表示された20行の数字をkekkaに入れたくて AnsiString kekka; for(int I=0;I<20; I++){ kekka = Memo1->Lines->Strings[I]; } という風に試したのですがMemo1に表示させてある内容と違う値が出てしまいました。 わからないのでアドバイスください。
804 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:44:15 ] >>803 kekkaは一つしか無いでしょ。 Memo1->Lines->Stringis[I]は20個あるでしょ。 20回ループまわしてもkekkaは一つしか無いでしょ。
805 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:28:51 ] >>803 っていうか俺のTStringListは無視か!! それにkekkaを配列にすりゃいいって最初に言っただろう!
806 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 14:56:40 ] 頭の中だけでなんとなく考えてるんだろうなぁ・・・ それで出来るようになるのってちゃんとしたプログラムがいくつも書けるようになってからだろうに。 クラス図とかメモリマップとか妄想絵図とか、何でもいいからソースコード以外の何かで書いてみたら 自分がどこに引っかかってるのか分かるような気がする。
807 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 19:02:06 ] プログラミングに限らず、段取りをすっ飛ばした想像しか出来ない奴っているからな。
808 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 21:27:18 ] んだんだ。 妄想を紙に書いてみると 自分のアホさが よくわかる。
809 名前:デフォルトの名無しさん [2008/11/13(木) 10:39:08 ] 非常に今更な感があるけど出来たら教えて欲しいことが・・・ ・BCB5 ・複数のカラム追加したListViewを設置 ・上記カラムの1つはAutoSize このListViewにデータを流し込んだ時に後から発生した 縦スクロールバー分の幅が自動調整されないんだけど これを自動調整するには何がベストなんでしょうか? 今は仕方なくデータを流し込んだ後にListViewの幅を -1 >> +1として調整してます
810 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 10:58:48 ] 何で調整したいんだ? ListViewの幅か?カラムか?
811 名前:デフォルトの名無しさん [2008/11/13(木) 11:53:38 ] カラムの方 右端が発生したスクロールバーで隠れるのよ・・・
812 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 10:51:35 ] TListView::OnInsertでTListView::ClientWidth読んで調整すればいいんじゃない?
813 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 12:48:11 ] C++B 6をつかっています。 ・やりたいこと クライアントアプリ(C++B)からPostgreSQLへ接続したい。 ・やったこと 1.Windows版 Postgres8.2.6(日本語版)をインストール (インストールのさいC開発モジュールも一緒にインストールしました) 2.インストールされたlibpq.dllを使って、impdll libpq-bc.lib libpq.dll 3.できたlibpq-bc.libをアプリフォルダへコピー 4.Postgresのincludeフォルダにある、libpq-fe.hをアプリフォルダへコピー 5.プロジェクトの追加から、libpq-bc.libを追加。 6.myapp.hに #include "libpq-fe.h" 7.myapp.cppで、とりあえず接続テスト PQconnectdbを実行 コンパイルすると [リンカ エラー] 外部シンボル '_PQconnectdb' が未解決(略\APPLICATION\MYAPP.OBJ が参照) と出て、うまくいきません。 足りない操作、間違った操作をやっていたら教えてください。 お願いします。
814 名前:デフォルトの名無しさん [2008/11/17(月) 15:35:15 ] ”バリアントの型変換が不正です”って出たのですがどういうときに出るんですか?
815 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:39:13 ] バリアントの型変換が不正な時に出るんだろうよ
816 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:56:25 ] バリアントの型変換が不正な時に出るんだよ
817 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 15:59:29 ] バリアントの型変換が不正な時に出るんよ
818 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:00:01 ] バリアントの型変換が不正な時に出るよ
819 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:19:59 ] バリウム飲んだから白いうんこが出るんだよ
820 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:25:56 ] お前らあんまり荒らすな プログラム板がID制になってもいいのか
821 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:28:33 ] >ID制 大賛成
822 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:29:03 ] ごみん
823 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 16:46:11 ] 大貧民
824 名前:814 [2008/11/17(月) 19:14:13 ] ありがとうございます。解決しました
825 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 19:24:18 ] むしろID制にしてくれ
826 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 00:41:26 ] むしろBe強制に
827 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 10:17:08 ] むしろ実名が表示されちゃうでいいよもう
828 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 10:32:49 ] 実名が表示されたら俺が超紳士なことがバレちゃうじゃないかやめろ
829 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 10:47:53 ] んじゃ(仮名)てつけば問題ないよな
830 名前:811 [2008/11/18(火) 16:14:59 ] >>812 変化するイベントで自分で再設定すれば出来るのは知っているんですが コンポーネントのサイズ変更を行えば自動でやってくれる以上 なんとかそれを直接行えないかなと思ってるんですか・・・
831 名前:デフォルトの名無しさん [2008/11/21(金) 18:14:21 ] memo1にcsv形式で書き出したのですがコンマ区切りで2列目の配列と4列目の配列だけをCommaTextなどを使って最後まで 読み込みA1とA2にTStringlistとして格納したいのですが格納したいのですがどのようなプログラムにすればよいのでしょうか。 0001, -2.06167, -719.351, EEE 0002, -2.05553, -710.148, RRR 0003, -2.04654, -698.637, EEE 0004, -2.04326, -689.907, RRR ・ ・ ・ 1499, -2.03713, -678.463, RRR 1500, -2.03099, -667.071, RRR このような感じの配列で1500行並んでいます。
832 名前:デフォルトの名無しさん mailto:sage [2008/11/21(金) 18:24:18 ] どういう風に格納したいんだ
833 名前:デフォルトの名無しさん [2008/11/21(金) 18:34:24 ] 2番目の列だけの格納をx 4番目の列だけの格納をyとしたときに Memo2にLoadFromfileなどでxを書き出すと -2.06167 -2.05553 -2.04654 -2.04326 ・ ・ yを書き出すと EEE RRR EEE RRR (空白の場合もあるのでそれも一行として数える) ・ ・ ・ などといった具合にxとyに格納したいのです。 TStringといいましたが格納の仕方がそれだけしかしらないので AnsiStringなどでもできるのでしたらどちらかアドバイスお願いします。
834 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 19:34:06 ] memo1に自分で書き出しているのなら、あとふたつTStringListを用意しておいて、memo1に各行を出力する裏で同時に書き込めばいいんじゃないの? for( int i = 0; i < 1500; i++ ){ memo1->Lines->Add( 1行分のcsv文字列 ); x->Add( 2列目の情報 ); y->Add( 4列目の情報 ); } どうしてもmemo1の内容を再利用するしかないなら項目分離用TStringListを用意して TStringList* Values; Values->Delimiter = ','; for( int i = 0; i < 1500; i++ ){ Values->DelimitedText = memo1->Lines->Strings[ i ]; x->Add( Values->Strings[ 1 ] ); //2列目の情報 y->Add( Values->Strings[ 3 ] ); //4列目の情報 }
835 名前:デフォルトの名無しさん [2008/11/23(日) 17:20:19 ] >>834 遅くなってしまってすいません、そして説明不足でした・・・。 できればMemo1の内容を再利用したいのですが、c++builderのバージョンが5なので Delimiterが使えないようなのです・・・ お手数ですがDelimitedText以外での表し方を教えていただけないでしょうか。
836 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 18:50:25 ] じゃあこんなかんじで TStringList* Values; for( int i = 0; i < 1500; i++ ){ Values->CommaText = memo1->Lines->Strings[ i ]; x->Add( Values->Strings[ 1 ].Trim() ); //2列目の情報 y->Add( Values->Strings[ 3 ].Trim() ); //4列目の情報 }
837 名前:デフォルトの名無しさん [2008/11/23(日) 19:30:27 ] >>836 返信ありがとうございます. おっしゃられたようにButton1にこのように付け加えてMemo2とMemo3に書き出すようにしたいのですが Memo1に排出されたあとボタンを押すと読み込み違反が起こってしまいます。 これは何が原因となってるんでしょうか Memo2と3に書き出すプログラムは後から付け加えたものなので それ以前のところでエラーが起こっているようです。 TStringList* Values; TStringList* x; TStringList* y; for( int i = 0; i<Memo1->Lines->Count; i++ ){ //1500行のみとは限らない場合があるため Values->CommaText = Memo1->Lines->Strings[ i ]; x->Add( Values->Strings[ 1 ].Trim() ); y->Add( Values->Strings[ 3 ].Trim() ); Memo2->Lines->AddStrings(x); Memo3->Lines->AddStrings(y); }
838 名前:デフォルトの名無しさん mailto:sage [2008/11/23(日) 20:05:59 ] ちゃんと Values、x、y は new して使ってる? TStringList* Values = new TStringList; 使用後 delete Values;
839 名前:デフォルトの名無しさん [2008/11/24(月) 19:39:22 ] new TStringListは入れてませんでした。ありがとうございます。 { TStringList* Values = new TStringList; TStringList* x = new TStringList; TStringList* y = new TStringList; for( int i = 0; i<Memo1->Lines->Count; i++ ){ Values->CommaText = Memo1->Lines->Strings[ i ]; x->Add( Values->Strings[ 1 ].Trim() ); y->Add( Values->Strings[ 3 ].Trim() ); Memo2->Lines->AddStrings(x); Memo3->Lines->AddStrings(y); delete Values; delete x; delete y; } } このような形でやってみて読み込み違反は回避できたのですが、次はリストの インデックスは範囲を超えていますといわれてしまいます。 CSV形式なのですがコンマの後、数字の桁数を合わせようと半角スペースもついてしまっており それまで読み込んでいるので、それが原因だとは思うのですが.Trim()がついているので 実際何が原因なのかわからない状況です; またEEE,RRRのところは空行であるときもありその際にはスペースがつけられているのですが そこをEEE,RRRだけでなく同じ行数文だけスペースも含め格納したいのですが、これは無理でしょうか?
840 名前:デフォルトの名無しさん [2008/11/24(月) 19:53:32 ] 0001, -2.06167, -719.351, EEE 0002, -2.05553, -710.148, RRR 0003, -2.04654, -698.637, EEE 0004, -2.04326, -689.907, RRR 0005, -2.04440, -898.545, 0006, -2,03434, -434.434, EEE 0007, -2,67665, -775,443, 0008, -2.34443, -566,886, RRR ・ ・ ・ 実際このような感じのCSV形式の配列で格納したい配列は xに yに -2.06167 EEE -2.05553 RRR -2.04654 EEE -2.04326 RRR -2.04440 (空行) -2,03434 EEE -2,67665 (空行) -2.34443 RRR ・ ・ ・ ・ ・ ・ このようにTStringで格納していきたいのです。 無理難題を言ってしまいすいません。
841 名前:デフォルトの名無しさん [2008/11/24(月) 19:55:12 ] delete の位置は何度も変えてみましたが結果は同じでした。 もしよろしければアドバイスお願いします。
842 名前:デフォルトの名無しさん mailto:sage [2008/11/25(火) 00:27:26 ] >>839 試行錯誤中のコードだろうけど、どうみても一度しかnewしていない変数を ループ中で何度もdeleteするのがおかしいことに気付かないとまずいよ。 Memo2にxをAddStringsするのもループを抜けてからじゃないと、 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,…みたいに行の登録が重複する。 Memo1が1500行だとMemo2、Memo3は(Σk=n(n+1)/2になるので)1125750行になってしまうよ。 それだけ大きいとTMemoコンポーネントのメモリ制限に引っかかってるんじゃないかな? てかMemo2、Memo3が最初からあるのならx、yなんて不要。直接入れればいい。 4つめがEEEでもRRRでもなく空の時にスペース三つ出力したいなら this->Memo2->Lines->Clear(); this->Memo3->Lines->Clear(); TStringList* Values = new TStringList; AnsiString asSpacer = " "; //スペース三つ for( int i = 0; i < Memo1->Lines->Count; i++ ){ Values->CommaText = Memo1->Lines->Strings[ i ]; this->Memo2->Lines->Add( Values->Strings[ 1 ].Trim() ); AnsiString as4thValue = Values->Strings[ 3 ].Trim(); this->Memo3->Lines->Add( as4thValue.IsEmpty() ? asSpacer : as4thValue ); } delete Values; あと >>840 で出ているデータが本物のデータからのコピーなら、ピリオドとカンマが 入力ミスで混ざってて、自動で正しく分離する事は無理。
843 名前:デフォルトの名無しさん [2008/11/28(金) 02:16:31 ] 32BitのBitmapへ色を塗る時、アルファチャンネルの指定はどのように行えばよろしいのでしょうか? TColorは24bit専用なのでしょうか?完全な白の時は透過になるのですが、それ以外は全く透過しません。 色によって透過度を変えたいのですが、上手くいかないのが現状です。 PixelFormatで32bitの指定はしているのですが・・・。 すいませんがよろしくお願いします。
844 名前:デフォルトの名無しさん [2008/11/28(金) 11:26:00 ] 教えてください。 BDS2006を使っています。 ファイルの数が多くなってきたので ヘッダファイルを、header1.hというファイルにまとめて #include "Main.h" #include "About.h" ・・・ という感じに記述して .cppファイルの方には、 #include header1.h と記述するようにしました。 このように変更してから、 再構築を行い、プログラムを実行し バージョン情報を表示すると、EClassNotFound TImageが見つかりませんというエラーがたまに出るようになりました。 About.cppをコンパイルし直すと正常に動作します。 他のクラスでも同じように、エラーが発生し再コンパイルすると正常になることがあります。 どうしてこのようなことが発生し、どうすれば回避できるのでしょうか。 ヘッダをまとめて1個のファイルにしてしまうのはダメなのでしょうか。
845 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 14:26:15 ] 一度プリコンパイルヘッダ消せ
846 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 15:43:04 ] いいやお前が消えろ!
847 名前:デフォルトの名無しさん mailto:sage [2008/11/28(金) 15:49:08 ] ヒント:あらしはスルーwww
848 名前:デフォルトの名無しさん [2008/11/29(土) 01:55:44 ] すいません、どなたか>>843 にも答えていただけないでしょうか。
849 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 09:34:25 ] ファイルのサイズを取得したくて TSearchRecのSize変数から取ったのですが、 ファイルサイズが大きいと戻り値がマイナスになってしまいます。 大きいファイルサイズでも正確に取得するには どうすればいいのでしょうか。
850 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:20:56 ] APIのFindFirstFile、GetFileSize、GetFileSizeEx
851 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:22:52 ] もしくはバージョンうp。今はTSearchRecのSizeは__int64になってるらしいので。
852 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:33:20 ] TSearchRec.FindData.nFileSizeHigh TSearchRec.FindData.nFileSizeLow
853 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 10:34:58 ] あ、そうか。失礼。
854 名前:デフォルトの名無しさん mailto:sage [2008/11/29(土) 17:44:27 ] >>848 これで行けるはずなんだが・・・うーんわからん void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* bt = new Graphics::TBitmap; BLENDFUNCTION blend = {AC_SRC_OVER, 0, 100, 0}; TCanvas* ti = Image1->Canvas; RGBQUAD rgbq; bt->Width = 256; bt->Height = 256; bt->PixelFormat = pf32bit; for (int i = 0; i < 255; i++) { int* sc = reinterpret_cast<int*>(bt->ScanLine[i]); for (int j = 0; j < 255; j++) { rgbq.rgbBlue = i; rgbq.rgbGreen = j; sc[j] = reinterpret_cast<int&>(rgbq); } } BOOL RESULT = ::AlphaBlend(ti->Handle, 0, 0, Image1->Width, Image1->Height, bt->Handle, 0, 0, bt->Width, bt->Height, blend); if (RESULT == FALSE) { Application->MessageBox(L"失敗!", L"", MB_OK); } delete bt; }
855 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 00:35:28 ] >>843 Win32スレで聞いているうちにバグの原因がわかったので、 AlphaBlend per Pixelのプログラムを貼っておきます。 void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap* bt = new Graphics::TBitmap; BLENDFUNCTION blend = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA}; TImage* ti = Image1; RGBQUAD rgbq; bt->Width = 256; bt->Height = 256; bt->PixelFormat = pf32bit; int k = 0; for (int i = 0; i < 255; i++, k++) { int* sc = reinterpret_cast<int*>(bt->ScanLine[i]); for (int j = 0; j < 255; j++) { rgbq.rgbBlue = i; rgbq.rgbGreen = j; rgbq.rgbRed = 0; rgbq.rgbReserved = k; sc[j] = reinterpret_cast<int&>(rgbq); } } BOOL RESULT = ::AlphaBlend(ti->Canvas->Handle, 0, 0, ti->Width, ti->Height, bt->Canvas->Handle, 0, 0, bt->Width, bt->Height, blend); int err = GetLastError(); const wchar_t* str = WideString().sprintf(L"失敗!%d", err).c_bstr();
856 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 00:36:10 ] if (RESULT == FALSE) { Application->NormalizeTopMosts(); Application->MessageBox(str, L"AlphaBlend()でエラーが起きました", MB_OK); Application->RestoreTopMosts(); } delete bt; }
857 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 00:42:59 ] 補足ですが、rgbq.rgbReserved must be zero.とMSDNには書いて ありますが、これがまさにアルファ値そのものです。 ですからここにアルファ値をセットしてAlphaBlend()を呼び出せば、 期待通りの結果が得られます。 もちろんPixelFormatはpf32bitでなければなりません。
858 名前:843 mailto:sage [2008/11/30(日) 19:35:36 ] >>855-857 丁寧にありがとうございます。 WideStringのところでひっかかったり、AlphaBlendが見つからなかったり(wingdi.hをインクルードするだけじゃダメなのかな?)していてまだ確認できていませんが、 いろいろ調べてやってみます。 ありがとうございました。
859 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 20:26:46 ] >>858 BCB6だと、AlphaBlend()やTransparentBlt()使うときインポートライブラリ作らないといけないよ。 implib.exe msimg32.lib msimg32.dll でインポートライブラリを作り tlib.exe lib\import32.lib + msimg32.lib 上記dll内のAPIをimport32.libに追加 これでいつでもAlphaBlend()が使えるはず。(BCB5以前ならネットからAlphaBlend()の関数定義もコピって来る) >>855 は多分BCB2009にあわせてユニコード使ってるだけなので、BCB2007以前ならWideStringの代わりにAnsiString使えばいいよ。
860 名前:843 mailto:sage [2008/11/30(日) 21:16:16 ] >>859 はい、BCB6を使用しています。 CBuilder6\Lib\Psdkに同名のファイルがあるので、パスが通っていれば良いのかと思っていました。 インポートライブラリを作成したところ、動作しました。 ありがとうございます。 ところで実行結果ですが、これでよろしいのでしょうか? www3.uploda.org/uporg1823015.jpg.html rgbq.rgbReserved = k;の部分で透明度が変わるはず・・・ですよね? ti->Transparent = true; ti->Canvas->Brush->Style = bsClear; を入れてみてもダメでした。
861 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:14:10 ] >>860 それで合っています。 どうしても疑問に思われるなら、rgbq.rgbReservedにいろんなアルファ値(0〜255) を入れてやってみて下さい。
862 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:16:02 ] 例えばrgbq.rgbReserved = 100; にしたりすると 明らかに実行結果が変わります。 あとこういうグラデーション画面ではなくて、画像のbitmapを 使うとよくわかります。
863 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:21:09 ] ti->Canvas->Brush->Color = clRed; ti->Canvas->FillRect(Rect(0, 0, 255, 255)); こんな感じでImageコントロールを赤色で塗りつぶしてから AlphaBlend()を掛けるとよく効果がわかります。 デフォルトでは白色ですからわかりにくいと思います。
864 名前:843 mailto:sage [2008/11/30(日) 22:38:05 ] すいません、やっと理解できました。 ひとつのImageで二つの画像を重ね合わせるのですね。 これを二つのImageで行うことは不可能でしょうか? 下の画像に、上のImageを透明〜半透明色で塗った物を重ねたかったので。 Formをアルファブレンドした場合、全体を均一に同じ透明度で半透明になってしまいますよね?
865 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:46:24 ] >>864 AlphaBlend()に与えるパラメータBLENFUNCTIONの最後のパラメータが 0だと、3つ目のパラメータが全体に与える透過度になります。 しかし今回はピクセル毎に透過度を指定する方法を敢えて選んでいます。 そちらのやり方を欲しておられるように読めたので。 その時は3番目のパラメータを255に、4番目のパラメータをAC_SRC_ALPHA にして、rgbReservedにピクセル毎のアルファ値を入れる事になるのは説明 した通りです。 もし上のImageを透明〜半透明色で塗った物を合成したいのならば、二回 AlphaBlend()を呼び出さなければなりません。
866 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 22:48:04 ] と言うのも、AlphaBlend()関数はソースのアルファ値しか参考にしない ようになっているからです。MSDNをよく読んで見て下さい。 つまり上の画像を別の単色の画像か何かでアルファブレンド、次いで その画像を下の画像とアルファブレンド、という二段階になります。
867 名前:843 mailto:sage [2008/12/01(月) 00:48:02 ] 上の画像に模様をつけて、それをさらにマウスで変形させようとするとすっごく大変なことになりそうですね。 ありがとうございましたー。
868 名前:デフォルトの名無しさん [2008/12/04(木) 17:03:59 ] >>842 アドバイスありがとうございます!そして返事が遅れて本当にすいません; これでやってみたのですが2列目の情報はMemo2に書き出すことができたのですが 4列目の情報を書き出そうとするとなぜかエラーがでてしまい。リストのインデックスが範囲を超えていますとでてしまいます。 原因がどうしてもわからず、困っています。 何かよい書き出し方法はもしくは格納方法はないでしょうか? 当方C++builder5を使用しています。 格納方法もしくは書き出し方法はEEEやRRRがないときは元のテキストのようにスペースとして一行あけて 書き出したいのですがどなたかよろしければアドバイスお願いします。
869 名前:843 mailto:sage [2008/12/05(金) 19:42:25 ] たびたびすいません。 >>855 に>>863 を加えたのですが rgbq.rgbReserved = k; のkを0にすると、以下のようになりますよね。 www2.uploda.org/uporg1833847.jpg.html 透過度を0にすれば上にかかる色は消えますが、色の濃さは残るようで赤色にグラデーションがかかってしまいます。 濃さも消すことはできないのでしょうか?
870 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 20:02:48 ] >>868 「4つめがEEEでもRRRでもなく空の時」って「Values->Strings[ 3 ]」が生成されないってことはないよな? ブレイクポイント貼るかステップ実行するかして、どのリストからどんな風にはみ出してるのかデバッガ使って変数の値見ておいで。
871 名前:843 mailto:sage [2008/12/05(金) 22:13:17 ] >>869 ですが、自己解決しました
872 名前:デフォルトの名無しさん [2008/12/20(土) 20:13:43 ] memo1 memo2 5.6 0 6.1 0 6.1 0 7.2 ← 0 10 1 9.0 1 10 1 4.0 1 7.5 ← 0 5.9 0 5.4 0 5.5 0 5.4 ← 0 10 1 10 1 4.5 1 5.2 ← 0 6.1 0 ・ ・ ・ ・ ・ ・ このようにMemo1とMemo2に書き出されており0は正常値、1はエラー値でそれに対応する値が左の数字です。 1が出た場合前後の0の値から線形補間をしていきたいのですがどのように組んでいけばよいのでしょうか 上記の場合であれば(7.2と7.5の間で線形補間、5.4と5.2の間で線形補間)といった感じです。
873 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:16:46 ] memo2 の値が 1 なら前後に 0 を検索して 0 があったらその値とそこまでの距離を使って 線形補完すればよろし。 ところで端に 1 があった場合はどうすんの?
874 名前:デフォルトの名無しさん [2008/12/20(土) 20:19:20 ] AnsiString A,B; int s,u; u = 0; for( int i = 0;i<Memo2->Lines->Count; i++ ){ if(Memo2->Lines->Strings[i] == '1'){ A = Memo2->Lines->Strings[i-1]; s = StrToInt(i); u = StrToInt(i); while(Memo2->Lines->Strings[u] == 0){ u++; } }
875 名前:デフォルトの名無しさん [2008/12/20(土) 20:20:31 ] B = Memo1->Lines->Strings[u]; for(int X = s; X< u+1; X++){ Memo1->Lines->Strings[X] = (B - A)/(u+1) * X + A; Memo2->Lines->Strings[X] = 0; } u = 0; } このような感じで組んでみたのですが線形補間もうまくできておらず、 エラーが起こる場合もあります、よろしければアドバイスお願いします
876 名前:デフォルトの名無しさん [2008/12/20(土) 20:22:45 ] >>873 返信ありがとうございます。 その場合は手動で0が端にくるようにしたいと思います。
877 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:23:24 ] >>873 memo1 のデータを保存する必要がないなら、 memo1 のデータをあらかじめ補間した値ですげ替えておけば良い。 メモリに余裕があるなら、memo1 とは別にそういうテーブルを用意してもいい。 最初に一気に補間すると時間がかかるなら無理かもしれないが。
878 名前:デフォルトの名無しさん [2008/12/20(土) 20:26:01 ] すいません、バージョンはc++builder5です。
879 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:34:28 ] memo1 を書き換えたのでいいのね。 文字列を引き算したり A に Memo2 の値を入れたり 整数を StrToInt したり '0' じゃなくて 0 と比較してたり X の範囲がおかしかったり 線形補間の分母がおかしかったり おかしいところがありすぎて困っちゃう。 あと、今はまあいいんだけど、 最終的には補間後に i を補間の終了した地点にまで移動させた方が効率がいい。
880 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:35:26 ] こういうことが起こるのも、変数名が 1 文字で分かりにくいからってのはあると思うぜ。 変数名は分かりやすい意味のある名前をつけよう。
881 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 21:39:53 ] >>879 >>880 返信、アドバイスありがとうございます>< プログラム知識も浅く見様見真似で作ったのでこんな形になってしまいました・・ おかしい言われたところも自分ではどのようにして変えていけばよいのかわからず 困り果てています。 線形補間をしてmemo1に書き換えるにはどのようにプログラムを組めばよいでしょうか・・
882 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 22:08:35 ] こっちもどうアドバイスしていいのかわからんレベルなんだが…。 とりあえず考え方として Memoから値を文字列→数値に変換して配列とかvectorに格納する 数値に必要に応じて線形補完する 数値を文字列に変換してMemoに格納する というように、やるべきことを自分が理解できるところまで分解してみてはいかが? 自分で理解できないものを作ることはできないんだし。
883 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 07:27:35 ] Memoとかコントロールに入っている値を取りだしてどうこうしてまた 戻す操作は一般に遅いので>>882 さんみたいにvectorに入れる など考えた方がいいよ
884 名前:デフォルトの名無しさん [2008/12/21(日) 16:35:08 ] vectorの格納とはいったいどういうものなんでしょうか? 今日調べていたのですが使い方もわからずじまいでした; 動作速度は遅くてもよいので具体的にこのように memo1とmemo2を見比べてエラー値のあった部分は前後の0(正常値)から 線形補間していきmemo3のように線形補間された配列を書き出すプログラムを作りたいのですが どのように書いていけばよいのでしょうか? お手数ですがよろしくお願いします。 memo1 memo2 memo3 5.6 0 5.6 6.1 0 6.1 6.1 0 6.1 7.2 ← 0 7.2 10 1 7.26 9.0 1 7.32 10 1 7.38 4.0 1 7.44 7.5 ← 0 7.5 5.9 0 5.9 5.4 0 5.4 5.5 0 5.5 5.4 ← 0 5.4 10 1 5.35 10 1 5.3 4.5 1 5.25 5.2 ← 0 5.2 6.1 0 6.2 ・ ・ ・ ・ ・ ・
885 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:30:23 ] 身近に聞ける人はいないのん? そりゃ答え教える事はできるけど・・・ 今後もずっと聞き続けるのん? って話だしなあ。
886 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:32:06 ] C++には型ってものがあってだな、ってところから説明が必要なのか? Vectorがわからないなら配列でいいんで、せめてそのくらいは勉強しようね。 で、丸投げならそういうスレにいってもらうとして、そうでなければ、 あなたが同じことをやるとしたらどうやってそれを実現するのか、を手順として 分解していって、それをプログラムとしてコーディングする、という手順で。 とりあえず文字列は数値計算できないものなので、これを一旦doubleにして、 計算して、終わったら文字列に戻す…てなふうに。
887 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:54:17 ] こういう単純な変換をするなら、 スクリプト言語使った方が楽だと思うんだがね。
888 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:58:26 ] >>884 とりあえずアルゴリズム云々以前ぽいけど、BCBに因る問題だけは説明。 Memo2->Lines->Strings[ i ] は文字ではなく文字列なので Memo2->Lines->Strings[ i ] == '1' や Memo2->Line->Strings[ i ] == 0 ではいけない。 比較するのなら Memo2->Line->Strings[ i ] == "1" とする。 Memo1のデータは数字に見えても実際は文字列なのでそのままでは計算できない。 なので一旦 ToDouble() メソッドを使って小数型にする。 (AnsiString::ToInt() や StrToInt() では整数になるので 5.4 とかは 5 に切り上げられてしまう) ※例として Memo1 の値を半分にして Memo3 に格納。 Memo3->lines->Add( Memo1->Lines->Strings[ i ].ToDouble() / 2.0 );
889 名前:デフォルトの名無しさん [2008/12/22(月) 16:18:17 ] TDateTime と COleDateTime って、 double 値として見れば等価ですか?
890 名前:884 [2008/12/22(月) 18:25:02 ] for( int i = 0;i<Memo2->Lines->Count; i++ ){ if(Memo2->Lines->Strings[i] == "1"){ c = i; while(Memo2->Lines->Strings[c] == "0"){ c++; } Memo3->Lines->Add(c-i); for(int x = i; x<c; x++){ Memo2->Lines->Strings[x] = 0; } c = 0; } } 線形補間をする上でエラー値の1がどれだけ続くのかを調べるために 上の方法でやってみたのですがうまくいかないのです。(常にcとiの値が同じで0になってしまう) どこに問題があるのかアドバイスの方よろしくお願いします。
891 名前:デフォルトの名無しさん [2008/12/29(月) 18:17:29 ] プログラム内でA1,A2,A3,A4,A5,B1,B2,B3,B4,B5,C1,C2,C3,C4,C5 に計算した値が入っていて、 Memo1 A1,A2,A3,A4,A5 B1,B2,B3,B4,B5 C1,C2,C3,C4,C5 というCSV形式でMemo1出力したいのですがどういう風に書けばいいですか?
892 名前:デフォルトの名無しさん mailto:sage [2008/12/29(月) 19:23:03 ] 1個ずつ出力して下さい。 ループが欲しけりゃ配列にして下さい。
893 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 13:15:46 ] TBitBtnやTToolBarで使えるビットマップデータはどこで入手できますか? インストールされたフォルダを探してもサンプル用のがちょっとあるだけだし、 いちいち作るの大変だし…
894 名前:デフォルトの名無しさん [2009/01/06(火) 23:25:37 ] C++Builder 2009 のトライアル版を使い始めたのですが、 良い関連書籍は無いでしょうか?初心者向けの。。。 今日ヨドバシに行ったのですが、VC++の本ばかりで、 C++Builder関連は3冊くらい(応用編のような感じ)しかありませんでした。
895 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 09:19:24 ] Delphiの本と開発者ガイドで大抵は事足りる。
896 名前:デフォルトの名無しさん [2009/01/12(月) 21:25:18 ] ユーザーが商品コードを入力(Edit1)して検索ボタン(Button1)を押したら、 商品名(Label1)を表示したいのですが、 ACCESSのDLookupのような命令はどう書けば良いでしょうか?
897 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:51:53 ] また>>896 みたいな阿呆が沸いてきたな 情報を小出しにするのはヤメレ
898 名前:896 [2009/01/12(月) 23:50:12 ] >>897 阿呆な質問だったみたいですいません。 サーバーにあるMySQLの商品テーブル接続まではうまく行って、 テストで特定のEdit欄に商品名を表示することまでは出来たのです。 で次は、Editに商品コードを入力して検索ボタンを押したら、 Labelに該当する商品名を表示させたいと思ったんですが、そこが うまくいかなくて。 TADOConnectionコンポーネントでADO接続。 TADOTableで商品テーブルと接続。 TDataSourceを配置。 IF文で、Text1のコードで商品テーブルの商品コードを検索し、 該当のコードがあればそのレコードの商品名を返せば良い。 というのはわかるんですが。 コンポーネント活用ガイド&実践プログラミング〈Vol.3〉データベーステクニック編 を読みながら書いても、2009版ではエラーが出てしまって。 全然解決しないもので、困ってました。
899 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 14:42:37 ] エラーと漠然と書かれても、コンパイルエラーなのか実行時エラーなのかもわからんし、 答えようもない。
900 名前:896 mailto:sage [2009/01/13(火) 19:41:05 ] すいません。 Lookupで自己解決しました。
901 名前:デフォルトの名無しさん [2009/01/14(水) 16:06:50 ] 計算をしたとき算出した小数の値が8.4345356554E248のようにEを含んだ値になってしまうのですが これをEを含ませず、また答えとして小数点6桁程度に抑えたいのですがどのようにすればよいのでしょうか? 上記の答えは double A;で宣言したときになったものでfloat A;で宣言するとオーバーフローとエラーがでてしまいます。
902 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:25:58 ] >>901 ひとまずグーグル先生に「書式 sprintf」と聞いてみたらいいと思うよ。
903 名前:デフォルトの名無しさん [2009/01/14(水) 18:12:23 ] >>902 返信ありがとうございます。 サイトでは何度も確認していたのですが、c++builderでは下のように書き出しており %●●という形で小数点の値を6桁と指定して残りを切り捨てという形に仕方はどうしてもわかりません。 宣言文の箇所で小数点の桁数の指定、またEなど数字以外のものを使用させないようにすることはできないでしょうか? 基本的なことなのかもしれませんがどうしてもわかりません; double A; ---(計算)---- Memo1->Lines->Add(A); このような感じです
904 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:26:04 ] >>903 www9.plala.or.jp/sgwr-t/c/sec05.html
905 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:27:03 ] >>903 ひとまずグーグル先生に「書式 sprintf」と聞いてみたらいいと思うよ。
906 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:58:37 ] >>903 Memo1->Lines->Add(AnsiString.sprintf("自分で考えてね", A)); って書けばいいよ。
907 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 02:14:20 ] 手元に環境が無いため、曖昧な質問ですいません。 日本語環境(XP SP3&BCB6)で作成したものを英語版のWindowsXPで実行すると、表示がおかしくなるようなことってありますか? Imageの中の表示がおかしいだけでなく、コンポーネントの配置や大きさもずれていたりします。 表示等に2byte文字は使っていないつもりです。 グラボとかの問題でもこのようなことは発生することってありますか? よろしくお願いします。
908 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 17:27:03 ] >>907 設計時のフォームのフォントのCharsetが気になるな。 フォームのコンストラクタでthis->Font = Screen->IconFont;して 表示崩れ直るか確認してみたら?(ParentFont=trueの状態で)
909 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:49:09 ] >>908 返事ありがとうございます。 this->Fontでは表示は崩れませんでした。 ただ、CharsetはシフトJISになっていました。 これによって位置がずれたりするのでしょうか?
910 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 16:21:09 ] >>909 charsetが影響するよ。実行時環境のcharsetが特定できないなら、 好みのフォント設定後、this->Font->Charset = Screen->Font->Charset でいいんじゃないかな。 英語XPでも、言語オプションの非ユニコードアプリを何語と解釈するかを「日本語」に セットすることで日本語XPと同じ表示にできるよ(フォントがインストールされていれば)
911 名前:デフォルトの名無しさん [2009/01/26(月) 16:04:21 ] アプリを起動するときvcl60.bplが見つからない。のエラーが出るときは、 「共有RTL DLLを使う」のチェックを外してコンパイルすると vcl60.bplをいっしょに配布しないで良いですが、 hoge.dllファイルを配布しない方法はないでしょうか? ttp://me.me.tokushima-u.ac.jp/~miw/H8/pukiwiki/index.php?BCB%A4%C7%A4%CEDLL%A4%CE%BB%C8%A4%A4%CA%FD このページ見ると、静的、動的どちらにしてもプログラムの見えるところに dllファイルを置かないとだめなようですが。
912 名前:デフォルトの名無しさん [2009/01/26(月) 16:37:23 ] hoge.dllはあなた独自のdllだから一緒に配布しちゃえばいいんでないの
913 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:07:32 ] >>912 レスありがとうございます。 ttp://www.gesource.jp/programming/bcb/22.html こういうページもあったのでやってみましたが、dllが同じフォルダにないと 起動したときにエラーでちゃいます。 できるのはbuilderのライブラリだけですか。 いろいろ検索してるとgccのページが出てくるんですが、 静的リンクでコンパイルするとサイズが大きくなると書いてあったので てっきり実行ファイルの中にライブラリが埋め込まれる感じで ライブラリが要らなくなるものだと思いました。 静的ライブラリも動的ライブラリもいっしょに配らないとだめで、 ロードされるタイミングだけなんですね。
914 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:43:42 ] 自作でDLLを作成して呼び出すようにしたのが悪いんだろ DLLも全部一緒くたに中に書いてしまえ
915 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:45:34 ] もしかしてスタティックリンクライブラリとDLLの区別がついてないんじゃないか
916 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:46:35 ] ていうか、DLLのソースorOMF形式のobjまたはlib(インポートライブラリじゃなくてスタティックリンクライブラリのほう)はないのか? それがあるならプロジェクトにobjやlib放り込めばDLLいらないんだが。
917 名前:911 mailto:sage [2009/01/26(月) 18:32:24 ] >>914-916 レスありがとうございます。 >インポートライブラリじゃなくてスタティックリンクライブラリのほう なるほど、検索すると出てきました。拡張子が同じでも本物と ちょっと違うのがあって、implibで作ったのはインポートライブラリ。 スタティックリンクライブラリを作ってやってみます。
918 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 19:59:45 ] リストボックスに入りきらない場合、水平スクロールバーを出したいのですが、どのように設定したらよいのでしょうか?
919 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 22:31:42 ] LB_SETHORIZONTALEXTENT
920 名前:デフォルトの名無しさん [2009/02/19(木) 11:52:00 ] c++builderって指名ユーザーライセンスという形態を取っているみたいですが、 自宅用に買ったc++builderを会社のマシンに(もちろん使うのは自分のみ) インストールして使うのは有りなんでしょうか?
921 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 12:06:50 ] >>920 ありでしょ。 不安なら問い合わせてみれば?
922 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:42:32 ] アカデミックからスタンダードにライセンスをアップグレードすることって出来ますか?