くだすれC++Builder(超初心者用)その3at TECH
くだすれC++Builder(超初心者用)その3 - 暇つぶし2ch2:デフォルトの名無しさん
07/02/12 03:40:19
<関連スレ> 
【Turbo】Borland Developer Studio 2006 No.11
スレリンク(tech板)l50

C++Builder相談室 Part17
スレリンク(tech板)l50

【Delphi】 Indyコンポーネント 【C++Builder】 
スレリンク(tech板)l50 

タダで使えるBorland C++ Part5
スレリンク(tech板)l50

Boostを語れゴラァ part3
スレリンク(tech板)l50

スレを勃てるまでもないC/C++の質問はここで
スレリンク(tech板)l50

【C++】STL(Standard Template Library)相談室 6
スレリンク(tech板)l50

3:デフォルトの名無しさん
07/02/14 11:53:41
実行ファイル名ってプロジェクトの名前以外に変更できますか?

4:デフォルトの名無しさん
07/02/19 02:11:15
去年までDelphiユーザだった。

DelphiではusesにMathとか追加していくけど、BCBではどこに(#include <Math.hpp> を)書けばいいですか。
.h に書くのか、.cppに書くのか。.cppなら、#pragma hdrstopの前か後に書くのか、定石を教えてください。

5:デフォルトの名無しさん
07/02/26 13:25:58
age

6:デフォルトの名無しさん
07/02/26 15:27:44
>>3
ヒント:エクスプローラー、名前の変更

7:デフォルトの名無しさん
07/02/28 07:12:16
OutputDebugStringで、イベントログを
見る方法は検索できましたが、
GUIアプリで作ったとき、printfの標準出力を
見ることは、できないのでしょうか?

8:デフォルトの名無しさん
07/02/28 17:05:31
C99には対応していますか?

9:デフォルトの名無しさん
07/03/01 17:51:47
済みません、
フォーム上で画像ビュアの様なカタログ?形式のを
作ろうと思っているのですが
TImage等をプログラム上で
自分で作って並べていく事は出来るのでしょうか?
宜しくお願いいたしますm(__)m


10:デフォルトの名無しさん
07/03/01 17:55:57
TImage *Image = new TImage(this);

Image->Parent = Panel1; //パネルの上に置く



11:デフォルトの名無しさん
07/03/01 18:07:15
有り難う御座います
やってみますm(__)m


12:デフォルトの名無しさん
07/03/04 22:42:03
かんたんプログラミングC++Builder」という本に載っているカードゲーム
のコードを本に倣って一から打ち込んでるんですが、メインフォームでカ
ードの表示位置とかを決めるところまでは終って、次に敵というか、コン
ピュータ側のクラスを定義する為にユニットを新規作成してそこに敵のク
ラスを定義することになってるので、hファイルにデータメンバーを定義
とメソッドの宣言をして、最後にメソッドの定義をcppのほうに書いたんだ
けど、実行しても該当するメソッドが未解決というエラーがでて実行でき
ないんですが、どうすれば良いのでしょうか?
いろいろ試したけど、敵のクラスを定義したユニットのcppのほうは一切チ
ェックされてないのでメソッドの定義書こうが何書こうが一切関係ない状
態になってます。

13:デフォルトの名無しさん
07/03/05 02:13:26
>>12

 *.cppがプロジェクトに登録されていない
 メソッドを呼出すソースファイルで*.hをインクルードしていない

この二つを確認

遠い昔にその本で勉強したことがある
たしか誤植が数箇所あった
そのままだと動かないソースファイルが1つあったはず
>>12氏が引っかかってるのがそこかどうかはわからないが

14:デフォルトの名無しさん
07/03/05 13:12:00
CreateProcessで、コマンド実行すると、Dos窓が一瞬表示されるんですが、
表示されない方法ってないでしょうか?

15:12
07/03/05 19:25:41
>>13
ご指摘のとおり、cppがプロジェクトに登録されていませんでした。
あと、やはりこの本は誤植が多くて、今回の部分で云えば件のcppで
定義したメソッドの為にあるヘッダーファイルが必要なのですが、そ
の記述が抜け落ちてました。(一応、C++の入門書一冊読んでたので
それはすぐにわかりましたが。)

的確なご指摘、ありがとうございました。

16:デフォルトの名無しさん
07/03/06 19:10:51
OpenMPは使えますか?

17:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/03/10 22:45:33
>>7
AllocConsole()で検索
俺は開発環境の入ってない環境でのテストに良く使うな。

19:デフォルトの名無しさん
07/03/11 15:49:36
>>17
setvbufとか
fflushとか

20:デフォルトの名無しさん
07/03/20 11:17:45
済みません
2006Turbo C++で表示で開いた
ツールパレットなどを現在位置で覚えておけないでしょうか?
再度立ち上げると前に出した物が消えて
初期状態に戻ってしまいます........orz



21:デフォルトの名無しさん
07/03/23 11:42:53
cppやhのファイルを自分でつくって
それを他のcppから参照?呼び出しさせるような簡単なサンプルや
解説をしているhpは無いでしょうか?

宜しくお願いいたします



22:デフォルトの名無しさん
07/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
07/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の実行ファイルとソースをアップします。よろしくお願いします。
URLリンク(puka-world.com)

24:デフォルトの名無しさん
07/03/29 10:40:58
どっかで浮動小数点例外をつけたり外したりしてるんだろう

Set8087CW(0x133f);
のようにすれば浮動小数点演算からの例外は出なくなるよ


25:23
07/03/29 11:22:50
おおっ!早速有難うございます。とりあえず例外の発生はなくなりました。

BCB6の出方とはちょっと違うみたいですけど、それはおいといてとりあえず
進めてみます。ぐぐって見ると計算精度に関係しそうなのでちょっと心配。
その辺はぱっと見なのでまた調べてみます。

ちなみに1e+300とかそんな結果を無理矢理intにキャストするなんてのが
そもそも間違えだということでいいんですかね?
・・・にしては挙動がおかしいので・・ちょっと気になりました。

26:デフォルトの名無しさん
07/03/29 11:41:39
>>25
a = static_cast <int> (d);

でいいと思うんだけど・・・どーなんでしょ

27:デフォルトの名無しさん
07/03/29 11:51:54
1e+300は当然整数には入らないので例外が設定されてたら例外が出るというだけでしょ
除算とは独立に 例外を出す出さないを設定出来るから

28:23
07/03/29 13:16:12
>>26
やってみましたが、>>23と同じ結果でした。

>>27
>例外が設定されてたら例外が出るというだけでしょ
それが挙動不審で、例外キャッチできなかったりするので、どうなのかなと思ったのです。
あと、発生するのがBDS2006だけなので・・・

>除算とは独立に 例外を出す出さないを設定出来るから
設定とは何処にあるのでしょう?なんだかいっぱい設定があって・・・
Set8087CW(0x133f)では除算の例外もマスク?されてしまうみたいなので
出来ればそちらで対処できるならそうしたいです。


29:デフォルトの名無しさん
07/03/29 13:32:50
CWを読み出してみればいいじゃない

var CWtemp:WORD;
function Get8087CW: WORD;
asm
FSTCW CWtemp;
mov AX,CWtemp;
end;
どのビットが何なのかは、intelのマニュアル読めば判るんだし

30:デフォルトの名無しさん
07/03/30 05:11:46
BCB6勉強してます。
表示->デバックのCPU、FPUっていうウィンドウ
の見方がわかると、エラーの発見はやくなりますか?

コンパイルして、エラーが出てきたとき、
たまにエラー出ますが、そもそも何のために表示されるのでしょうか。
どんなキーワードで、ググればいいのかもわかりません。
よろしくお願いします。

31:23
07/03/30 10:24:00
その後、BCB6とBDS2006でFPUのコントロールワードをみながら追いかけてみたところ、
BCB6では計算の前後で0x1273に設定しているのに対してBDS2006では前後で0x1372に
なっていました。そこで、Set8087CW(0x1273)を最初に追加してBDSで実行したところ、
BCB6と同じ動作になったように見えました・・・・・・が、
他の浮動小数点エラーを起こすと何らかの拍子で戻ったりしてしまいます。
ちょっと待つとまた意図した動作に戻るんですけどね。
浮動小数点関連が呼ばれるたびにFPU_CWを読み書きしているみたいなので
その辺で引きずられてエラーが出てしまうのか?

いずれにせよ、意図している動作に近づいてきた感じです。

ところで質問ですが、この現象っておいらだけでしょうか?
大分はまったので別の環境で試してみたのですが、こちらも同じでした。

結論としてはそういう使い方しちゃダメよってことなんでしょうけど;;
例外処理で補足出来ないとかって、よくあることなんでしょうか?
そもそも例外処理なんかイリーガルな使い方ということなのかなぁ・・・
何万本?も出ているソフトということを考えるとおいらの考えがおかしいんだろうな。
・・きっと。うん、そうだ。

ちょっとしたコントローラだけにしか使わないおいらにとってはハードルが
高そうです。

32:デフォルトの名無しさん
07/04/05 15:36:51
ちょっと説明しにくいのですが
TForm *a[10];
a[0] = new TForm(this);~9まで

の様な感じで制御するフォームを作ったのですが
一つの(たとえばa[0])内部処理で数値を代入すると他の
フォームまで同じ数値が入ってしまいます

これを干渉しないようにするにはどうしたら良いのでしょうか?
一つのフォームを雛形にして
同じ形式の独立したフォームを幾つも作りたいのですが

宜しくお願いいたしますm(__)m



33:デフォルトの名無しさん
07/04/05 15:38:50
訂正です
TFormだとややこしいですね
TOrgFormは自分でフォームを追加した物です

TOrgForm *a[10];
a[0] = new TOrgForm(this);~9まで


34:デフォルトの名無しさん
07/04/06 21:23:12
>>33
質問内容からして超々初心者みたいだけど
そんだけの情報ではどこがバグっているのかなんてわからんよ。
ちゃんと別々にnewして作成して、かつ別々に参照しているなら干渉するなんてことは基本的にはありえん。


35:デフォルトの名無しさん
07/04/07 00:23:40
>>34
有り難う御座います
本当にこれだけなんですよ(^^;
何故か
a[0]->Show();
a[1]->Show();
でフォームを出して
たとえばフォームの中に int aint;と言うが有るとして
a[0]の方に任意の数値を入れると
a[1]の方にも同じ数字が入ってるというような感じで...orz

もうちょっと色々試してみます





36:デフォルトの名無しさん
07/04/07 00:44:03
あれ今さっきやったら読み込んでこない.....
何だったんだろ....orz
お騒がせしました有り難う御座います

37:デフォルトの名無しさん
07/04/08 09:21:45
たぶん、dfmを読み込ませて、全部同じになると思ってたんじゃないのかな

38:デフォルトの名無しさん
07/04/14 07:53:01
フォントの設定は
xxx->Font->Style=TFontStyles()<<fsBold<<fsUnderline; // 太字下線付き
ようにして出来ることはわかったのですが
フォントが太字下線付きに設定されているかを調べる(値を読み出す)方法がわかりません。
どうすればいいのでしょうか。


39:デフォルトの名無しさん
07/04/14 11:26:56
>38
if(xxx->Font->Style.Contains(fsBold) == true)
  ShowMessage("太字です");
else
  ShowMessage("太字ではありません");

だったかな?


40:デフォルトの名無しさん
07/04/14 22:24:28
>>39
さんくすです。
Contains()というのがあったんですね。


41:デフォルトの名無しさん
07/04/16 21:40:34
button1を押すと別のFormを表示させるにはどうすればいいんですか?

42:デフォルトの名無しさん
07/04/16 21:49:55
Show()

43:デフォルトの名無しさん
07/04/16 22:16:41
>>35

単にa[0]と思ったらa[1]に値入れてたってだけじゃねーの?

44:名無し@沢村
07/04/16 23:55:55
おみゃーらー♪
C++Builderを開発環境としてどう思うわけ?
おりはC++Builderは開発環境としてつまらんと思うな。
おみゃーたー、『肥桶』つー開発環境があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
URLリンク(www.geocities.jp)
感想を頼むなー♪

45:デフォルトの名無しさん
07/04/19 12:27:02
コード補完が反応しないんですがなぜですか?

46:デフォルトの名無しさん
07/04/19 12:40:28
コンパイルしても直らない?
なら、不要ファイルを一度削除してみたら?

47:45
07/04/19 13:19:54
コンパイルしたら直りました。
ありがとうございましたm(__)m

48:デフォルトの名無しさん
07/05/06 21:30:21
BDS2006を使っています。
自作のマウスカーソルを実現したいのですが
やり方がわかりません。
ぐぐったら、ここを発見しました。
URLリンク(202.33.253.145)
>イメージエディタなどのツールで、カーソルを作成し、リソースファイル(.res)に保管します。
これはできました。
>プロジェクトに作成したリソースファイルを追加します。
このリソースファイルを追加というのがやり方がわかりません。
リソース識別子をどこで指定するのかも、やり方がわかりません。
プロジェクトマネージャに追加してみたのですが、追加したCursor1.resがリンクエラーになりました。
よろしくお願いします。


49:デフォルトの名無しさん
07/05/06 21:43:04
{$R Cursor1,res}
をコード上のどこかに記述、だったかな?

50:デフォルトの名無しさん
07/05/06 21:44:49
× {$R Cursor1,res}
○ {$R Cursor1.res}

51:デフォルトの名無しさん
07/05/06 21:59:45
pascal unitにね

52:デフォルトの名無しさん
07/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
07/05/06 22:58:03
>>49-51
解答ありがとうございます。
パスカルユニットを作成してUnit1.pasをプロジェクトに加えました。
しかし
[リンカ エラー] Error: 不明な RLINK32 エラーです
というのが出てしまいます。
それと、リソースIDはどこで指定するのでしょうか。
うーん、難しいですね。


54:48
07/05/06 23:03:08
>>52
p1++;
p2++;
i++
ですね。
*p1++はポインタのインクリメントですね。


55:デフォルトの名無しさん
07/05/06 23:06:19
>>54
int *p1;
int *p2;

ですので、

*p1++;
*p2++;

で値の増加のはずですので、そこではないと思うのですが・・・

56:デフォルトの名無しさん
07/05/06 23:15:03
>>55
(*p1)++
のように

57:デフォルトの名無しさん
07/05/06 23:20:18
>>56
できました!

ひょっとして1++が先に評価されてしまって、結果p2という意味の無い式文になっていたのでしょうか?

58:デフォルトの名無しさん
07/05/06 23:28:50
>>53
とりあえず、俺達は出来てるんだから、何か間違ってるんだろ。
後は自分で調べてくれよ。
パスカルユニット使わない方法もあったように思うぞ。

59:デフォルトの名無しさん
07/05/06 23:29:53
>>57
いや違う
*p1++ は *(p1++) の事。 つまりアドレスが先にinc されて 1つ次のメモリを壊してる

60:デフォルトの名無しさん
07/05/06 23:31:47
>>59
なるほど。
しっかり理解できました。
ありがとうございます。

61:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/07 00:32:50
先にDelphiをやってたの?

  'こんばんわ' は文字列じゃなく文字
 "こんばんわ"が文字列だけど C 言語ではそのポインタになる。

だから、ポインタから文字列を自前でコピーしてやらないといけない



63:デフォルトの名無しさん
07/05/07 01:25:20
>>61
つCの標準ライブラリ関数string.hに含まれるstrcpy()
string.hをインクルードし以下のように書き換えればOK
strcpy(str[0],"こんばんわ");

あと、'は文字定数を指定する物だから、文字列の時には"を使え
ついでに誘導
スレリンク(tech板)
スレリンク(tech板)



64:デフォルトの名無しさん
07/05/07 01:36:28
>>62-63
すいません。難しいです。
誘導先行って聞いて見ます。

65:デフォルトの名無しさん
07/05/07 01:44:06
おのれCypress

66:デフォルトの名無しさん
07/05/07 10:10:46
ジェーブイルダーはLinux版出るようだが、

今後シー加算加算ブイルダーはLinux対応しないのか????

67:デフォルトの名無しさん
07/05/11 19:22:16
つ C++BuilderX

68:デフォルトの名無しさん
07/05/14 22:03:04
C++Builderで10個程度の数字を打ち込んで並べ替えるってやりたいんだけどどんな感じでやれば出来るでしょうか?
普通のCならscanfで取り込んでってやればいいんだけどビルダーだと出来ないからどうやればいいかわからないです;;

69:デフォルトの名無しさん
07/05/15 07:25:03
scanfを使いたいなら、コンソールアプリで作ればいいのでは?

70:デフォルトの名無しさん
07/05/15 11:07:45
for文内部でEditのついた入力ダイアログを10回表示させればいいじゃん。
間違えたら戻れるとかの機能をつけて。

71:デフォルトの名無しさん
07/05/15 11:17:41
ソレをやるなら TMemoに10個打ち込んで、ボタン押したらソートする仕様の方が

72:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/17 16:45:21
>CodeGear?、Windows Vista?対応のC++ RADツールの新バージョンC++BuilderR 2007を発表
URLリンク(www.codegear.com)

BCB6が超安定してるんだが、Vi$ta用には逝行しなきゃならない?

74:68
07/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:デフォルトの名無しさん
07/05/24 15:08:26
>>74
Edit10個でなくて、TMemo1個にした方がいいんじゃないのか?

76:デフォルトの名無しさん
07/05/24 16:07:32
まずは1個からやってみるべ

77:68
07/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:デフォルトの名無しさん
07/05/28 10:08:44
>とやっているのですがうまく行きません;;

何がうまくいかないのか不明瞭

>どのような方法を使えばうまく格納し出力できるのでしょうか?

仕様不明瞭

79:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/28 10:44:08
data1 ってなに?
pWork ってなに?
syuturyoku ってなに?

つーか、ポインタってわかる?

81:デフォルトの名無しさん
07/05/28 14:11:00
プログラムの特定箇所、たとえばプログラムのおしりとかに
特定のバイナリデータを付加する方法があれば教えてください。


82:デフォルトの名無しさん
07/05/28 15:24:46
普通のファイルとして追加すればいいと思うが?
ただ実行ファイルは実行されると排他処理されて書換えが出来ない。

83:デフォルトの名無しさん
07/05/28 15:36:00
>>82
意味がわかりません。
バイナリを埋め込む疑似命令みたいなものがあれば教えて欲しいという意味です。


84:デフォルトの名無しさん
07/05/28 15:45:50
リソースで埋め込んだら? pascalユニットなら比較的簡単だったように思うぞ

85:デフォルトの名無しさん
07/05/28 16:15:41
>>77
まずC++勉強しないとどうにもならないな
CとC++は別の言語だよ

86:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/28 16:41:15
その後、
.pas なら確か {$R res.res res.rc } の1行を入れるだけ
C++だけでやりたい場合はどうやったっけ?

88:デフォルトの名無しさん
07/05/28 21:50:18
プロジェクトに.rcを追加 または #pragma resource で.resを指定

89:デフォルトの名無しさん
07/05/29 09:54:01
1個もできないのにいきなり10個なんてやるのは無理

90:デフォルトの名無しさん
07/05/29 14:54:35
C99は使えますか?

91:デフォルトの名無しさん
07/05/29 19:22:09
一個ボタンを作ってそれを押したら10秒後にプログラムが終了するようにするにはどのようにすればいいでしょうか?

92:デフォルトの名無しさん
07/05/29 19:23:30
Sleep(10000);
Application->Terminate();


93:デフォルトの名無しさん
07/05/29 23:43:14
>>91

VCLのデモンストレーション的コード

Form上にTTimerを1つポトリ Timer1とする
オブジェクトインスペクタでTimer1のIntervalを10000に設定
おなじくEnabledをfalseに設定

Timer1のOnTimerイベント内で
 Close();

ボタンのOnClickイベントで
 Timer->Enabled = true;


94:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/04 13:32:42
普通はそんな事はありえないので
再現する最小のコードを作ってみてくれないかな?

96:デフォルトの名無しさん
07/06/04 14:35:46
>>94
デバッグすればいいだけだろ
200%バグだから


97:デフォルトの名無しさん
07/06/04 16:53:54
ソースレベルデバックを知らないに100ペソ。


98:デフォルトの名無しさん
07/06/04 17:28:36
なにが起きててなにがわからないのか、全く不明なのであてずっぽうで。
コードエディタ上でF5を押すとその行にブレークポイントを設定できる
(行が赤くなる)ので、処理の流れを確認したい最初の部分にブレークポイントを
設定する。ただし最適化などで実行内容が存在しないとみなされる行には
設定できず、緑色になるので、コンパイルオプションで最適化を解除するなり
違う行に設定するなりすること。で実行するとブレークポイントを設定した行を
実行する*直前*にプログラムが停止してIDEに制御が戻り、対象行が青く
ハイライトされる。あとは1行実行のF8(ステップオーバ)、F7(ステップイン)や
F9(実行継続)を使って処理の流れを見る、変数の上にマウスをホバーすると
変数の値が表示される、Ctrl-F7で変数や式の値を評価、変更するなどの…
書いてて疲れた。まぁそういうことだ。がんがれ。

99:デフォルトの名無しさん
07/06/04 21:05:28
>>95->>98
みなさんいろいろありがとうございました
デバックしながら原因探ってみたいと思います。

100:デフォルトの名無しさん
07/06/05 17:02:47
プログラム初めて2週間くらいです。
複数のクラス間で変数を共有する方法を教えてください
具体的には弾や敵でクラス分けされたシューティングゲームで
自弾と敵の判定を敵の動きを処理するループの中でしたいです。

101:デフォルトの名無しさん
07/06/05 21:35:20
>>100
staticにすればいいんじゃない?

102:デフォルトの名無しさん
07/06/05 22:12:55
>>101
すみません、本とか買ってないんでやり方がよく分からないです
変数にstaticを付けるんですか?
どこか参考になるサンプルソースが載ってるページがあったら教えて下さい

103:デフォルトの名無しさん
07/06/05 22:24:24
staticにしちゃ不味そうなようすだけど

104:デフォルトの名無しさん
07/06/05 22:35:27
>>103
あれ?クラスから生成した複数オブジェクト間で変数を共有するって意味だと思ってたよ・・・
もしかして異なるクラス間ってこと?
だった面倒だからグローバルにしちゃえば?

105:デフォルトの名無しさん
07/06/05 22:41:58
グローバルってよく分かりません・・・
ソースコードが長くなりそうなのでクラスに分けてファイル分割したいのですが
変数は共有したいです。
何かサンプル下さい。お願いします

106:デフォルトの名無しさん
07/06/05 23:08:17
単に他のクラスの変数を参照すればいいだけじゃん。
builder云々っていうレベルじゃないな。
C/C++の超初心者のお勉強をしないとプログラミングなんて到底無理。
C++の入門者向けの書籍を読みなさい。
他人に何かを聞く以前のレベルだ。


107:デフォルトの名無しさん
07/06/05 23:37:52
くだすれC++Builder(超初心者用)

108:デフォルトの名無しさん
07/06/05 23:43:58
ここは、C++Builderについての(超初心者用)質問スレ
変数宣言のprivateやpublic程度も理解していないなら
こっちで聞くべし
スレリンク(tech板)
こっちなら教えてくれる人もいるだろう


109:デフォルトの名無しさん
07/06/06 00:41:00
さすがにstaticもグローバルも分からないようじゃBCBの使いようがないじゃん
>>108で正解

ちなみに、>>100をグローバル変数で処理するのも無茶でしょ
ってか純Cならそうするしかないかもしれんが、それならC++を使う旨味がなんもなし

110:デフォルトの名無しさん
07/06/06 01:08:20
まぁ、>>107氏が自分で教える分にはかまわないんじゃないのw


111:デフォルトの名無しさん
07/06/06 03:42:04
cpad使ってますが複数のソースファイルを扱えません
BCC DeveloperとC++Builder
どっち使うのがいいですか?

112:デフォルトの名無しさん
07/06/06 05:48:51
>>111
BCC Developer

C++ Builderはそもそも統合開発環境でcpadやBCC Developerとは訳が違うぞ
んでこのスレはC++Builderのスレだからあとはこちらに移動

タダで使えるBorland C++ Part5
スレリンク(tech板)

113:デフォルトの名無しさん
07/06/06 10:53:42
EditコンポーネントにUpDownコンポーネントをつけたものに
数字を消せないようにすることは出来ないでしょうか?
例えばUpDownコンポーネントを付けたものに初期値を0にするように設定したものに
その数値を手動で消しても消せない、消してもまた0に戻るようにする、などは可能でしょうか?
元からEditの中身をいじれないようにする事はしたくないので・・・

114:デフォルトの名無しさん
07/06/06 11:03:04
OnChange で戻せば?

115:デフォルトの名無しさん
07/06/15 19:42:08
すみません
BccDeveloperでメイクをすると

Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

というのが最後に出てきてメイクできません。
前日は普通にメイクできていたのと同じサンプルをコピッて貼ってもこれが出てきてしまいます。
何かファイルでも壊れているのでしょうか…

116:デフォルトの名無しさん
07/06/15 19:45:48
すみません、速攻で自己解決しましたorz

割とありがちなミスらしくて恥ずかしい…

117:デフォルトの名無しさん
07/06/21 09:09:46
C++Builder2006を使いはじめてまだ1ヶ月です。
ライブラリ関係の資料を探したらBoostC++ とか STLPortライブラリとか
dinkumwareとか...よく分かりせん。
何のライブラリを参考にすれば良いでしょうか?

118:デフォルトの名無しさん
07/06/21 09:53:10
URLリンク(www005.upp.so-net.ne.jp)

119:デフォルトの名無しさん
07/06/22 15:11:58
BCB2007ってフリーバージョン出ると思う?
やっぱ、フリーのTurboC++あるから、今回なしかな

120:デフォルトの名無しさん
07/06/25 06:18:49
OSを再インストールしようと思ってます。
C++Builder6のバックアップって、基本的にどのあたりを
保存しておけばよいでしょうか。
・Projects
・Include
これぐらいでしょうか。

Borlandっていう一番上のフォルダ保存しておけば
間違いないですか?

121:デフォルトの名無しさん
07/06/30 19:32:08
boostはつかえますか?

122:デフォルトの名無しさん
07/06/30 19:44:26
部分的に

123:デフォルトの名無しさん
07/07/02 10:32:20
C++builder4とか5のCompanionToolsのCDってどんな物が入ってるの?
特別な物があるのかな?

124:デフォルトの名無しさん
07/07/02 11:47:57
>>123
それぞれのバージョンのBCB用に書かれたフリーウェアやシェアウェアや
製品の紹介が入っていた。

発売と同時に出すものだから、大した物は入ってなかった。

125:デフォルトの名無しさん
07/07/04 15:42:42
String SBuf;
double dBuf = 1;

SBuf.sprintf("% .0lf", dBuf);

て漢字ですが、
先頭にスペースが入らないのは何でですか?
数字の桁に応じてスペース入れたいんですが。

126:デフォルトの名無しさん
07/07/04 17:20:26
印字幅を指定していないから。
sprintfからしたら、例えば数字が1桁の時はスペース何個入れりゃいいの?って話だ。
ちなみに%の後ろのスペースはいらない。

127:デフォルトの名無しさん
07/07/04 23:47:42
低レベルで申し訳ないですが
出力結果をテキストファイルにするのってどうすんですか?
Bcc developerつかってます


128:デフォルトの名無しさん
07/07/05 00:51:14
>>127
すれ違い
こっち

タダで使えるBorland C++ Part5
スレリンク(tech板)


129:デフォルトの名無しさん
07/07/08 21:00:30
Kylixのユーザー登録できないんですね。
builder互換で、Linux向けのGUIのクロス開発ツールは
ないんですかねー。

130:デフォルトの名無しさん
07/07/09 08:45:45
つ Lazarus

131:デフォルトの名無しさん
07/07/09 14:18:25
>>130
うわー、こんなのあったんですね。
ありがとうございます。

132:デフォルトの名無しさん
07/07/17 15:58:25
C++Builder2006を使って開発しています。
どこかにTcpServerコンポーネントの使い方またはサンプルプログラムが無いでしょうか?


133:デフォルトの名無しさん
07/07/19 12:17:20
XPスタイルを適用するとPageControlのタブを右や左にしたとき
TabSheetのCaptionが表示されないんですが
PageControlだけスタイルを適用しない方法とかないんでしょうか?

134:デフォルトの名無しさん
07/07/19 12:27:26
>タブを右や左にしたとき
これの意味がわからんのだが
自分のとこではCaptionが表示されないという現象は見たことがない。
それにBuilderのバージョンも書いていなければ、Xpスタイルの設定方法も書いていないので
まともな答えなど返ってこないぞ。


135:デフォルトの名無しさん
07/07/19 12:39:57
BCB2007です。
BDS2006ではTXPManifestをフォームにおけばスタイルが適用されていたんですが
BCB2007からは何もしなくてもXPスタイルが適用されてしまいます。
プロジェクトオプションのアプリーケーションに「ランタイムテーマを適用する」という項目があったので
チェックを外してみましたが変化はありませんでした(ヘルプをみたらVista用のオプションらしい)

ちなみにPageControlのTabPositionというのがあるんですがご存じありませんか?
XPスタイルでも上や下なら問題なく表示されます。が、デザインの関係上、右や左にタブを配置したいんで

136:デフォルトの名無しさん
07/07/19 13:09:40
>>133
Windowsの仕様


137:デフォルトの名無しさん
07/07/19 13:17:54
xpStyleの仕様だね。
OnDrawTabで自分で描画するといける。



138:デフォルトの名無しさん
07/07/20 00:28:16
くそっ、やっぱりOwnerDrawしかないのか

139:デフォルトの名無しさん
07/07/22 08:19:03
>>138
× くそっ
○ くさっ

140:デフォルトの名無しさん
07/07/26 18:32:12
Application->Terminate();

141:デフォルトの名無しさん
07/08/25 21:52:41
C言語を独学で初めて2日目ですが、ここに質問してもいいですか?

142:デフォルトの名無しさん
07/08/25 22:05:00
C言語自体の質問ならすれ違い

143:デフォルトの名無しさん
07/08/25 22:13:22
C言語自体の超初心者質問スレってありますか?

144:デフォルトの名無しさん
07/08/25 22:39:53
C言語なら俺に聞け(入門篇) Part 18
スレリンク(tech板)

自分で調べる気がないんなら
プログラミングはやめたほうがいい。
どうせ1から10まで人に聞いてすますことしか考えてないんだろ。

145:デフォルトの名無しさん
07/08/25 22:59:17
>>144

やっぱこれしか無いわけね・・・

146:デフォルトの名無しさん
07/08/25 23:12:12
知ってたふりしなくていいよ

147:デフォルトの名無しさん
07/08/25 23:16:57
>>146
自分でC言語でソートかけたらこれしか無かったお(´・ω・`)
でも、スレ見てたら自分の質問があまりにも超初心者すぎるから、超初心者スレ立ててみるお(`・ω・´)
まりがとう

ときに、親切な方なので伺いたいのですが、他板でスレを立ててしまった場合、次スレ立てる事ができるのは
何時間後ですか?
たまに翌日立てれたり、立てれなかったり・・・

スレ違いなら諦めて撤収します

148:デフォルトの名無しさん
07/08/25 23:17:47
スレは立てるな
あるものを使え

149:デフォルトの名無しさん
07/08/26 06:58:20
夏休み速く終わってくれ。


150:デフォルトの名無しさん
07/09/01 13:39:17
BCB6で空フォームだけのプログラムを作ったんですけど、
実行時パッケージを使って構築したときはupx圧縮して何も問題なかったのに
実行時パッケージを使わないようにしてupxにかけると
「アプリケーションを正しく初期化できませんでした」
てのが二回出てきてプログラムを起動できませんでした。

実行時パッケージを使うようにしってもプログラムのサイズが54KB程度のときは
同様に起動できず…

どうなってるんですか!?教えてください><


151:デフォルトの名無しさん
07/09/03 21:50:59
>>150
しるか
ASPackならうまくいくからそれでやれ

152:デフォルトの名無しさん
07/09/04 03:33:48
DLLを作っています。ホストプログラムから渡されたウィンドウハンドルを親にして、子ウィンドウを作成したいです。
TForm1を作っておき、親は非VCLなのでCreateParentedControlメソッドでForm1を作成すれば良さそうなのですが、どのオブジェクトのCreateParentedメソッドを呼べばいいのでしょうか。
また、CreateParentedControlの返り値はTWinControlとあるのですが、xxxx->CreateParentedControl(__classid(TForm1),親ハンドル);とした後では、作成されたTForm1へはどのようにアクセスするのでしょうか。
根本的に間違えてる気もするのですが・・・

153:デフォルトの名無しさん
07/09/04 09:12:48
> どのオブジェクトのCreateParentedメソッドを呼べばいいのでしょうか。
CreateParentedControlはstaticメソッドだからオブジェクトはいらない。クラス名::メソッド名で呼ぶ。

> CreateParentedControlの返り値はTWinControlとあるのですが、(略)
TWinControlはTFormの親クラスなんだからキャストすればいい。

form1 = static_cast<TForm1*>(TWinControl::CreateParentedControl(__classid(TForm1), hwnd));
form1->Show();

154:デフォルトの名無しさん
07/09/04 13:25:13
>>153
ありがとうございます。助かりました。

155:デフォルトの名無しさん
07/09/06 06:07:26
TMemoでOLEドラッグ&ドロップでテキストを受け取りたいのですが、どのようにしたらよいでしょうか。
地道に書いていくしかない・・・?BCB用のサンプルコードさえ見つけられなかったです・・・

156:デフォルトの名無しさん
07/09/06 07:57:15
>>155
TMemoを継承して IDropTarget インターフェースを持たせればいいよ

157:デフォルトの名無しさん
07/09/06 09:57:34
delphiの集合型をBCBから使う場合
URLリンク(support.codegear.com)
変数を定義して 要素を << で入れれば良いのは判ったのですが

たとえば、
Hoge( const Sysutils::TSysCharSet &c)
のような関数を呼び出すのに

delphiでHoge(['A'..'Z']) のようにしたい場合は、どう表現すればいいのでしょ?
やっぱり変数をそこで定義して入れるしかないのかな

158:デフォルトの名無しさん
07/09/06 11:06:06
Hoge(TSysCharSet() << 'A' << 'B' << 'C' << ... << 'Z');

159:デフォルトの名無しさん
07/09/06 11:36:58
>>158 ありがとう。 範囲を表現出来るようなメンバ関数とかも作っとけよって感じですね

160:デフォルトの名無しさん
07/09/06 11:39:06
作ればええやん

161:デフォルトの名無しさん
07/09/06 14:23:07
>>156
ありがとうございます。がんばってみます。

162:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/06 17:24:47
>TForm1のprivateにTMemoWithDnD *Memo1
>関数の外側でTMemoWithDnD *Memo1;と宣言しました
つまり、TForm1メンバーと、グローバルメンバーの2つの Memo1があるからでは?

164:デフォルトの名無しさん
07/09/06 17:54:52
>>163
ありがとうございます。TForm1メンバーを残し、グローバルメンバーの宣言を削除してみましたが、やはりうまくいきません。逆でも同じでした。
newした関数内だと問題ないんだけどなあ・・・この辺が手がかりにならないでしょうか?

165:デフォルトの名無しさん
07/09/06 19:51:50
TMemo
なんか知らんが
DragMode=dmAutomaticにして
OnDragOver/OnDragDropに処理書けば
エエだけとちゃーうんか
なんか勘違いしてたらメンゴ


166:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/09/06 21:17:43
返答ありがとうございます
>>165
DragModeはコントロール自体のドラッグを制御する感じのようなので、違う気がします・・・
>>166
そんな感じで書いてるのですが・・・もう少し試行錯誤してみます。initializeとかはわたしが勝手に作ったものです。紛らわしくて済みません。


168:162
07/09/06 21:35:38
TMemo、原因が分かりました。newするとき、
Memo1 = new TMemoWithDnD(this);
とするものを
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
としていたのが原因でした。この2つの何が違うかいまいちつかめないのですが、問題は解決しました。本当にお世話になりました。

169:デフォルトの名無しさん
07/09/06 22:36:18
コンパイラが変数を探すとき…

1. 直近のブロック({ })内で宣言されたローカル変数
2. 自クラスのメンバ変数
3. 継承元のメンバ変数

の順で探しに行くので
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
なんてやったら Memo1 を自クラスのメンバでなくその関数のローカル変数と見なすのですぅ

170:162
07/09/06 23:36:52
>>169
ふむふむ、理解した。トンクス

171:デフォルトの名無しさん
07/09/08 03:54:08
Cを書いてるのに、コンパイルエラーが出ると「C++エラー」と出るので、C++としてコンパイルされちゃってるようです。
コンソールアプリケーション → C を選んでるんですが、どこが悪いのでしょうか。

172:デフォルトの名無しさん
07/09/08 19:43:01
マルチスレッドで、サブのスレッドをWaitFor***Object(s)で待たせておいて、終了のイベントを送った場合終了させたいと考えています。
この場合はメインスレッドでTEventを作成し、そのハンドルをWaitFor***Object(s)に登録し、その後終了させたいタイミングでSetEvent()し、終了処理をさせれば良いのでしょうか。

173:デフォルトの名無しさん
07/09/10 19:57:42
Turbo C++ Explorerを使ってネットワークプログラムを
組もうと思っているのですがTTcpServer(TTcpClient)
とTServerSocket(TClientSocket)は何が違うんでしょ
うか。

TTcpServerの方はツールパレットにあるものの対応する
ヘルプがなく両者を比較検討しようにもできない状態で
あります。
ちなみにDelphiでTServerSocket(TClientSocket)を使
った簡単なサンプルを作ったことがありこちらはヘルプもある
ので問題ないのですが、TTcpXXXの方の情報が無くて困
ってます。

174:デフォルトの名無しさん
07/09/13 07:31:25
全然詳しくないので質問させてください。

自称「マネージメントもできる」派遣クンが
「Visual Studio 2005が僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。

彼のVisual Studio 2005プログラムが動かないのを調べるのは誰の仕事なのでしょうか?


175:デフォルトの名無しさん
07/09/13 08:42:51
スレ違いの質問に答えるのは誰の仕事なのでしょうか?

176:デフォルトの名無しさん
07/09/13 09:52:18
オレオレ

177:デフォルトの名無しさん
07/09/14 08:40:35
16進文字列をキャラクタダンプするツールを作っています。
TMemoをフォームに置きます。
Widthを317位にします

?.........-..!%a5fe985cd9e46000426181712f338e67............ゥ-.D...

コンパイル・実行して↑を貼り付けます。
右余白があるにも関わらず%の後ろで折り返しされます。
これをコントロールの幅きっちりで折り返しさせるにはどうしたらいいでしょうか。

178:デフォルトの名無しさん
07/09/14 08:54:28
WordWrap=falseにして自分で改行するしかないような木がする

179:デフォルトの名無しさん
07/09/18 03:04:12
当方、C++Builder4、WinXPです。
TPanelにドッキングしたTPanelの閉じるボタンを押したときに処理を行いたいのですが、
イベントが発生しません。
何か方法はないでしょうか?

180:デフォルトの名無しさん
07/09/22 18:04:04
Turbo C++で作成したソースを公開しようと思うのですが、
(プロジェクト名).bdsproj
のファイルの中にはGUIDやらフォルダのパスやらが含まれててこれに関してはあまり公開したくありません。
しかし、これがないとビルドが面倒になるのでなんとかしたいのです。
いい方法はありませんか??

181:デフォルトの名無しさん
07/09/22 23:02:04
>>180
パスは相対パスに書き換える
GUIDはエントリをそっくり削除する

で逝ける筈

182:デフォルトの名無しさん
07/09/23 12:53:28
>>181
おお…GUIDってなくてもビルドできますね
ありがとうございます

183:デフォルトの名無しさん
07/09/29 03:40:39
TMemoにおいて座標(文字数ではなくピクセル)をキャレット位置へ変換する方法はあるでしょうか?

184:デフォルトの名無しさん
07/09/30 08:24:05
以前VC++を使っていましたが、最近Turbo C++も使い始めた初心者です。
VCLは非常に使いやすくてよいのですが、コードエディタの操作感覚がVC++と
だいぶ異なっているので戸惑っています。

・行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。
・オートインデントでタブ文字ではなくスペースが挿入される。

これらを変更することはできないのでしょうか?
本当に初歩的な質問で申し訳ありませんがどなたか教えて下さい。


185:デフォルトの名無しさん
07/09/30 08:45:20
変更できなくはないけど変更せずに使った方がよいよ。
郷に入れては郷に従え。
慣れてショートカットキーが使えるようになってくると
逆に手になじんできます。

186:デフォルトの名無しさん
07/09/30 16:29:58
これって無料ですか?

187:デフォルトの名無しさん
07/10/01 09:57:56
無料厨氏ね!

188:184
07/10/01 11:21:05
>>185
 了解しました。もうちょっと慣れるまでがんばってみます。ご回答ありがとうございました。


189:デフォルトの名無しさん
07/10/02 19:21:50
UnixでもEmacs系しか使わない漏れにとっては
不便なエディタを無理して使うより
慣れたエディタ併用して書いたほうが気が楽だ。

でも、だからといってBCBが嫌いなわけじゃないんだからね?

190:デフォルトの名無しさん
07/10/03 04:40:43
>>184

>行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。

 これ、行の長いソースの編集の時に便利。
 最近はディスプレイも広いからCとかだとあんまり実感する事も無いと思うけど、
 長いクラス名や変数名を扱う時とかに慣れると便利だよ。


>オートインデントでタブ文字ではなくスペースが挿入される。

 オプションで切り換えられた様な、、、、、

191:デフォルトの名無しさん
07/10/03 09:06:07
外部エディタ使えばいいやん。


192:デフォルトの名無しさん
07/10/03 09:47:25
へたれだから補完がないと

193:デフォルトの名無しさん
07/10/04 19:34:06
BCB6でJpeg2000を表示したいのですが、どうしたら良いですか?

194:デフォルトの名無しさん
07/10/04 19:38:07
がんばる

195:デフォルトの名無しさん
07/10/05 08:39:53
頑張り方教えて下さい。

196:デフォルトの名無しさん
07/10/05 10:15:31
susie用のjpeg2000のspi(要はDLL)があるから
それを利用すれば簡単じゃん

197:デフォルトの名無しさん
07/10/05 10:56:34
>susie用のjpeg2000のspi(要はDLL)があるから

見つけました。 → URLリンク(software.kozoh.net)

>それを利用すれば簡単じゃん

使い方はどこかに書かれてますか?

198:デフォルトの名無しさん
07/10/05 11:39:39
>>197
URLリンク(www.digitalpad.co.jp)
から
URLリンク(homepage3.nifty.com)
をダウンロードして解凍して
spi_api.txtを嫁。
これで分からなかったらDLLを基礎から勉強しろ。

199:デフォルトの名無しさん
07/10/05 11:43:01
URLリンク(www2.big.or.jp)
ここの「builder-ML過去ログ」を検索すれば
山ほど出てきますよ。

200:デフォルトの名無しさん
07/10/05 11:43:44
ダウソしました。

DLLくらい作ったことありまつ><

でも、このプラグイン使うの結構難しいですね。
普段、ビットマップとか理解してなくて、TBitmapで済ませてるんで。

201:デフォルトの名無しさん
07/10/05 11:50:45
しかしJPEG2000の話は最近本当に聞かないね。
デジカメに組み込むという話はどこに行ってしまったのやら。
低圧縮JPEGで十分だと判断されてしまったんだね。

202:デフォルトの名無しさん
07/10/05 11:55:27
Jpeg2000、気力の低下でやっぱ挫折してきます多。

何か実行ファイルを起動して、Jpeg2000からビットマップファイルにコンバート出来ないでしょうか?


203:デフォルトの名無しさん
07/10/05 17:40:20
>>202
一番簡単なのはSusieにそのJPEG2000画像を食わせて画面を
キャプチャすれば?

204:デフォルトの名無しさん
07/10/05 17:58:42
それは無茶杉。

205:デフォルトの名無しさん
07/10/05 23:50:38
>202
IrfanViewでバッチ処理?

206:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/15 02:23:57
でもそのコードじゃエラー出ないし。

208:206
07/10/15 09:01:23
 自己解決しました。同名ファイルが複数のフォルダに分かれて存在していたのが原因だったようです。
お騒がせして申し訳ありませんでした。


209:デフォルトの名無しさん
07/10/15 15:08:20
デバッガーを走らせて変数をインスペクトしたとき、ちゃんと変数の中身が見えるのが殆どですが
プロジェクト(変数?)によっては「???」と表示されてしまうのはなぜでしょうか
勿論その変数は有効で、ShowMessageなどではちゃんと表示されるのですが

210:デフォルトの名無しさん
07/10/15 16:29:50
たまにあるね。インスペクタウィンドウに直接変数名入れても、そんなもんはねぇとか言われたりね。

211:デフォルトの名無しさん
07/10/15 16:31:21
ヒント:最適化

212:デフォルトの名無しさん
07/10/15 17:26:04
デバッグ時はオフにしてるけどな

213:デフォルトの名無しさん
07/10/15 18:54:44
変数のスコープの問題じゃないの?

214:デフォルトの名無しさん
07/10/15 19:55:55
その変数への代入文で止めたとしても、ツールチップもでないしインスペクトもできないってのがあった。
???すらでないんで質問者のとは違うかも。

215:デフォルトの名無しさん
07/10/15 23:19:56
>>209
あてずっぽうで つ「副作用を許可する」

216:209
07/10/17 11:09:47
プロジェクト-オプション-最適化を切り替えたら見えるようになりました
てもこんなオプションいじったことないのに、妖精さんのいたずらか

217:デフォルトの名無しさん
07/10/23 14:03:31
TListViewのアイテムをドラッグしてる時に表示される半透明のアイコン
これを表示しないようにできませんかね

218:デフォルトの名無しさん
07/11/01 06:54:34
このコンポはどう?
URLリンク(jp.youtube.com)

219:デフォルトの名無しさん
07/11/01 13:34:19
2007でSTLportを使えるようにする方法を
教えてください。

220:デフォルトの名無しさん
07/11/02 07:23:58
>>219
それBorlandのメールニュースで読んだきがする

221:デフォルトの名無しさん
07/11/02 09:18:18
あったあった
転載していいかどうか判らんから紹介だけ

ボーランドのニュースグループ borland.public.cppbuilder.japanese の10月26日の投稿
『C++Builder2007になってからSTLの実行速度が遅くなっているのでしょうか?』
のレスに細かい手順があるよ
Builder単体では出来ないので結構面倒

222:デフォルトの名無しさん
07/11/05 09:30:28
>>220
219です。できました!
ありがとうございましたm(_ _)m

223:デフォルトの名無しさん
07/11/05 15:52:28
STLportはなぜかランタイムDLLの名前がgcc(MinGW)のものと同一に
なるのでバッティングして同居できないんだよ。

224:デフォルトの名無しさん
07/11/05 15:55:37
>>221のやり方みたら謎が解ける

225:デフォルトの名無しさん
07/11/05 16:13:34
>>221はヘッダファイルいじってコンパイラのバージョン番号変えてるだけ
ライブラリ名までは変わらない

226:デフォルトの名無しさん
07/11/05 23:10:33
C++Builderでボタンを押すたびに画像が変わるようにしたいんだけど
誰か分かる方いますか?どんなコード書いたらいいんでしょう。
イメージ的にはローカルに画像保存しておいてボタンを押したら
そこの保存してある場所から持ってくるって感じなんだろうけど
上手くいきません。お願いします。

227:デフォルトの名無しさん
07/11/06 00:16:00
どこがうまくいかないの?を具体的に書いたほうが回答がつきやすいと思うよ。

228:デフォルトの名無しさん
07/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
07/11/06 16:00:03
C++Builder6を使用しています。

今回初めてスレッドプログラムを組んでいますが、
スレッドに対してパラメータを渡すにはどの様にすれば良いのでしょうか?
DWORDとメモリのポインタを渡したいと思っています。

230:デフォルトの名無しさん
07/11/06 16:21:02
ターゲットスレッドのオブジェクトのメソッドコールしてやる。

231:デフォルトの名無しさん
07/11/06 16:21:14
TThreadならコンストラクタなりプロパティなりメンバ関数なり定義すればいいだろ。
フォームがTFormから派生してるように作成したスレッドもTThreadから派生してるだけだし。

232:デフォルトの名無しさん
07/11/06 16:25:06
スレッドクラスの派生にプロパティ付ける手もあったか。

233:デフォルトの名無しさん
07/11/07 09:00:30
最近、C++Builder 6 を使い始めた。
TXMLDocument
の使い方教えてけろ。
EAccessViolation
とかになっちゃうもんで。

234:デフォルトの名無しさん
07/11/07 09:49:01
C++Builder 6を買おうと思っている初心者だけど、Personal版とProfessional版で何が違うの?値段が違うっていう回答はなしね

235:デフォルトの名無しさん
07/11/07 11:47:13
>>234
TurboC++でもDLして使っとき

236:デフォルトの名無しさん
07/11/07 11:48:30
>>234
VCLのソースの添付。

237:デフォルトの名無しさん
07/11/07 11:55:54
>>234
商利用の可否
DBコンポーネントの有無
紙のマニュアルの有無
tasmの有無(なくてもPascalソース上でインラインアセンブラ使用可能)

238:デフォルトの名無しさん
07/11/07 11:58:36
ま、Personalは体験版、Proは通常版、Entは資金提供版。

239:デフォルトの名無しさん
07/11/12 17:34:44
初心者ながら古株のbcb5を使っています。
フォームを動的に表示する場合、
モーダルで表示したら次の行でデリートするのは
わかっているのですが、

普通にショウする場合、
動的フォームを閉じた場合のデリートは
どのタイミング(どのイベント)で
行えばよいのでしょうか?

動的フォームのcpp hにデリートを書く?
動的フォームが閉じた時の報告が親フォーム
にくればいいんですが・・・
いろいろ調べたのですが、どうも。
教えてください。

240:デフォルトの名無しさん
07/11/12 18:32:07
動的フォームのCloseイベントでthis->Release();じゃなかったっけ。
あとTCustomForm派生クラスはdeleteとかでデストラクタ直接呼び出したらだめ。


241:デフォルトの名無しさん
07/11/12 20:18:04
どうもです。
試してみます。

242:デフォルトの名無しさん
07/11/12 20:27:26
VCL6のソース読んだらCloseイベントでActionにcaFree突っ込めば勝手にRelease呼んでくれるっぽい

243:デフォルトの名無しさん
07/11/12 20:55:30
CBuilder 6を使っていますが、randomize()関数を呼び出しても乱数発生ルーチンが
初期化されていないようで、プログラムを実行するたびにrandom()関数が同じ値を
返してきます。RandSeed変数に出鱈目な値を入れてもrandomize()を呼び出しても
結果は変わりません。どんな原因が考えられるでしょうか。尚、Randomize()関数は
フォームのコンストラクタの中で呼び出しています。

244:デフォルトの名無しさん
07/11/12 21:16:37
>>243
randomizeとRandomize両方表記してるけど、どっち?
BCBにはどっちも存在して、random()に対応するのはrandomizeだけど、それは合ってる?

245:デフォルトの名無しさん
07/11/12 21:20:33
>>243
種をstaticで保持しておかないとだめなんじゃないの?PCの乱数なんて周期があってそこから切り出すだけなんだから。


246:デフォルトの名無しさん
07/11/12 21:22:06
レス有難うございます。
Randomize()を呼んでも"r"andomize()を呼んでも結果は同じでした。実際の乱数
発生はrandom()関数を呼び出しています。尚、randomize()に対応するのはrandom()
とのことですが、Randomize()に対応するのはrandom()とは別にあるのでしょうか。

247:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/12 21:35:29
む、参照返しで戻り値がBOOLだた。
LARGE_INTEGER seed;
QueryPerformanceCounter(&seed);
srand(seed.LowPart);
大抵は
srand(GetTickCount());
で十分だが。

249:デフォルトの名無しさん
07/11/12 21:41:31
有難うございます。
早速RandomFrom()を使ってみたところ、コンパイルエラー(未定義の関数)が出てしまいました。
Randomize()に関してはエラーは出ません。プロジェクトに何かライブラリを追加しなくては
ならないのでしょうか。

250:249
07/11/12 21:47:06
失礼。
RandomFrom()ではなくRandomRange()でした。

251:デフォルトの名無しさん
07/11/12 21:51:54
>>249
ヘルプ見れ。
Pascalソースでuses MathってやるようにC++ソースだと#include <Math.hpp>が必要。
ヘルプの読み方は覚えておいたほうがいい。

252:249
07/11/12 21:53:23
自己解決しました。

RandomRange()はvcl\math.hppで宣言されていますね。プログラムの先頭でこのファイルを
インクルードしたらビルドできるようになりました。又、乱数発生機構もきちんと初期化
されているようです。プログラムを走らせるたびにRandomRange()から違う値が返ってきます。
どうもありがとうございました。

253:249
07/11/12 21:54:08
>>251
失礼、かぶってしまいました。

254:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/13 09:10:37
BCB5の者です。
趣味でフリーソフトつくっていますが、
オプションフォームをnewで呼び出すか
起動と同時にロードしておくか
どちらがいいのか迷っています。
ソフト自体の大きさは単体のみの動作で
1MB程度です。

一般配布を意識した場合、
オプションフォーオムはバックグラウンドに
待機させておくものでしょうか?
それとも呼び出し毎にロードするものでしょうか?
なお、常駐ソフトです。

オプションはダイアログ形式で
部品の数は20個ほどです。

256:デフォルトの名無しさん
07/11/13 09:37:11
>オプションはダイアログ形式で 部品の数は20個ほどです。

今のPC/dozなら、リソース的には無問題だが、

>起動と同時にロードしておくか

コード的に素直じゃない。

さらに、オプション内容をフォームに保持させたりすると、プログラムが崩れてきたり。

フォームを開く時点でnewしてグローバルはなるべく無い方が良い。
どうしても消せないグローバルはあると思うが、グローバルフォームっていうのは...

257:デフォルトの名無しさん
07/11/13 10:31:17
よくわかりました。
一般作法ってのは聞かないと
わからないものですから。
助かりました。

258:デフォルトの名無しさん
07/11/13 10:42:24
Win9xを考慮しなくて良いなら別に動的に作らんでも良いんじゃないの~

259:デフォルトの名無しさん
07/11/13 10:59:08
別に全部グローバルで良いんじゃないの~
ってこと?

260:デフォルトの名無しさん
07/11/14 08:03:49
>>258
VB or JAVA プログラマみたいな発想でつな

261:デフォルトの名無しさん
07/11/14 10:56:40
BuilderはVB感覚で使ってるからね~

262:デフォルトの名無しさん
07/11/14 12:42:39
VB->BCBはまったく違和感がない。
最近ここに張り付いたBCB5厨だけど、
ヴァーアップを考えています。
ターボCとBCB2007のどちらかとおもっています。
ベンダーのページみたら
ターボCでもいけそうな・・・
どうなんだろ。
用途は、ちょっとしたアプリ程度で、通信なんか使わない。

263:デフォルトの名無しさん
07/11/14 13:17:22
>用途は、ちょっとしたアプリ程度で、通信なんか使わない。

今の時代超便利だお。

だってIndyをポトペタしただけで、データ渡しの手段が増えるんだから。

264:デフォルトの名無しさん
07/11/14 19:20:09
へぇ。
ターボCでもOK?ですか

265:デフォルトの名無しさん
07/11/14 19:47:34
って、言ったけど・・・。
ターボCの情報はスレチガイでつか?

266:デフォルトの名無しさん
07/11/14 19:47:51
YES

267:デフォルトの名無しさん
07/11/14 21:15:22
んなこたーない

TurboC++Expはコンポーネントの追加ができないからプロジェクトにIndyのユニット追加してソース上で自分で宣言/newしないとダメ。
Pro買うんなら2007かっとけ(TurboC++ = C++Builder2006 = C++Builder10)

268:デフォルトの名無しさん
07/11/16 08:33:42
SQLでLIKE %あ%としたときに
パソコンによって
あ ア ア が対象になるパソコンと
あ しか対象にならないパソコンがありますが
なにか環境が必要になってくるのでしょうか?
いろいろ調べてますが決め手がわかりません
よろしくお願いします。

269:デフォルトの名無しさん
07/11/16 11:12:43
>あ ア ア が対象になるパソコンと
>あ しか対象にならないパソコンがありますが
んなこたーない
LIKE '%あ%' クォートつけるべし
スレ違いだ

270:デフォルトの名無しさん
07/11/19 00:20:19
static_castって、何をするものなのですか?普通の型変換と何が違うのでしょうか。
コードを書いていて、うまくいくのだけど、何をしているのか分からないと気持ち悪いし、問題もあるだろうし。


271:デフォルトの名無しさん
07/11/20 10:19:20
URLリンク(ray.sakura.ne.jp)

272:デフォルトの名無しさん
07/11/20 22:27:43
>>271
トン。読んでみます。

273:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/27 10:51:04
物が違うから。

275:デフォルトの名無しさん
07/11/27 11:12:57
pがNULLってのは勘違いのはず。ただ無効な領域を指しているのでアクセスした時の動作は不定。

p = lst->Text.c_str()の実際の動作は、p = lst->GetTextStr().c_str()なので、
pはGetTextStrが返す一時オブジェクトが持つバッファを指していることになる。
上の式の評価後に一時オブジェクトは破棄されてpの参照先も無効になる。

276:デフォルトの名無しさん
07/11/27 15:04:54
ひさびさにくだスレが正常に機能してる例をみた

277:273
07/11/27 20:10:11
>>275
超ありがとうございます。
とてもよくわかりました。
ちゃんと表示されていないのは大きな文字列のときでした。
小さな文字列のときは、一時的なバッファがたまたま破壊されなかったので
正常に動いているように見えたのですね。


278:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/28 08:05:12
fianlly

280:デフォルトの名無しさん
07/11/28 08:47:01
無理でしょ

281:デフォルトの名無しさん
07/11/28 10:21:32
むしろresult作らない理由がないとおもう。
コスト云々なら例外処理やめてgotoで(A)に飛ばした方がはるかにコスト低いし。

282:デフォルトの名無しさん
07/11/28 10:28:46
どちらかというと、finallyはDelphi用であって、C++には元々無いもの。
Delphiにfinallyが必須なのはFreeのためであり、C++ではローカルオブジェクトの使用が推奨されている。

try finallyとtry except(←こっちはC++標準)のネストやその中でのthrow や return は言語規定されてないんじゃないかと思うのでやヴぁ目。

逆にローカル変数やローカルオブジェクトは推奨なので、
>result変数を作る以外の方法はないでしょうか?
という考えがワケワカメ。

283:デフォルトの名無しさん
07/11/28 10:34:18
C++でもWindowsAPIのハンドル閉じたりするのにfinallyは有用よ。
最近のC++処理系は大抵__finally使えるし。

284:デフォルトの名無しさん
07/11/28 10:37:50
finallyが有用なのと各種処理系で実装されているのは認めますが(実際自分も使ってる)、
finallyと例外catch(上では間違えてexceptって書いちゃった)系や、returnを組み合わせちゃダメ。

何でかっていうと、tryを2つ組み合わせて、その中でreturnすると、一番外のfinallyを通過しない。
ソースコードを読む上ではfinallyは必ず通るって頭で読むから、バグの元になるだけだお。

285:デフォルトの名無しさん
07/11/28 11:50:46
むしろreturnできる処理でどう__finally使うのか

286:デフォルトの名無しさん
07/11/28 11:59:47
その通り。

・finallyするなら複数箇所でreturnするな
・複数箇所でreturnするならfinallyするな


あと、プログラミングテクニック的には、
関数やメソッドから抜ける箇所は1箇所にするとコーディングバグを防げる。
つまり、複数箇所returnはやめるべき。

(これも適材適所で、使い方によっては便利なときもあるけどね)

287:デフォルトの名無しさん
07/11/28 12:23:07
>>285
Delphi で Exit の後に finally が実行されるのを利用するのと同じで

ローカル変数のデストラクタは return の後に実行されるのだろ?

288:209
07/11/28 14:22:59
TListBoxのn行目を「マウスでクリックした状態」にするにはどうすればいいのでしょうか?

289:デフォルトの名無しさん
07/11/28 16:12:00
SelectedIndexプロパティ とかなかったか?

290:288
07/11/28 17:53:35
Selected[n]でいいようです。ありがとうございました。

291:278
07/11/28 20:50:41
>>280-287
有難う御座いました。
各種参考にさせていただきます。

292:デフォルトの名無しさん
07/12/02 22:09:08
GetWindowLong(hwnd, nIndex)を使って、
すでにわかっている他アプリの子ウインドウ(ツールバー)の
位置変更およびサイズ変更をフックしたいと考えています。
フック自体良くわかっていません。

別に横取りして変更を加えるつもりはありません。スルーします。
単にバーの座標と幅・高さがユーザによって変更されたことの
通知がほしいだけです。
WM_MOVE
WM_SIZE
をつかって云々と他板での情報ですが、
WinAPIプログラマーリファレンスを見ても、

GetWindowLongとWM_MOVE・WM_SIZEのつながりが見えてきません。

再度申しますが、ユーザの変更知りたいだけで、座標データ等は取得済みです。
環境WinXP BCB5

293:デフォルトの名無しさん
07/12/02 22:17:45
GetWindowLong(HWND, GWL_WNDPROC)は対象が自プロセスじゃないと使えない。
SetWindowsHookEx使ってフックDLLからフックしないと無理。

294:デフォルトの名無しさん
07/12/02 22:35:17
なるほど。ますますわからん。
bcbのコード少ないからなぁ。
タイマーなんか使って
こちらからアプローチすれば、座標データが
わかっているんで、比較するだけで変更こそは
感知できるんですが、
ユーザーの変更を感知したいんですよね。
もう少し精進してみます。

295:デフォルトの名無しさん
07/12/02 22:45:19
BCBじゃなくてWin32APIの問題

296:デフォルトの名無しさん
07/12/03 20:00:56
292です。
マルチいやだから書くけど、
Win32APIスレに転載して
もまれて来ます。
とりあえず、一日放置してから
明日くらいにカキコしてみます。

297:デフォルトの名無しさん
07/12/08 10:37:10
WinExecを使って自アプリAから他のアプリBを起動しています
アプリB処理完了後に自動で終了するものなのですが
アプリAからアプリBが終了したのを調べる方法はありませんか?
Aからデータを渡しながらBを順次稼動させたいのですが

298:デフォルトの名無しさん
07/12/08 11:06:25
CreateProcessをどうして使わないの?
どうしてもWinExecって事だと実行ファイルを開いてみてロックされてるかどうか見るか
パソコン上のプロセスを列挙させるかだけど、他に実行されてると厄介だし
手間はズーっと大変だろうに

299:297
07/12/08 12:50:35
単純に知りませんでした
CreateProcessなら簡単にできるのかな
少し調べてみます

300:デフォルトの名無しさん
07/12/08 12:54:23
CreateProcess()
WaitForSingleObject()
CloseHandle()
このあたりでしょうかね?


301:デフォルトの名無しさん
07/12/08 18:53:47
プロジェクト開こうとしたら、プロジェクトルールがみつかりません
って出るんだけど、これ何が原因ですかね?

302:デフォルトの名無しさん
07/12/10 14:04:15
TForm上に配置した複数のTCheckBox同士をDnDして位置を変えたいのですが
Checked値を変える為にクリックしただけでOnDragOverイベントに飛んでしまいます。
これらを切り分けるにはどうすればいいのでしょうか。

303:デフォルトの名無しさん
07/12/10 17:25:00
TMemoryStream::LoadFromFile にて大きなファイルを読み込もうとすると
「メモリストリームの拡大中にメモリが足りなくなりました」と言われます
OSはXP、ファイルの具体的なサイズは1,382,526,976バイトです
確かにちょっと大きめのファイルですが何とか読み込みたいのですが
BCBでは読み込めないサイズなのでしょうか

304:デフォルトの名無しさん
07/12/10 18:52:11
搭載メモリは1GBという落ちか


305:デフォルトの名無しさん
07/12/10 19:08:12
ストリームなんだからファイルストリームでシークしてアクセスすればいいと思うんだけどな
どうしてわざわざメモリに読むのだろ?

306:デフォルトの名無しさん
07/12/10 19:20:11
メモリに取り込みたいって、高速処理したい以外に理由はあるんかね?


307:デフォルトの名無しさん
07/12/10 20:03:55
>>303の環境に十分な空き領域があっても、仮想メモリ空間内で"連続して"1.3GB分の空き領域がないと
メモリの確保には失敗する。どうしてもメモリに置きたいなら、小さいブロックに分けないと。

308:デフォルトの名無しさん
07/12/10 21:35:44
私もオフセット指定でシークするのを薦めるな

309:デフォルトの名無しさん
07/12/11 08:56:45
303です。
暗号化させるのにどかんと読んでどかんと処理させたかったのですが
僕のやり方は非常識だったんですね(苦笑)方針を変更してみます
ありがとうございました

310:デフォルトの名無しさん
07/12/11 09:41:41
大きなファイルはメモリに読むだけでも処理時間がかかるし、その間操作出来ないから
ユーザにはストレスがかかるだろ?
それに仮想記憶の機構ってのはHDDのキャッシュの機構でもあるから、
ハードディスクをブロック的にアクセスするのもメモリに読むのもそうスピードは変わらない。

ブロック単位に読んで処理するのが一般的だし最速だと思うよ。
途中でユーザーはキャンセルも出来るしね。


311:デフォルトの名無しさん
07/12/11 10:58:30
データベースをパソコンで動かすようになってから、巨大ファイルは
一度にメモリに読み込んで処理するような機会は無くなってきたと思う。
1レコードが固定長ならランダムアクセスが出来るし、必要なインデックス
番号でシークすればいいのだから。

312:デフォルトの名無しさん
07/12/14 20:32:36
ボタンを押したら、あらかじめbuilderで作っておいたexeファイルを実行(開く)にはどうすれば良いですか?

313:デフォルトの名無しさん
07/12/14 20:45:49
他のプロセスとして実行させるなら
1, ShellExecute CreateProcess WinExec の windowsAPI

2,execl / execv とかのprocess.h

どっちか

314:デフォルトの名無しさん
07/12/18 14:14:59
>>311
固定長じゃなくてもインデックス作っとけばランダムアクセスできるじゃん

315:デフォルトの名無しさん
07/12/18 14:22:03
可変長だと読み込みはよくても、書き込み時にサイズ変わると大変だな

316:デフォルトの名無しさん
07/12/28 12:05:19
ちょっと良くわからないなりに
以下のようなソースを
書きました。
ColorDialog1->Color=(TColor)iFontColor;
if(ColorDialog1->Execute()){
iFontColor=ColorToRGB(ColorDialog1->Color);
}

#255255255 or #FFFFFF
のような値を得たいのですが、
どうしたら得られるでしょうか?

317:デフォルトの名無しさん
07/12/28 13:14:02
このコードならiFontColor にその形式で入ってる筈だけど?


318:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/28 13:49:21
char 配列とのunion かchar ポインタでアクセスするか

iFontColor & 0xff;
(iFontColor>>8) & 0xff;
(iFontColor>>16) & 0xff;

とやるか

320:デフォルトの名無しさん
07/12/28 14:32:22
やっぱり深みにはまってしまった模様。
即レスいただけると大変ありがたいのですが、
内容が理解不能ならあせりますね。
iFontColorの構造をもう少し調べてみます。

321:デフォルトの名無しさん
07/12/28 15:04:50
iFontColor=ColorToRGB(ColorDialog1->Color)
でiFontColorの値が
14811135で
フォトショップで得た値
FFFBE7
相関関係が見えてきません。

322:デフォルトの名無しさん
07/12/28 15:16:12
ただのビット演算じゃないの?

323:デフォルトの名無しさん
07/12/28 15:23:36
14811145は16進でE1FFFF。
TColorはBGRの順だから、RGBだとRとB入れ替えてFFFFE1。

324:デフォルトの名無しさん
07/12/28 15:43:26
理解できました。
14811145
ではなく
14811135
でした。
ありがとうございました。


325:デフォルトの名無しさん
07/12/28 16:42:31
ちなみにTColor = COLORREFだからGetRValue()マクロとか使えば簡単に色成分取り出せる

326:デフォルトの名無しさん
07/12/28 20:18:30
厳密にはTColor = COLORREFではない。


327:デフォルトの名無しさん
07/12/29 11:46:28
$00FFFFFF
右6桁がBGRだべ

328:デフォルトの名無しさん
07/12/29 13:09:30
VCL&C++ってキモイな
ソース見るたびにそう思う

329:デフォルトの名無しさん
07/12/29 14:15:13
そうか。

330:デフォルトの名無しさん
07/12/29 14:19:13
VCL&Delphiは潔い
ソース見るたびにそう思う

331:デフォルトの名無しさん
07/12/29 23:51:07
できました。
ありがとうございました。
くそソース晒して手直ししてもらえるものでしょうか?
VB仕込みのソースが悲しくて

332:デフォルトの名無しさん
07/12/30 00:14:23
どんどん晒せ

333:デフォルトの名無しさん
07/12/30 01:11:37
でも、かなり痛いソースですよ
痛いなりに面倒みてもらえたらいいんですが
プロのソースみてみたいし。
擦違いのような

334:デフォルトの名無しさん
07/12/30 01:47:06
別にスレ違いとは思わないけど2chでやるのは無理がないか

335:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/30 13:27:44
スゲーコンパクトでシンプルだ
礼をもうします。

339:デフォルトの名無しさん
07/12/30 15:51:34
BRGってのはミス?

340:デフォルトの名無しさん
07/12/31 09:16:27
LMD Toolって何ですか?
英語でよくわからないのですが、
日本語サイトないですかね?


341:デフォルトの名無しさん
08/01/01 04:46:46
URLリンク(pc5.2ch.net)
にある方法を使ってコンポーネントを置き換えた場合、オブジェクトインスペクタで指定したイベント対応コードが実行されません。
普通に配置したコンポーネント同様に、イベント対応のコードを実行させるにはどうしたらいいのでしょうか。
よろしくお願いします。

342:デフォルトの名無しさん
08/01/01 08:43:04
>>341
URLリンク(homepage1.nifty.com)

343:デフォルトの名無しさん
08/01/01 14:33:37
>>342
ありがとうございます。

344:デフォルトの名無しさん
08/01/02 15:07:36
C++Builder2007のエディタの支援機能が誤作動してるみたいで、
改行するたびに余分な}が勝手に入力されるんだけど、これって直らないの?

誤作動するのは次のコードの前後からみたいだが。

char c[2]="\"";





345:デフォルトの名無しさん
08/01/02 23:31:40
QCには出てないね。登録を依頼してみたら?

346:デフォルトの名無しさん
08/01/06 16:33:14
Turbo C++ を始めようと思ったのですが、
.Net frame work v1.1のインストールができません。
WindowsXP SP2で、Windows Installerサービスは起動してます。
何か気をつけなければならない要素ってありますか?

347:デフォルトの名無しさん
08/01/06 18:00:03
>346
個別にMSのサイトからダウンロードしてインストールしてみたら?
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)

348:デフォルトの名無しさん
08/01/06 18:26:53
>>347
おっ うまくいきました
ありがとうございました~

349:デフォルトの名無しさん
08/01/06 19:45:55
Windows Updateとかでセキュリティ関係の更新プログラムを適用するのを忘れないようにね、

350:デフォルトの名無しさん
08/01/07 16:13:08
C++Builder起動直後のブラウザ画面で、
どのメニューをクリックしても反応しないのですがどうしたらなおりますか?
ブラウザは普段はIE6(sp1)+Sleipnirを使っています

351:350
08/01/08 20:50:37
IEのインターネットオプションで、bds:/を信頼済みサイトに登録してみましたが駄目でした
ここで不具合でた人いないのかなぁ・・・

メニューのヘルプ>ボーランドのホームページ
を選択すると、ブラウザでURLリンク(www.borland.com)が開き、
この画面では、普通にブラウジングできるので、
bds:/だから駄目なのかな、と思ったのですが・。・・

352:デフォルトの名無しさん
08/01/08 21:03:13
バージョンくらい書けよ


353:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/10 03:09:25
すいません
16進数が入ったBYTE型変数を10進数のINT型の値に変換するにはどうすればいいですか?

355:デフォルトの名無しさん
08/01/10 08:03:39
「16進数が入ったBYTE型変数」
の意味が判らん。

もしかして単なるBYTE = unsigned char の配列か?
ASCIIで文字列が入ってるなら '$'を足して StrToInt とかだが
配列ならどっちが上位なのか判らんけど 256倍しながら加算すればいいだけ


「10進数のINT型の値」も意味が判らんが、後で10進数で表示したいって事なら、そんな情報は胸にしまっとけ
パック10進でって事なら、そう書け

356:デフォルトの名無しさん
08/01/15 21:20:38
Turbo C++ Builderで、XPスタイルのボタンって作れますか?

357:デフォルトの名無しさん
08/01/16 00:04:00
>>356
TXPManifestをパレットからフォームに適当に配置する

358:デフォルトの名無しさん
08/01/16 00:56:43
>>357
ありがとう
もうCodeGearについていく

359:デフォルトの名無しさん
08/01/16 08:20:08
俺も

360:デフォルトの名無しさん
08/01/16 13:36:25
C++Builder 2007ではその必要すらないのだが

361:デフォルトの名無しさん
08/01/16 22:17:55
シリアルポートからのオン信号とオフ信号を受信してその間の時間を表示するだけのプログラムを
作りました、最大でも約5秒程度です、パソコンによっては遅くカウントされてしまいます。
いろいろなパソコンで試して見ましたが、パソコンのスピードやWIN2000 win xp とか関係なく
正しく計測されるパソコンもあります、何かパソコンの設定のような気もしますが
どなたかわかりますか? c++builder5 pro で作ったプログラムです。

362:デフォルトの名無しさん
08/01/16 23:03:39
>>361
> シリアルポートからのオン信号とオフ信号を受信して

受信処理はどうなってるの?というかオン信号とオフ信号って?

> その間の時間を

どうやって取得してる?

> 何かパソコンの設定のような気もしますが

まず自分のコードを疑おう。

> どなたかわかりますか?

エスパー求むってこと?

363:デフォルトの名無しさん
08/01/16 23:28:12
>>362
説明不足でした。
特定コマンドをオン信号 オフ信号として判断してます。


364:デフォルトの名無しさん
08/01/16 23:41:13
このスレには超能力者は存在していない。
阿呆の見本なら居るようだが。


365:デフォルトの名無しさん
08/01/17 07:40:26
>>363 キミが困ってるのは時間表示の結果が思うようにならないって事なんだろ?
試しに複数の方法で計測してみたらどうだ?

1、VCL  Now() 関数の差
windowsAPI
2 GetTickCount()の差
3 GetMessageTime()
4、timeGetTime()
5、QueryPerformanceCounter()/QueryPerformanceFrequency


366:デフォルトの名無しさん
08/01/17 08:37:09
>>365
親切に対応して頂き有り難う御座います。
試してみます。

367:デフォルトの名無しさん
08/01/17 09:51:17
あとはシリアルポートの通信速度の設定とか

368:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/19 19:54:10
CodeGear C++Builder2007の評価版を使っています。
BCB5で作ったソースを読み込み実行すると
パラメータSenderは一度も使用されないと警告がでます。
気になります。
警告を外すのもなんですし。
警告が55もだされるのもいやなんですが。
みなさんはどんな感じなのでしょうか?

void __fastcall TForm1::Button8Click(TObject *Sender)

ちなみに呼び方はBCB7でOK?

370:デフォルトの名無しさん
08/01/19 20:43:28
C++Builder(BCB7ではなくC++Builder2007かBCB11だと思う)を持ってないんであてずっぽなんだけど、
void __fastcall TForm1::Button8Click(TObject *)
{...
とかパラメータを型だけにして仮引数名を書かないってのはだめですか?


371:デフォルトの名無しさん
08/01/19 20:51:06
(TObject *)

がっつり怒られました^^;

372:デフォルトの名無しさん
08/01/19 20:55:05
あ、cppだけSenderを消したらコンパイル通りました。
いろいろやってみます。
Senderってなんだっけ?
調べてみます。ども、助かりました。

373:デフォルトの名無しさん
08/01/19 21:01:26
自己解決
timeGetTimeの戻値を加算で出来ました。


374:370
08/01/19 21:06:48
Senderはそのイベントを起動したオブジェクト。この場合はButton8へのポインタが入っている。

375:デフォルトの名無しさん
08/01/19 21:06:59
SenderのほかにShiftとかX・Y・Buttonとかあったので、
消したら警告はきれいさっぱり。
ほんとにいいのか?ま、いいか

376:デフォルトの名無しさん
08/01/19 21:20:42
>>374
了解です。

377:デフォルトの名無しさん
08/01/19 21:45:26
>>373
完全にオーバースペックになるけどパフォーマンスカウンタ使うと恐ろしい精度で計測できるよ

378:370
08/01/19 22:17:20
使わないパラメータは名無しでおk

379:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/01/21 16:43:01
LoadImageでサイズ指定してみては?

381:デフォルトの名無しさん
08/01/21 19:55:02
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、

本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)

今になって分かりました。
彼らもまた、理解できていなかったのです。

プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
(何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、
 その証拠にC言語の学習で悩む人がどんなに多いことか)

私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。

私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。

そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。

宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。

プログラムの世界そのものの実力を底あげに貢献し、
無意味なバグに、残業したり、悩んだりして欲しくないのです。

興味がある方はどうか、下のサイトをみてみてください。
URLリンク(mori.eco.to)

382:デフォルトの名無しさん
08/01/21 21:42:30
日本語でおk

383:デフォルトの名無しさん
08/01/21 21:49:20
そろそろひろゆきの目に止まって多額の広告料金請求されっぞ

384:デフォルトの名無しさん
08/01/22 00:03:25
>379
ExtractIconEx

385:デフォルトの名無しさん
08/01/22 00:03:53
ごめん。リソースからなら違うや

386:デフォルトの名無しさん
08/01/22 00:14:57
>>381
おまえ、2chに宣伝出したら、広告料すごいぞ?
最初にレス書いた時の許諾事項は読んだよな?大丈夫なのか?

387:デフォルトの名無しさん
08/01/22 10:07:36
私の年収は10億万円なので大丈夫です。

388:デフォルトの名無しさん
08/01/23 00:33:41
俺の年収は一兆億円だもんね!

389:デフォルトの名無しさん
08/01/29 03:30:36
TForm1->Release;
としたあと、その開放完了をWaitForSingleObjectのように低い負荷で待ちたいと考えています。
どのようにすればよいでしょうか。
よろしくお願いします。

390:デフォルトの名無しさん
08/01/29 07:50:02
他のスレッドで待ちたいの?
どっちにしても、メインスレッドでメッセージポンプ回してやらないとPostMessage
しただけじゃいつまでたっても終了しないよ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch