くだすれC++Builder(超初心者用)その3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2007/02/12(月) 03:39:51もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。
Borland Home Page http://www.borland.co.jp/
<過去スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/l50
<兄弟スレ>
くだすれDelphi(超初心者用)その39
http://pc10.2ch.net/test/read.cgi/tech/1169386914/l50
0002デフォルトの名無しさん
2007/02/12(月) 03:40:19【Turbo】Borland Developer Studio 2006 No.11
http://pc10.2ch.net/test/read.cgi/tech/1167186538/l50
C++Builder相談室 Part17
http://pc10.2ch.net/test/read.cgi/tech/1162918887/l50
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/l50
タダで使えるBorland C++ Part5
http://pc10.2ch.net/test/read.cgi/tech/1135127048/l50
Boostを語れゴラァ part3
http://pc10.2ch.net/test/read.cgi/tech/1158991211/l50
スレを勃てるまでもないC/C++の質問はここで
http://pc10.2ch.net/test/read.cgi/tech/1167476845/l50
【C++】STL(Standard Template Library)相談室 6
http://pc10.2ch.net/test/read.cgi/tech/1160821240/l50
0003デフォルトの名無しさん
2007/02/14(水) 11:53:410004デフォルトの名無しさん
2007/02/19(月) 02:11:15DelphiではusesにMathとか追加していくけど、BCBではどこに(#include <Math.hpp> を)書けばいいですか。
.h に書くのか、.cppに書くのか。.cppなら、#pragma hdrstopの前か後に書くのか、定石を教えてください。
0005デフォルトの名無しさん
2007/02/26(月) 13:25:580006デフォルトの名無しさん
2007/02/26(月) 15:27:44ヒント:エクスプローラー、名前の変更
0007デフォルトの名無しさん
2007/02/28(水) 07:12:16見る方法は検索できましたが、
GUIアプリで作ったとき、printfの標準出力を
見ることは、できないのでしょうか?
0008デフォルトの名無しさん
2007/02/28(水) 17:05:310009デフォルトの名無しさん
2007/03/01(木) 17:51:47フォーム上で画像ビュアの様なカタログ?形式のを
作ろうと思っているのですが
TImage等をプログラム上で
自分で作って並べていく事は出来るのでしょうか?
宜しくお願いいたしますm(__)m
0010デフォルトの名無しさん
2007/03/01(木) 17:55:57Image->Parent = Panel1; //パネルの上に置く
0011デフォルトの名無しさん
2007/03/01(木) 18:07:15やってみますm(__)m
0012デフォルトの名無しさん
2007/03/04(日) 22:42:03のコードを本に倣って一から打ち込んでるんですが、メインフォームでカ
ードの表示位置とかを決めるところまでは終って、次に敵というか、コン
ピュータ側のクラスを定義する為にユニットを新規作成してそこに敵のク
ラスを定義することになってるので、hファイルにデータメンバーを定義
とメソッドの宣言をして、最後にメソッドの定義をcppのほうに書いたんだ
けど、実行しても該当するメソッドが未解決というエラーがでて実行でき
ないんですが、どうすれば良いのでしょうか?
いろいろ試したけど、敵のクラスを定義したユニットのcppのほうは一切チ
ェックされてないのでメソッドの定義書こうが何書こうが一切関係ない状
態になってます。
0013デフォルトの名無しさん
2007/03/05(月) 02:13:26*.cppがプロジェクトに登録されていない
メソッドを呼出すソースファイルで*.hをインクルードしていない
この二つを確認
遠い昔にその本で勉強したことがある
たしか誤植が数箇所あった
そのままだと動かないソースファイルが1つあったはず
>>12氏が引っかかってるのがそこかどうかはわからないが
0014デフォルトの名無しさん
2007/03/05(月) 13:12:00表示されない方法ってないでしょうか?
001512
2007/03/05(月) 19:25:41ご指摘のとおり、cppがプロジェクトに登録されていませんでした。
あと、やはりこの本は誤植が多くて、今回の部分で云えば件のcppで
定義したメソッドの為にあるヘッダーファイルが必要なのですが、そ
の記述が抜け落ちてました。(一応、C++の入門書一冊読んでたので
それはすぐにわかりましたが。)
的確なご指摘、ありがとうございました。
0016デフォルトの名無しさん
2007/03/06(火) 19:10:510017デフォルトの名無しさん
2007/03/10(土) 20:25:47printfを使用した次の行に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が最初に実行されるのでしょうか?稚拙な文章ですみませんが回答よろしくお願いします。
0018デフォルトの名無しさん
2007/03/10(土) 22:45:33AllocConsole()で検索
俺は開発環境の入ってない環境でのテストに良く使うな。
0019デフォルトの名無しさん
2007/03/11(日) 15:49:36setvbufとか
fflushとか
0020デフォルトの名無しさん
2007/03/20(火) 11:17:452006Turbo C++で表示で開いた
ツールパレットなどを現在位置で覚えておけないでしょうか?
再度立ち上げると前に出した物が消えて
初期状態に戻ってしまいます........orz
0021デフォルトの名無しさん
2007/03/23(金) 11:42:53それを他のcppから参照?呼び出しさせるような簡単なサンプルや
解説をしているhpは無いでしょうか?
宜しくお願いいたします
0022デフォルトの名無しさん
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です。
002322
2007/03/28(水) 22:28:55VCで同じようなことをして見ましたが、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
0024デフォルトの名無しさん
2007/03/29(木) 10:40:58Set8087CW(0x133f);
のようにすれば浮動小数点演算からの例外は出なくなるよ
002523
2007/03/29(木) 11:22:50BCB6の出方とはちょっと違うみたいですけど、それはおいといてとりあえず
進めてみます。ぐぐって見ると計算精度に関係しそうなのでちょっと心配。
その辺はぱっと見なのでまた調べてみます。
ちなみに1e+300とかそんな結果を無理矢理intにキャストするなんてのが
そもそも間違えだということでいいんですかね?
・・・にしては挙動がおかしいので・・ちょっと気になりました。
0026デフォルトの名無しさん
2007/03/29(木) 11:41:39a = static_cast <int> (d);
でいいと思うんだけど・・・どーなんでしょ
0027デフォルトの名無しさん
2007/03/29(木) 11:51:54除算とは独立に 例外を出す出さないを設定出来るから
002823
2007/03/29(木) 13:16:12やってみましたが、>>23と同じ結果でした。
>>27
>例外が設定されてたら例外が出るというだけでしょ
それが挙動不審で、例外キャッチできなかったりするので、どうなのかなと思ったのです。
あと、発生するのがBDS2006だけなので・・・
>除算とは独立に 例外を出す出さないを設定出来るから
設定とは何処にあるのでしょう?なんだかいっぱい設定があって・・・
Set8087CW(0x133f)では除算の例外もマスク?されてしまうみたいなので
出来ればそちらで対処できるならそうしたいです。
0029デフォルトの名無しさん
2007/03/29(木) 13:32:50var CWtemp:WORD;
function Get8087CW: WORD;
asm
FSTCW CWtemp;
mov AX,CWtemp;
end;
どのビットが何なのかは、intelのマニュアル読めば判るんだし
0030デフォルトの名無しさん
2007/03/30(金) 05:11:46表示->デバックのCPU、FPUっていうウィンドウ
の見方がわかると、エラーの発見はやくなりますか?
コンパイルして、エラーが出てきたとき、
たまにエラー出ますが、そもそも何のために表示されるのでしょうか。
どんなキーワードで、ググればいいのかもわかりません。
よろしくお願いします。
003123
2007/03/30(金) 10:24:00BCB6では計算の前後で0x1273に設定しているのに対してBDS2006では前後で0x1372に
なっていました。そこで、Set8087CW(0x1273)を最初に追加してBDSで実行したところ、
BCB6と同じ動作になったように見えました・・・・・・が、
他の浮動小数点エラーを起こすと何らかの拍子で戻ったりしてしまいます。
ちょっと待つとまた意図した動作に戻るんですけどね。
浮動小数点関連が呼ばれるたびにFPU_CWを読み書きしているみたいなので
その辺で引きずられてエラーが出てしまうのか?
いずれにせよ、意図している動作に近づいてきた感じです。
ところで質問ですが、この現象っておいらだけでしょうか?
大分はまったので別の環境で試してみたのですが、こちらも同じでした。
結論としてはそういう使い方しちゃダメよってことなんでしょうけど;;
例外処理で補足出来ないとかって、よくあることなんでしょうか?
そもそも例外処理なんかイリーガルな使い方ということなのかなぁ・・・
何万本?も出ているソフトということを考えるとおいらの考えがおかしいんだろうな。
・・きっと。うん、そうだ。
ちょっとしたコントローラだけにしか使わないおいらにとってはハードルが
高そうです。
0032デフォルトの名無しさん
2007/04/05(木) 15:36:51TForm *a[10];
a[0] = new TForm(this);〜9まで
の様な感じで制御するフォームを作ったのですが
一つの(たとえばa[0])内部処理で数値を代入すると他の
フォームまで同じ数値が入ってしまいます
これを干渉しないようにするにはどうしたら良いのでしょうか?
一つのフォームを雛形にして
同じ形式の独立したフォームを幾つも作りたいのですが
宜しくお願いいたしますm(__)m
0033デフォルトの名無しさん
2007/04/05(木) 15:38:50TFormだとややこしいですね
TOrgFormは自分でフォームを追加した物です
TOrgForm *a[10];
a[0] = new TOrgForm(this);〜9まで
0034デフォルトの名無しさん
2007/04/06(金) 21:23:12質問内容からして超々初心者みたいだけど
そんだけの情報ではどこがバグっているのかなんてわからんよ。
ちゃんと別々にnewして作成して、かつ別々に参照しているなら干渉するなんてことは基本的にはありえん。
0035デフォルトの名無しさん
2007/04/07(土) 00:23:40有り難う御座います
本当にこれだけなんですよ(^^;
何故か
a[0]->Show();
a[1]->Show();
でフォームを出して
たとえばフォームの中に int aint;と言うが有るとして
a[0]の方に任意の数値を入れると
a[1]の方にも同じ数字が入ってるというような感じで...orz
もうちょっと色々試してみます
0036デフォルトの名無しさん
2007/04/07(土) 00:44:03何だったんだろ....orz
お騒がせしました有り難う御座います
0037デフォルトの名無しさん
2007/04/08(日) 09:21:450038デフォルトの名無しさん
2007/04/14(土) 07:53:01xxx->Font->Style=TFontStyles()<<fsBold<<fsUnderline; // 太字下線付き
ようにして出来ることはわかったのですが
フォントが太字下線付きに設定されているかを調べる(値を読み出す)方法がわかりません。
どうすればいいのでしょうか。
0039デフォルトの名無しさん
2007/04/14(土) 11:26:56if(xxx->Font->Style.Contains(fsBold) == true)
ShowMessage("太字です");
else
ShowMessage("太字ではありません");
だったかな?
0040デフォルトの名無しさん
2007/04/14(土) 22:24:28さんくすです。
Contains()というのがあったんですね。
0041デフォルトの名無しさん
2007/04/16(月) 21:40:340042デフォルトの名無しさん
2007/04/16(月) 21:49:550043デフォルトの名無しさん
2007/04/16(月) 22:16:41単にa[0]と思ったらa[1]に値入れてたってだけじゃねーの?
0044名無し@沢村
2007/04/16(月) 23:55:55C++Builderを開発環境としてどう思うわけ?
おりはC++Builderは開発環境としてつまらんと思うな。
おみゃーたー、『肥桶』つー開発環境があるの知ってる?
おりは知ってるよ。
おりがつくった言語よ。これからh『肥えた語』の時代よ。
URLはここよ↓
http://www.geocities.jp/hontamagod/
感想を頼むなー♪
0045デフォルトの名無しさん
2007/04/19(木) 12:27:020046デフォルトの名無しさん
2007/04/19(木) 12:40:28なら、不要ファイルを一度削除してみたら?
004745
2007/04/19(木) 13:19:54ありがとうございましたm(__)m
0048デフォルトの名無しさん
2007/05/06(日) 21:30:21自作のマウスカーソルを実現したいのですが
やり方がわかりません。
ぐぐったら、ここを発見しました。
http://202.33.253.145/tips/cbuilder/cb011/index.html
>イメージエディタなどのツールで、カーソルを作成し、リソースファイル(.res)に保管します。
これはできました。
>プロジェクトに作成したリソースファイルを追加します。
このリソースファイルを追加というのがやり方がわかりません。
リソース識別子をどこで指定するのかも、やり方がわかりません。
プロジェクトマネージャに追加してみたのですが、追加したCursor1.resがリンクエラーになりました。
よろしくお願いします。
0049デフォルトの名無しさん
2007/05/06(日) 21:43:04をコード上のどこかに記述、だったかな?
0050デフォルトの名無しさん
2007/05/06(日) 21:44:49○ {$R Cursor1.res}
0051デフォルトの名無しさん
2007/05/06(日) 21:59:450052デフォルトの名無しさん
2007/05/06(日) 22:58:00void main(void)
{
int i = 1;
int *p1;
int *p2;
p1=&i;
p2=&i;
*p1++;
*p2++;
i++;
printf("ド○ゴンクエストは%dが一番おもしろい\n", i);
}
3と表示させたいのですが、どうも
*p1++;
*p2++;
が評価されていないようです。
どこがおかしいのか教えてください。
005348
2007/05/06(日) 22:58:03解答ありがとうございます。
パスカルユニットを作成してUnit1.pasをプロジェクトに加えました。
しかし
[リンカ エラー] Error: 不明な RLINK32 エラーです
というのが出てしまいます。
それと、リソースIDはどこで指定するのでしょうか。
うーん、難しいですね。
0055デフォルトの名無しさん
2007/05/06(日) 23:06:19int *p1;
int *p2;
ですので、
*p1++;
*p2++;
で値の増加のはずですので、そこではないと思うのですが・・・
0056デフォルトの名無しさん
2007/05/06(日) 23:15:03(*p1)++
のように
0057デフォルトの名無しさん
2007/05/06(日) 23:20:18できました!
ひょっとして1++が先に評価されてしまって、結果p2という意味の無い式文になっていたのでしょうか?
0058デフォルトの名無しさん
2007/05/06(日) 23:28:50とりあえず、俺達は出来てるんだから、何か間違ってるんだろ。
後は自分で調べてくれよ。
パスカルユニット使わない方法もあったように思うぞ。
0059デフォルトの名無しさん
2007/05/06(日) 23:29:53いや違う
*p1++ は *(p1++) の事。 つまりアドレスが先にinc されて 1つ次のメモリを壊してる
0060デフォルトの名無しさん
2007/05/06(日) 23:31:47なるほど。
しっかり理解できました。
ありがとうございます。
0061デフォルトの名無しさん
2007/05/07(月) 00:18:57int main(void)
{
char str[4][20];
str[0][20] = 'こんばんわ';
printf("%s\n", str[0]);
return (0);
}
str[0] に こんばんわ と入れたいのですが、できません。
表示もなんだかおかしいです。
間違いの指摘をお願いします。
0062デフォルトの名無しさん
2007/05/07(月) 00:32:50'こんばんわ' は文字列じゃなく文字
"こんばんわ"が文字列だけど C 言語ではそのポインタになる。
だから、ポインタから文字列を自前でコピーしてやらないといけない
0063デフォルトの名無しさん
2007/05/07(月) 01:25:20つ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/
0064デフォルトの名無しさん
2007/05/07(月) 01:36:28すいません。難しいです。
誘導先行って聞いて見ます。
0065デフォルトの名無しさん
2007/05/07(月) 01:44:060066デフォルトの名無しさん
2007/05/07(月) 10:10:46今後シー加算加算ブイルダーはLinux対応しないのか????
0067デフォルトの名無しさん
2007/05/11(金) 19:22:160068デフォルトの名無しさん
2007/05/14(月) 22:03:04普通のCならscanfで取り込んでってやればいいんだけどビルダーだと出来ないからどうやればいいかわからないです;;
0069デフォルトの名無しさん
2007/05/15(火) 07:25:030070デフォルトの名無しさん
2007/05/15(火) 11:07:45間違えたら戻れるとかの機能をつけて。
0071デフォルトの名無しさん
2007/05/15(火) 11:17:410072デフォルトの名無しさん
2007/05/16(水) 15:37:48IHTMLElement * 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じゃだめ?何をインクルードすればいいかさっぱりわからんです。
0073デフォルトの名無しさん
2007/05/17(木) 16:45:21>ttp://www.codegear.com/jp/article/36469
BCB6が超安定してるんだが、Vi$ta用には逝行しなきゃならない?
007468
2007/05/24(木) 10:42:47返答が遅れてすみません。解答頂きありがとうございます。
いろいろ考えた結果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に打たせた数字を配列に格納しそれを出力させる方法がわからないです;;
どうかご教授お願いいたします。
0075デフォルトの名無しさん
2007/05/24(木) 15:08:26Edit10個でなくて、TMemo1個にした方がいいんじゃないのか?
0076デフォルトの名無しさん
2007/05/24(木) 16:07:32007768
2007/05/28(月) 09:29:38アドバイスありがとうございます。ですが今回は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)) ;
}
}
とやっているのですがうまく行きません;;
どのような方法を使えばうまく格納し出力できるのでしょうか?
くだらない質問で申し訳ありませんがどうかよろしくお願い致します
0078デフォルトの名無しさん
2007/05/28(月) 10:08:44何がうまくいかないのか不明瞭
>どのような方法を使えばうまく格納し出力できるのでしょうか?
仕様不明瞭
0079デフォルトの名無しさん
2007/05/28(月) 10:27:16アドバイスをチャント聞いてよ。
フォームにメモ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]));
}
0080デフォルトの名無しさん
2007/05/28(月) 10:44:08pWork ってなに?
syuturyoku ってなに?
つーか、ポインタってわかる?
0081デフォルトの名無しさん
2007/05/28(月) 14:11:00特定のバイナリデータを付加する方法があれば教えてください。
0082デフォルトの名無しさん
2007/05/28(月) 15:24:46ただ実行ファイルは実行されると排他処理されて書換えが出来ない。
0083デフォルトの名無しさん
2007/05/28(月) 15:36:00意味がわかりません。
バイナリを埋め込む疑似命令みたいなものがあれば教えて欲しいという意味です。
0084デフォルトの名無しさん
2007/05/28(月) 15:45:500085デフォルトの名無しさん
2007/05/28(月) 16:15:41まずC++勉強しないとどうにもならないな
CとC++は別の言語だよ
0086デフォルトの名無しさん
2007/05/28(月) 16:34:30プログラム側から読み込むため?
それとも、「特定箇所」と指定するからには、別の意図で?
前者であれば、バイナリデータ hogehoge.bin をリソースとして
埋め込む手順は以下のとおり。
res.rc を作って追加する。内容は下の一行。
hogehoge RCDATA hogehoge.bin
読み込みは以下の方法で
TResourceStream *RS = new TResourceStream((int)HInstance,"hogehoge", RT_RCDATA);
RS->Read();
0087デフォルトの名無しさん
2007/05/28(月) 16:41:15.pas なら確か {$R res.res res.rc } の1行を入れるだけ
C++だけでやりたい場合はどうやったっけ?
0088デフォルトの名無しさん
2007/05/28(月) 21:50:180089デフォルトの名無しさん
2007/05/29(火) 09:54:010090デフォルトの名無しさん
2007/05/29(火) 14:54:350091デフォルトの名無しさん
2007/05/29(火) 19:22:090092デフォルトの名無しさん
2007/05/29(火) 19:23:30Application->Terminate();
?
0093デフォルトの名無しさん
2007/05/29(火) 23:43:14VCLのデモンストレーション的コード
Form上にTTimerを1つポトリ Timer1とする
オブジェクトインスペクタでTimer1のIntervalを10000に設定
おなじくEnabledをfalseに設定
Timer1のOnTimerイベント内で
Close();
ボタンのOnClickイベントで
Timer->Enabled = true;
0094デフォルトの名無しさん
2007/06/04(月) 13:28:03int ng=0 , i=0;
while(i<20){
if(条件){
処理
ng = ERROR;
break;
}
i++;
}
それでreturn ng;で戻り値で返して、という関数を作ってメインの方に
if(monaa(unko) == ERROR){
処理
}
else{
処理
}
としてエラー処理を行っているのですがビルダーでコンパイルすると一度while文を抜けてif(monaa)の部分までいくのですが
その後またwhile文に戻ってしまいます。何か改善方法わかる方いらっしゃいませんでしょうか?
0095デフォルトの名無しさん
2007/06/04(月) 13:32:42再現する最小のコードを作ってみてくれないかな?
0096デフォルトの名無しさん
2007/06/04(月) 14:35:46デバッグすればいいだけだろ
200%バグだから
0097デフォルトの名無しさん
2007/06/04(月) 16:53:540098デフォルトの名無しさん
2007/06/04(月) 17:28:36コードエディタ上でF5を押すとその行にブレークポイントを設定できる
(行が赤くなる)ので、処理の流れを確認したい最初の部分にブレークポイントを
設定する。ただし最適化などで実行内容が存在しないとみなされる行には
設定できず、緑色になるので、コンパイルオプションで最適化を解除するなり
違う行に設定するなりすること。で実行するとブレークポイントを設定した行を
実行する*直前*にプログラムが停止してIDEに制御が戻り、対象行が青く
ハイライトされる。あとは1行実行のF8(ステップオーバ)、F7(ステップイン)や
F9(実行継続)を使って処理の流れを見る、変数の上にマウスをホバーすると
変数の値が表示される、Ctrl-F7で変数や式の値を評価、変更するなどの…
書いてて疲れた。まぁそういうことだ。がんがれ。
0099デフォルトの名無しさん
2007/06/04(月) 21:05:28みなさんいろいろありがとうございました
デバックしながら原因探ってみたいと思います。
0100デフォルトの名無しさん
2007/06/05(火) 17:02:47複数のクラス間で変数を共有する方法を教えてください
具体的には弾や敵でクラス分けされたシューティングゲームで
自弾と敵の判定を敵の動きを処理するループの中でしたいです。
0101デフォルトの名無しさん
2007/06/05(火) 21:35:20staticにすればいいんじゃない?
0102デフォルトの名無しさん
2007/06/05(火) 22:12:55すみません、本とか買ってないんでやり方がよく分からないです
変数にstaticを付けるんですか?
どこか参考になるサンプルソースが載ってるページがあったら教えて下さい
0103デフォルトの名無しさん
2007/06/05(火) 22:24:240104デフォルトの名無しさん
2007/06/05(火) 22:35:27あれ?クラスから生成した複数オブジェクト間で変数を共有するって意味だと思ってたよ・・・
もしかして異なるクラス間ってこと?
だった面倒だからグローバルにしちゃえば?
0105デフォルトの名無しさん
2007/06/05(火) 22:41:58ソースコードが長くなりそうなのでクラスに分けてファイル分割したいのですが
変数は共有したいです。
何かサンプル下さい。お願いします
0106デフォルトの名無しさん
2007/06/05(火) 23:08:17builder云々っていうレベルじゃないな。
C/C++の超初心者のお勉強をしないとプログラミングなんて到底無理。
C++の入門者向けの書籍を読みなさい。
他人に何かを聞く以前のレベルだ。
0107デフォルトの名無しさん
2007/06/05(火) 23:37:520108デフォルトの名無しさん
2007/06/05(火) 23:43:58変数宣言のprivateやpublic程度も理解していないなら
こっちで聞くべし
http://pc11.2ch.net/test/read.cgi/tech/1180877635/
こっちなら教えてくれる人もいるだろう
0109デフォルトの名無しさん
2007/06/06(水) 00:41:00>>108で正解
ちなみに、>>100をグローバル変数で処理するのも無茶でしょ
ってか純Cならそうするしかないかもしれんが、それならC++を使う旨味がなんもなし
0110デフォルトの名無しさん
2007/06/06(水) 01:08:200111デフォルトの名無しさん
2007/06/06(水) 03:42:04BCC DeveloperとC++Builder
どっち使うのがいいですか?
0112デフォルトの名無しさん
2007/06/06(水) 05:48:51BCC Developer
C++ Builderはそもそも統合開発環境でcpadやBCC Developerとは訳が違うぞ
んでこのスレはC++Builderのスレだからあとはこちらに移動
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
0113デフォルトの名無しさん
2007/06/06(水) 10:53:42数字を消せないようにすることは出来ないでしょうか?
例えばUpDownコンポーネントを付けたものに初期値を0にするように設定したものに
その数値を手動で消しても消せない、消してもまた0に戻るようにする、などは可能でしょうか?
元からEditの中身をいじれないようにする事はしたくないので・・・
0114デフォルトの名無しさん
2007/06/06(水) 11:03:040115デフォルトの名無しさん
2007/06/15(金) 19:42:08BccDeveloperでメイクをすると
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
というのが最後に出てきてメイクできません。
前日は普通にメイクできていたのと同じサンプルをコピッて貼ってもこれが出てきてしまいます。
何かファイルでも壊れているのでしょうか…
0116デフォルトの名無しさん
2007/06/15(金) 19:45:48割とありがちなミスらしくて恥ずかしい…
0117デフォルトの名無しさん
2007/06/21(木) 09:09:46ライブラリ関係の資料を探したらBoostC++ とか STLPortライブラリとか
dinkumwareとか...よく分かりせん。
何のライブラリを参考にすれば良いでしょうか?
0118デフォルトの名無しさん
2007/06/21(木) 09:53:100119デフォルトの名無しさん
2007/06/22(金) 15:11:58やっぱ、フリーのTurboC++あるから、今回なしかな
0120デフォルトの名無しさん
2007/06/25(月) 06:18:49C++Builder6のバックアップって、基本的にどのあたりを
保存しておけばよいでしょうか。
・Projects
・Include
これぐらいでしょうか。
Borlandっていう一番上のフォルダ保存しておけば
間違いないですか?
0121デフォルトの名無しさん
2007/06/30(土) 19:32:080122デフォルトの名無しさん
2007/06/30(土) 19:44:260123デフォルトの名無しさん
2007/07/02(月) 10:32:20特別な物があるのかな?
0124デフォルトの名無しさん
2007/07/02(月) 11:47:57それぞれのバージョンのBCB用に書かれたフリーウェアやシェアウェアや
製品の紹介が入っていた。
発売と同時に出すものだから、大した物は入ってなかった。
0125デフォルトの名無しさん
2007/07/04(水) 15:42:42double dBuf = 1;
SBuf.sprintf("% .0lf", dBuf);
て漢字ですが、
先頭にスペースが入らないのは何でですか?
数字の桁に応じてスペース入れたいんですが。
0126デフォルトの名無しさん
2007/07/04(水) 17:20:26sprintfからしたら、例えば数字が1桁の時はスペース何個入れりゃいいの?って話だ。
ちなみに%の後ろのスペースはいらない。
0127デフォルトの名無しさん
2007/07/04(水) 23:47:42出力結果をテキストファイルにするのってどうすんですか?
Bcc developerつかってます
0128デフォルトの名無しさん
2007/07/05(木) 00:51:14すれ違い
こっち
タダで使えるBorland C++ Part5
http://pc11.2ch.net/test/read.cgi/tech/1135127048/
0129デフォルトの名無しさん
2007/07/08(日) 21:00:30builder互換で、Linux向けのGUIのクロス開発ツールは
ないんですかねー。
0130デフォルトの名無しさん
2007/07/09(月) 08:45:450131デフォルトの名無しさん
2007/07/09(月) 14:18:25うわー、こんなのあったんですね。
ありがとうございます。
0132デフォルトの名無しさん
2007/07/17(火) 15:58:25どこかにTcpServerコンポーネントの使い方またはサンプルプログラムが無いでしょうか?
0133デフォルトの名無しさん
2007/07/19(木) 12:17:20TabSheetのCaptionが表示されないんですが
PageControlだけスタイルを適用しない方法とかないんでしょうか?
0134デフォルトの名無しさん
2007/07/19(木) 12:27:26これの意味がわからんのだが
自分のとこではCaptionが表示されないという現象は見たことがない。
それにBuilderのバージョンも書いていなければ、Xpスタイルの設定方法も書いていないので
まともな答えなど返ってこないぞ。
0135デフォルトの名無しさん
2007/07/19(木) 12:39:57BDS2006ではTXPManifestをフォームにおけばスタイルが適用されていたんですが
BCB2007からは何もしなくてもXPスタイルが適用されてしまいます。
プロジェクトオプションのアプリーケーションに「ランタイムテーマを適用する」という項目があったので
チェックを外してみましたが変化はありませんでした(ヘルプをみたらVista用のオプションらしい)
ちなみにPageControlのTabPositionというのがあるんですがご存じありませんか?
XPスタイルでも上や下なら問題なく表示されます。が、デザインの関係上、右や左にタブを配置したいんで
0136デフォルトの名無しさん
2007/07/19(木) 13:09:40Windowsの仕様
0137デフォルトの名無しさん
2007/07/19(木) 13:17:54OnDrawTabで自分で描画するといける。
0138デフォルトの名無しさん
2007/07/20(金) 00:28:160139デフォルトの名無しさん
2007/07/22(日) 08:19:03× くそっ
○ くさっ
0140デフォルトの名無しさん
2007/07/26(木) 18:32:120141デフォルトの名無しさん
2007/08/25(土) 21:52:410142デフォルトの名無しさん
2007/08/25(土) 22:05:000143デフォルトの名無しさん
2007/08/25(土) 22:13:220144デフォルトの名無しさん
2007/08/25(土) 22:39:53http://pc11.2ch.net/test/read.cgi/tech/1187213990/
自分で調べる気がないんなら
プログラミングはやめたほうがいい。
どうせ1から10まで人に聞いてすますことしか考えてないんだろ。
0145デフォルトの名無しさん
2007/08/25(土) 22:59:17�d
やっぱこれしか無いわけね・・・
0146デフォルトの名無しさん
2007/08/25(土) 23:12:120147デフォルトの名無しさん
2007/08/25(土) 23:16:57自分でC言語でソートかけたらこれしか無かったお(´・ω・`)
でも、スレ見てたら自分の質問があまりにも超初心者すぎるから、超初心者スレ立ててみるお(`・ω・´)
まりがとう
ときに、親切な方なので伺いたいのですが、他板でスレを立ててしまった場合、次スレ立てる事ができるのは
何時間後ですか?
たまに翌日立てれたり、立てれなかったり・・・
スレ違いなら諦めて撤収します
0148デフォルトの名無しさん
2007/08/25(土) 23:17:47あるものを使え
0149デフォルトの名無しさん
2007/08/26(日) 06:58:200150デフォルトの名無しさん
2007/09/01(土) 13:39:17実行時パッケージを使って構築したときはupx圧縮して何も問題なかったのに
実行時パッケージを使わないようにしてupxにかけると
「アプリケーションを正しく初期化できませんでした」
てのが二回出てきてプログラムを起動できませんでした。
実行時パッケージを使うようにしってもプログラムのサイズが54KB程度のときは
同様に起動できず…
どうなってるんですか!?教えてください><
0151デフォルトの名無しさん
2007/09/03(月) 21:50:59しるか
ASPackならうまくいくからそれでやれ
0152デフォルトの名無しさん
2007/09/04(火) 03:33:48TForm1を作っておき、親は非VCLなのでCreateParentedControlメソッドでForm1を作成すれば良さそうなのですが、どのオブジェクトのCreateParentedメソッドを呼べばいいのでしょうか。
また、CreateParentedControlの返り値はTWinControlとあるのですが、xxxx->CreateParentedControl(__classid(TForm1),親ハンドル);とした後では、作成されたTForm1へはどのようにアクセスするのでしょうか。
根本的に間違えてる気もするのですが・・・
0153デフォルトの名無しさん
2007/09/04(火) 09:12:48CreateParentedControlはstaticメソッドだからオブジェクトはいらない。クラス名::メソッド名で呼ぶ。
> CreateParentedControlの返り値はTWinControlとあるのですが、(略)
TWinControlはTFormの親クラスなんだからキャストすればいい。
form1 = static_cast<TForm1*>(TWinControl::CreateParentedControl(__classid(TForm1), hwnd));
form1->Show();
0154デフォルトの名無しさん
2007/09/04(火) 13:25:13ありがとうございます。助かりました。
0155デフォルトの名無しさん
2007/09/06(木) 06:07:26地道に書いていくしかない・・・?BCB用のサンプルコードさえ見つけられなかったです・・・
0156デフォルトの名無しさん
2007/09/06(木) 07:57:15TMemoを継承して IDropTarget インターフェースを持たせればいいよ
0157デフォルトの名無しさん
2007/09/06(木) 09:57:34http://support.codegear.com/article/35944
変数を定義して 要素を << で入れれば良いのは判ったのですが
たとえば、
Hoge( const Sysutils::TSysCharSet &c)
のような関数を呼び出すのに
delphiでHoge(['A'..'Z']) のようにしたい場合は、どう表現すればいいのでしょ?
やっぱり変数をそこで定義して入れるしかないのかな
0158デフォルトの名無しさん
2007/09/06(木) 11:06:060159デフォルトの名無しさん
2007/09/06(木) 11:36:580160デフォルトの名無しさん
2007/09/06(木) 11:39:060161デフォルトの名無しさん
2007/09/06(木) 14:23:07ありがとうございます。がんばってみます。
0162デフォルトの名無しさん
2007/09/06(木) 17:16:05たとえば、Form1::initialize()でTMemoWithDnDをnewし、Parent,Text等を設定すると、フォームにTMemoWithDnDは表示されます。
しかし、ほかのForm1内の他の関数(例えばForm1::reset())で、先ほどのTMemoWithDnDのプロパティやメソッドにアクセスしても、実行時に、うまくいかないかエラーが出てしまいます。
原因が分からず、やったことを列挙したので、わかりにくくて済みません。原因は何処にあるのでしょうか・・・
0163デフォルトの名無しさん
2007/09/06(木) 17:24:47>関数の外側でTMemoWithDnD *Memo1;と宣言しました
つまり、TForm1メンバーと、グローバルメンバーの2つの Memo1があるからでは?
0164デフォルトの名無しさん
2007/09/06(木) 17:54:52ありがとうございます。TForm1メンバーを残し、グローバルメンバーの宣言を削除してみましたが、やはりうまくいきません。逆でも同じでした。
newした関数内だと問題ないんだけどなあ・・・この辺が手がかりにならないでしょうか?
0165デフォルトの名無しさん
2007/09/06(木) 19:51:50なんか知らんが
DragMode=dmAutomaticにして
OnDragOver/OnDragDropに処理書けば
エエだけとちゃーうんか
なんか勘違いしてたらメンゴ
0166デフォルトの名無しさん
2007/09/06(木) 19:52:53ふつうこんな感じで使うよね?
(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();
}
0167デフォルトの名無しさん
2007/09/06(木) 21:17:43>>165
DragModeはコントロール自体のドラッグを制御する感じのようなので、違う気がします・・・
>>166
そんな感じで書いてるのですが・・・もう少し試行錯誤してみます。initializeとかはわたしが勝手に作ったものです。紛らわしくて済みません。
0168162
2007/09/06(木) 21:35:38Memo1 = new TMemoWithDnD(this);
とするものを
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
としていたのが原因でした。この2つの何が違うかいまいちつかめないのですが、問題は解決しました。本当にお世話になりました。
0169デフォルトの名無しさん
2007/09/06(木) 22:36:181. 直近のブロック({ })内で宣言されたローカル変数
2. 自クラスのメンバ変数
3. 継承元のメンバ変数
の順で探しに行くので
TMemoWithDnD* Memo1 = new TMemoWithDnD(this);
なんてやったら Memo1 を自クラスのメンバでなくその関数のローカル変数と見なすのですぅ
0171デフォルトの名無しさん
2007/09/08(土) 03:54:08コンソールアプリケーション → C を選んでるんですが、どこが悪いのでしょうか。
0172デフォルトの名無しさん
2007/09/08(土) 19:43:01この場合はメインスレッドでTEventを作成し、そのハンドルをWaitFor***Object(s)に登録し、その後終了させたいタイミングでSetEvent()し、終了処理をさせれば良いのでしょうか。
0173デフォルトの名無しさん
2007/09/10(月) 19:57:42組もうと思っているのですがTTcpServer(TTcpClient)
とTServerSocket(TClientSocket)は何が違うんでしょ
うか。
TTcpServerの方はツールパレットにあるものの対応する
ヘルプがなく両者を比較検討しようにもできない状態で
あります。
ちなみにDelphiでTServerSocket(TClientSocket)を使
った簡単なサンプルを作ったことがありこちらはヘルプもある
ので問題ないのですが、TTcpXXXの方の情報が無くて困
ってます。
0174デフォルトの名無しさん
2007/09/13(木) 07:31:25自称「マネージメントもできる」派遣クンが
「Visual Studio 2005が僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のVisual Studio 2005プログラムが動かないのを調べるのは誰の仕事なのでしょうか?
0175デフォルトの名無しさん
2007/09/13(木) 08:42:510176デフォルトの名無しさん
2007/09/13(木) 09:52:180177デフォルトの名無しさん
2007/09/14(金) 08:40:35TMemoをフォームに置きます。
Widthを317位にします
?.........-..!%a5fe985cd9e46000426181712f338e67............ゥ-.D...
コンパイル・実行して↑を貼り付けます。
右余白があるにも関わらず%の後ろで折り返しされます。
これをコントロールの幅きっちりで折り返しさせるにはどうしたらいいでしょうか。
0178デフォルトの名無しさん
2007/09/14(金) 08:54:280179デフォルトの名無しさん
2007/09/18(火) 03:04:12TPanelにドッキングしたTPanelの閉じるボタンを押したときに処理を行いたいのですが、
イベントが発生しません。
何か方法はないでしょうか?
0180デフォルトの名無しさん
2007/09/22(土) 18:04:04(プロジェクト名).bdsproj
のファイルの中にはGUIDやらフォルダのパスやらが含まれててこれに関してはあまり公開したくありません。
しかし、これがないとビルドが面倒になるのでなんとかしたいのです。
いい方法はありませんか??
0181デフォルトの名無しさん
2007/09/22(土) 23:02:04パスは相対パスに書き換える
GUIDはエントリをそっくり削除する
で逝ける筈
0182デフォルトの名無しさん
2007/09/23(日) 12:53:28おお…GUIDってなくてもビルドできますね
ありがとうございます
0183デフォルトの名無しさん
2007/09/29(土) 03:40:390184デフォルトの名無しさん
2007/09/30(日) 08:24:05VCLは非常に使いやすくてよいのですが、コードエディタの操作感覚がVC++と
だいぶ異なっているので戸惑っています。
・行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。
・オートインデントでタブ文字ではなくスペースが挿入される。
これらを変更することはできないのでしょうか?
本当に初歩的な質問で申し訳ありませんがどなたか教えて下さい。
0185デフォルトの名無しさん
2007/09/30(日) 08:45:20郷に入れては郷に従え。
慣れてショートカットキーが使えるようになってくると
逆に手になじんできます。
0186デフォルトの名無しさん
2007/09/30(日) 16:29:580187デフォルトの名無しさん
2007/10/01(月) 09:57:560189デフォルトの名無しさん
2007/10/02(火) 19:21:50不便なエディタを無理して使うより
慣れたエディタ併用して書いたほうが気が楽だ。
でも、だからといってBCBが嫌いなわけじゃないんだからね?
0190デフォルトの名無しさん
2007/10/03(水) 04:40:43>行末にキャレットを移動した時に自動的に次の行の先頭へ折り返してくれない。
これ、行の長いソースの編集の時に便利。
最近はディスプレイも広いからCとかだとあんまり実感する事も無いと思うけど、
長いクラス名や変数名を扱う時とかに慣れると便利だよ。
>オートインデントでタブ文字ではなくスペースが挿入される。
オプションで切り換えられた様な、、、、、
0191デフォルトの名無しさん
2007/10/03(水) 09:06:070192デフォルトの名無しさん
2007/10/03(水) 09:47:250193デフォルトの名無しさん
2007/10/04(木) 19:34:060194デフォルトの名無しさん
2007/10/04(木) 19:38:070195デフォルトの名無しさん
2007/10/05(金) 08:39:530196デフォルトの名無しさん
2007/10/05(金) 10:15:31それを利用すれば簡単じゃん
0197デフォルトの名無しさん
2007/10/05(金) 10:56:34見つけました。 → ttp://software.kozoh.net/
>それを利用すれば簡単じゃん
使い方はどこかに書かれてますか?
0198デフォルトの名無しさん
2007/10/05(金) 11:39:39ttp://www.digitalpad.co.jp/~takechin/download.html
から
ttp://homepage3.nifty.com/~takechin/archives/spi32008.lzh
をダウンロードして解凍して
spi_api.txtを嫁。
これで分からなかったらDLLを基礎から勉強しろ。
0199デフォルトの名無しさん
2007/10/05(金) 11:43:01ここの「builder-ML過去ログ」を検索すれば
山ほど出てきますよ。
0200デフォルトの名無しさん
2007/10/05(金) 11:43:44DLLくらい作ったことありまつ><
でも、このプラグイン使うの結構難しいですね。
普段、ビットマップとか理解してなくて、TBitmapで済ませてるんで。
0201デフォルトの名無しさん
2007/10/05(金) 11:50:45デジカメに組み込むという話はどこに行ってしまったのやら。
低圧縮JPEGで十分だと判断されてしまったんだね。
0202デフォルトの名無しさん
2007/10/05(金) 11:55:27何か実行ファイルを起動して、Jpeg2000からビットマップファイルにコンバート出来ないでしょうか?
0203デフォルトの名無しさん
2007/10/05(金) 17:40:20一番簡単なのはSusieにそのJPEG2000画像を食わせて画面を
キャプチャすれば?
0204デフォルトの名無しさん
2007/10/05(金) 17:58:420205デフォルトの名無しさん
2007/10/05(金) 23:50:38IrfanViewでバッチ処理?
0206デフォルトの名無しさん
2007/10/14(日) 20:28:50ヘッダファイルに新しいクラスやメソッドを追加した時に
他のファイルから上手く認識されずにエラーが出てしまい、困っています。
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のメンバではない"
と言うようなエラーが出てしまいます。
どなたかよい対処法がありましたら教えて下さい。
0207デフォルトの名無しさん
2007/10/15(月) 02:23:570208206
2007/10/15(月) 09:01:23お騒がせして申し訳ありませんでした。
0209デフォルトの名無しさん
2007/10/15(月) 15:08:20プロジェクト(変数?)によっては「???」と表示されてしまうのはなぜでしょうか
勿論その変数は有効で、ShowMessageなどではちゃんと表示されるのですが
0210デフォルトの名無しさん
2007/10/15(月) 16:29:500211デフォルトの名無しさん
2007/10/15(月) 16:31:210212デフォルトの名無しさん
2007/10/15(月) 17:26:040213デフォルトの名無しさん
2007/10/15(月) 18:54:440214デフォルトの名無しさん
2007/10/15(月) 19:55:55???すらでないんで質問者のとは違うかも。
0215デフォルトの名無しさん
2007/10/15(月) 23:19:56あてずっぽうで つ「副作用を許可する」
0216209
2007/10/17(水) 11:09:47てもこんなオプションいじったことないのに、妖精さんのいたずらか
0217デフォルトの名無しさん
2007/10/23(火) 14:03:31これを表示しないようにできませんかね
0218デフォルトの名無しさん
2007/11/01(木) 06:54:34http://jp.youtube.com/watch?v=aMnI_grQk-4
0219デフォルトの名無しさん
2007/11/01(木) 13:34:19教えてください。
0220デフォルトの名無しさん
2007/11/02(金) 07:23:58それBorlandのメールニュースで読んだきがする
0221デフォルトの名無しさん
2007/11/02(金) 09:18:18転載していいかどうか判らんから紹介だけ
ボーランドのニュースグループ borland.public.cppbuilder.japanese の10月26日の投稿
『C++Builder2007になってからSTLの実行速度が遅くなっているのでしょうか?』
のレスに細かい手順があるよ
Builder単体では出来ないので結構面倒
0222デフォルトの名無しさん
2007/11/05(月) 09:30:28219です。できました!
ありがとうございましたm(_ _)m
0223デフォルトの名無しさん
2007/11/05(月) 15:52:28なるのでバッティングして同居できないんだよ。
0224デフォルトの名無しさん
2007/11/05(月) 15:55:370225デフォルトの名無しさん
2007/11/05(月) 16:13:34ライブラリ名までは変わらない
0226デフォルトの名無しさん
2007/11/05(月) 23:10:33誰か分かる方いますか?どんなコード書いたらいいんでしょう。
イメージ的にはローカルに画像保存しておいてボタンを押したら
そこの保存してある場所から持ってくるって感じなんだろうけど
上手くいきません。お願いします。
0227デフォルトの名無しさん
2007/11/06(火) 00:16:000228デフォルトの名無しさん
2007/11/06(火) 08:07:53std::vector<AnsiString>::iterator files_it = files.begin();
//イベントハンドラ
Image1->Picture->Bitmap->LoadFromFile(*files_it);
files_it++;
if (files_it == files.end())
files_it = files.begin();
0229sage
2007/11/06(火) 16:00:03今回初めてスレッドプログラムを組んでいますが、
スレッドに対してパラメータを渡すにはどの様にすれば良いのでしょうか?
DWORDとメモリのポインタを渡したいと思っています。
0230デフォルトの名無しさん
2007/11/06(火) 16:21:020231デフォルトの名無しさん
2007/11/06(火) 16:21:14フォームがTFormから派生してるように作成したスレッドもTThreadから派生してるだけだし。
0232デフォルトの名無しさん
2007/11/06(火) 16:25:060233デフォルトの名無しさん
2007/11/07(水) 09:00:30TXMLDocument
の使い方教えてけろ。
EAccessViolation
とかになっちゃうもんで。
0234デフォルトの名無しさん
2007/11/07(水) 09:49:010235デフォルトの名無しさん
2007/11/07(水) 11:47:13TurboC++でもDLして使っとき
0236デフォルトの名無しさん
2007/11/07(水) 11:48:30VCLのソースの添付。
0237デフォルトの名無しさん
2007/11/07(水) 11:55:54商利用の可否
DBコンポーネントの有無
紙のマニュアルの有無
tasmの有無(なくてもPascalソース上でインラインアセンブラ使用可能)
0238デフォルトの名無しさん
2007/11/07(水) 11:58:360239デフォルトの名無しさん
2007/11/12(月) 17:34:44フォームを動的に表示する場合、
モーダルで表示したら次の行でデリートするのは
わかっているのですが、
普通にショウする場合、
動的フォームを閉じた場合のデリートは
どのタイミング(どのイベント)で
行えばよいのでしょうか?
動的フォームのcpp hにデリートを書く?
動的フォームが閉じた時の報告が親フォーム
にくればいいんですが・・・
いろいろ調べたのですが、どうも。
教えてください。
0240デフォルトの名無しさん
2007/11/12(月) 18:32:07あとTCustomForm派生クラスはdeleteとかでデストラクタ直接呼び出したらだめ。
0241デフォルトの名無しさん
2007/11/12(月) 20:18:04試してみます。
0242デフォルトの名無しさん
2007/11/12(月) 20:27:260243デフォルトの名無しさん
2007/11/12(月) 20:55:30初期化されていないようで、プログラムを実行するたびにrandom()関数が同じ値を
返してきます。RandSeed変数に出鱈目な値を入れてもrandomize()を呼び出しても
結果は変わりません。どんな原因が考えられるでしょうか。尚、Randomize()関数は
フォームのコンストラクタの中で呼び出しています。
0244デフォルトの名無しさん
2007/11/12(月) 21:16:37randomizeとRandomize両方表記してるけど、どっち?
BCBにはどっちも存在して、random()に対応するのはrandomizeだけど、それは合ってる?
0245デフォルトの名無しさん
2007/11/12(月) 21:20:33種をstaticで保持しておかないとだめなんじゃないの?PCの乱数なんて周期があってそこから切り出すだけなんだから。
0246デフォルトの名無しさん
2007/11/12(月) 21:22:06Randomize()を呼んでも"r"andomize()を呼んでも結果は同じでした。実際の乱数
発生はrandom()関数を呼び出しています。尚、randomize()に対応するのはrandom()
とのことですが、Randomize()に対応するのはrandom()とは別にあるのでしょうか。
0247デフォルトの名無しさん
2007/11/12(月) 21:29:34System::Randomizeは下の関数に対応
System::RandG
System::RandomFrom
System::RandomRange
randomize, srandはrandom、randに対応
上がVCLの乱数ルーチンで下はC標準関数。
で、乱数の初期化はsrand((unsigned)QueryPerformanceCounter());ならまず重複しないかと。
(パフォーマンスカウンタの戻り値が64bitだから桁あふれの警告出るかもしらん)
0248デフォルトの名無しさん
2007/11/12(月) 21:35:29LARGE_INTEGER seed;
QueryPerformanceCounter(&seed);
srand(seed.LowPart);
大抵は
srand(GetTickCount());
で十分だが。
0249デフォルトの名無しさん
2007/11/12(月) 21:41:31早速RandomFrom()を使ってみたところ、コンパイルエラー(未定義の関数)が出てしまいました。
Randomize()に関してはエラーは出ません。プロジェクトに何かライブラリを追加しなくては
ならないのでしょうか。
0250249
2007/11/12(月) 21:47:06RandomFrom()ではなくRandomRange()でした。
0251デフォルトの名無しさん
2007/11/12(月) 21:51:54ヘルプ見れ。
Pascalソースでuses MathってやるようにC++ソースだと#include <Math.hpp>が必要。
ヘルプの読み方は覚えておいたほうがいい。
0252249
2007/11/12(月) 21:53:23RandomRange()はvcl\math.hppで宣言されていますね。プログラムの先頭でこのファイルを
インクルードしたらビルドできるようになりました。又、乱数発生機構もきちんと初期化
されているようです。プログラムを走らせるたびにRandomRange()から違う値が返ってきます。
どうもありがとうございました。
0254デフォルトの名無しさん
2007/11/13(火) 03:52:42classをいくつか作ってやろうとしたのですがどうしてもうまくいきません。
結局自分は下のように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;
}
0255デフォルトの名無しさん
2007/11/13(火) 09:10:37趣味でフリーソフトつくっていますが、
オプションフォームをnewで呼び出すか
起動と同時にロードしておくか
どちらがいいのか迷っています。
ソフト自体の大きさは単体のみの動作で
1MB程度です。
一般配布を意識した場合、
オプションフォーオムはバックグラウンドに
待機させておくものでしょうか?
それとも呼び出し毎にロードするものでしょうか?
なお、常駐ソフトです。
オプションはダイアログ形式で
部品の数は20個ほどです。
0256デフォルトの名無しさん
2007/11/13(火) 09:37:11今のPC/dozなら、リソース的には無問題だが、
>起動と同時にロードしておくか
コード的に素直じゃない。
さらに、オプション内容をフォームに保持させたりすると、プログラムが崩れてきたり。
フォームを開く時点でnewしてグローバルはなるべく無い方が良い。
どうしても消せないグローバルはあると思うが、グローバルフォームっていうのは...
0257デフォルトの名無しさん
2007/11/13(火) 10:31:17一般作法ってのは聞かないと
わからないものですから。
助かりました。
0258デフォルトの名無しさん
2007/11/13(火) 10:42:240259デフォルトの名無しさん
2007/11/13(火) 10:59:08ってこと?
0260デフォルトの名無しさん
2007/11/14(水) 08:03:49VB or JAVA プログラマみたいな発想でつな
0261デフォルトの名無しさん
2007/11/14(水) 10:56:400262デフォルトの名無しさん
2007/11/14(水) 12:42:39最近ここに張り付いたBCB5厨だけど、
ヴァーアップを考えています。
ターボCとBCB2007のどちらかとおもっています。
ベンダーのページみたら
ターボCでもいけそうな・・・
どうなんだろ。
用途は、ちょっとしたアプリ程度で、通信なんか使わない。
0263デフォルトの名無しさん
2007/11/14(水) 13:17:22今の時代超便利だお。
だってIndyをポトペタしただけで、データ渡しの手段が増えるんだから。
0264デフォルトの名無しさん
2007/11/14(水) 19:20:09ターボCでもOK?ですか
0265デフォルトの名無しさん
2007/11/14(水) 19:47:34ターボCの情報はスレチガイでつか?
0266デフォルトの名無しさん
2007/11/14(水) 19:47:510267デフォルトの名無しさん
2007/11/14(水) 21:15:22TurboC++Expはコンポーネントの追加ができないからプロジェクトにIndyのユニット追加してソース上で自分で宣言/newしないとダメ。
Pro買うんなら2007かっとけ(TurboC++ = C++Builder2006 = C++Builder10)
0268デフォルトの名無しさん
2007/11/16(金) 08:33:42パソコンによって
あ ア ア が対象になるパソコンと
あ しか対象にならないパソコンがありますが
なにか環境が必要になってくるのでしょうか?
いろいろ調べてますが決め手がわかりません
よろしくお願いします。
0269デフォルトの名無しさん
2007/11/16(金) 11:12:43>あ しか対象にならないパソコンがありますが
んなこたーない
LIKE '%あ%' クォートつけるべし
スレ違いだ
0270デフォルトの名無しさん
2007/11/19(月) 00:20:19コードを書いていて、うまくいくのだけど、何をしているのか分からないと気持ち悪いし、問題もあるだろうし。
0271デフォルトの名無しさん
2007/11/20(火) 10:19:200272デフォルトの名無しさん
2007/11/20(火) 22:27:43トン。読んでみます。
0273デフォルトの名無しさん
2007/11/27(火) 10:42:05TStringList* lst;
lstに文字列をセットして
char* p=lst->Text.c_str();
として文字列先頭アドレスを求めて処理をしている部分があったのですが
ある特定文字列のときに、pがNULLになります。
でも、
AnsiString str=lst->Text;
char* p=str.c_str();
とすると正常に文字列先頭がセットされます。
この二つで違いが出る理由は何故なのでしょうか。
0274デフォルトの名無しさん
2007/11/27(火) 10:51:040275デフォルトの名無しさん
2007/11/27(火) 11:12:57p = lst->Text.c_str()の実際の動作は、p = lst->GetTextStr().c_str()なので、
pはGetTextStrが返す一時オブジェクトが持つバッファを指していることになる。
上の式の評価後に一時オブジェクトは破棄されてpの参照先も無効になる。
0276デフォルトの名無しさん
2007/11/27(火) 15:04:540277273
2007/11/27(火) 20:10:11超ありがとうございます。
とてもよくわかりました。
ちゃんと表示されていないのは大きな文字列のときでした。
小さな文字列のときは、一時的なバッファがたまたま破壊されなかったので
正常に動いているように見えたのですね。
0278デフォルトの名無しさん
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)
}
}
0279デフォルトの名無しさん
2007/11/28(水) 08:05:120280デフォルトの名無しさん
2007/11/28(水) 08:47:010281デフォルトの名無しさん
2007/11/28(水) 10:21:32コスト云々なら例外処理やめてgotoで(A)に飛ばした方がはるかにコスト低いし。
0282デフォルトの名無しさん
2007/11/28(水) 10:28:46Delphiにfinallyが必須なのはFreeのためであり、C++ではローカルオブジェクトの使用が推奨されている。
try finallyとtry except(←こっちはC++標準)のネストやその中でのthrow や return は言語規定されてないんじゃないかと思うのでやヴぁ目。
逆にローカル変数やローカルオブジェクトは推奨なので、
>result変数を作る以外の方法はないでしょうか?
という考えがワケワカメ。
0283デフォルトの名無しさん
2007/11/28(水) 10:34:18最近のC++処理系は大抵__finally使えるし。
0284デフォルトの名無しさん
2007/11/28(水) 10:37:50finallyと例外catch(上では間違えてexceptって書いちゃった)系や、returnを組み合わせちゃダメ。
何でかっていうと、tryを2つ組み合わせて、その中でreturnすると、一番外のfinallyを通過しない。
ソースコードを読む上ではfinallyは必ず通るって頭で読むから、バグの元になるだけだお。
0285デフォルトの名無しさん
2007/11/28(水) 11:50:460286デフォルトの名無しさん
2007/11/28(水) 11:59:47・finallyするなら複数箇所でreturnするな
・複数箇所でreturnするならfinallyするな
あと、プログラミングテクニック的には、
関数やメソッドから抜ける箇所は1箇所にするとコーディングバグを防げる。
つまり、複数箇所returnはやめるべき。
(これも適材適所で、使い方によっては便利なときもあるけどね)
0287デフォルトの名無しさん
2007/11/28(水) 12:23:07Delphi で Exit の後に finally が実行されるのを利用するのと同じで
ローカル変数のデストラクタは return の後に実行されるのだろ?
0288209
2007/11/28(水) 14:22:590289デフォルトの名無しさん
2007/11/28(水) 16:12:000290288
2007/11/28(水) 17:53:350292デフォルトの名無しさん
2007/12/02(日) 22:09:08すでにわかっている他アプリの子ウインドウ(ツールバー)の
位置変更およびサイズ変更をフックしたいと考えています。
フック自体良くわかっていません。
別に横取りして変更を加えるつもりはありません。スルーします。
単にバーの座標と幅・高さがユーザによって変更されたことの
通知がほしいだけです。
WM_MOVE
WM_SIZE
をつかって云々と他板での情報ですが、
WinAPIプログラマーリファレンスを見ても、
GetWindowLongとWM_MOVE・WM_SIZEのつながりが見えてきません。
再度申しますが、ユーザの変更知りたいだけで、座標データ等は取得済みです。
環境WinXP BCB5
0293デフォルトの名無しさん
2007/12/02(日) 22:17:45SetWindowsHookEx使ってフックDLLからフックしないと無理。
0294デフォルトの名無しさん
2007/12/02(日) 22:35:17bcbのコード少ないからなぁ。
タイマーなんか使って
こちらからアプローチすれば、座標データが
わかっているんで、比較するだけで変更こそは
感知できるんですが、
ユーザーの変更を感知したいんですよね。
もう少し精進してみます。
0295デフォルトの名無しさん
2007/12/02(日) 22:45:190296デフォルトの名無しさん
2007/12/03(月) 20:00:56マルチいやだから書くけど、
Win32APIスレに転載して
もまれて来ます。
とりあえず、一日放置してから
明日くらいにカキコしてみます。
0297デフォルトの名無しさん
2007/12/08(土) 10:37:10アプリB処理完了後に自動で終了するものなのですが
アプリAからアプリBが終了したのを調べる方法はありませんか?
Aからデータを渡しながらBを順次稼動させたいのですが
0298デフォルトの名無しさん
2007/12/08(土) 11:06:25どうしてもWinExecって事だと実行ファイルを開いてみてロックされてるかどうか見るか
パソコン上のプロセスを列挙させるかだけど、他に実行されてると厄介だし
手間はズーっと大変だろうに
0299297
2007/12/08(土) 12:50:35CreateProcessなら簡単にできるのかな
少し調べてみます
0300デフォルトの名無しさん
2007/12/08(土) 12:54:23WaitForSingleObject()
CloseHandle()
このあたりでしょうかね?
0301デフォルトの名無しさん
2007/12/08(土) 18:53:47って出るんだけど、これ何が原因ですかね?
0302デフォルトの名無しさん
2007/12/10(月) 14:04:15Checked値を変える為にクリックしただけでOnDragOverイベントに飛んでしまいます。
これらを切り分けるにはどうすればいいのでしょうか。
0303デフォルトの名無しさん
2007/12/10(月) 17:25:00「メモリストリームの拡大中にメモリが足りなくなりました」と言われます
OSはXP、ファイルの具体的なサイズは1,382,526,976バイトです
確かにちょっと大きめのファイルですが何とか読み込みたいのですが
BCBでは読み込めないサイズなのでしょうか
0304デフォルトの名無しさん
2007/12/10(月) 18:52:110305デフォルトの名無しさん
2007/12/10(月) 19:08:12どうしてわざわざメモリに読むのだろ?
0306デフォルトの名無しさん
2007/12/10(月) 19:20:110307デフォルトの名無しさん
2007/12/10(月) 20:03:55メモリの確保には失敗する。どうしてもメモリに置きたいなら、小さいブロックに分けないと。
0308デフォルトの名無しさん
2007/12/10(月) 21:35:440309デフォルトの名無しさん
2007/12/11(火) 08:56:45暗号化させるのにどかんと読んでどかんと処理させたかったのですが
僕のやり方は非常識だったんですね(苦笑)方針を変更してみます
ありがとうございました
0310デフォルトの名無しさん
2007/12/11(火) 09:41:41ユーザにはストレスがかかるだろ?
それに仮想記憶の機構ってのはHDDのキャッシュの機構でもあるから、
ハードディスクをブロック的にアクセスするのもメモリに読むのもそうスピードは変わらない。
ブロック単位に読んで処理するのが一般的だし最速だと思うよ。
途中でユーザーはキャンセルも出来るしね。
0311デフォルトの名無しさん
2007/12/11(火) 10:58:30一度にメモリに読み込んで処理するような機会は無くなってきたと思う。
1レコードが固定長ならランダムアクセスが出来るし、必要なインデックス
番号でシークすればいいのだから。
0312デフォルトの名無しさん
2007/12/14(金) 20:32:360313デフォルトの名無しさん
2007/12/14(金) 20:45:491, ShellExecute CreateProcess WinExec の windowsAPI
2,execl / execv とかのprocess.h
どっちか
0314デフォルトの名無しさん
2007/12/18(火) 14:14:59固定長じゃなくてもインデックス作っとけばランダムアクセスできるじゃん
0315デフォルトの名無しさん
2007/12/18(火) 14:22:030316デフォルトの名無しさん
2007/12/28(金) 12:05:19以下のようなソースを
書きました。
ColorDialog1->Color=(TColor)iFontColor;
if(ColorDialog1->Execute()){
iFontColor=ColorToRGB(ColorDialog1->Color);
}
#255255255 or #FFFFFF
のような値を得たいのですが、
どうしたら得られるでしょうか?
0317デフォルトの名無しさん
2007/12/28(金) 13:14:020318デフォルトの名無しさん
2007/12/28(金) 13:39:20B R Gそれぞれ0-255の値がほしいのです。
逆に言うと、#FFFFFFから
ColorDialog1->Color=hoge(FFFFFF);
か
ColorDialog1->Color=hoge(FF,FF,FF);
か
ColorDialog1->Color=hoge(255,255,255);
のように扱いたいのです。
iFontColorの値がいまいち理解できていないと
おもてまする。
今はカラーダイアログを使いとそれなりに動くので、
いいのですが、カラーピッカーからの数字データを
手入力でカラーダイアログもしくは、フォントカラーに
反映させたいのです。
iFontColorを16進法に酢りゃいいのでしょうか?
未熟で申し訳ないです。
0319デフォルトの名無しさん
2007/12/28(金) 13:49:21iFontColor & 0xff;
(iFontColor>>8) & 0xff;
(iFontColor>>16) & 0xff;
とやるか
0320デフォルトの名無しさん
2007/12/28(金) 14:32:22即レスいただけると大変ありがたいのですが、
内容が理解不能ならあせりますね。
iFontColorの構造をもう少し調べてみます。
0321デフォルトの名無しさん
2007/12/28(金) 15:04:50でiFontColorの値が
14811135で
フォトショップで得た値
FFFBE7
相関関係が見えてきません。
0322デフォルトの名無しさん
2007/12/28(金) 15:16:120323デフォルトの名無しさん
2007/12/28(金) 15:23:36TColorはBGRの順だから、RGBだとRとB入れ替えてFFFFE1。
0324デフォルトの名無しさん
2007/12/28(金) 15:43:2614811145
ではなく
14811135
でした。
ありがとうございました。
0325デフォルトの名無しさん
2007/12/28(金) 16:42:310326デフォルトの名無しさん
2007/12/28(金) 20:18:300327デフォルトの名無しさん
2007/12/29(土) 11:46:28右6桁がBGRだべ
0328デフォルトの名無しさん
2007/12/29(土) 13:09:30ソース見るたびにそう思う
0329デフォルトの名無しさん
2007/12/29(土) 14:15:130330デフォルトの名無しさん
2007/12/29(土) 14:19:13ソース見るたびにそう思う
0331デフォルトの名無しさん
2007/12/29(土) 23:51:07ありがとうございました。
くそソース晒して手直ししてもらえるものでしょうか?
VB仕込みのソースが悲しくて
0332デフォルトの名無しさん
2007/12/30(日) 00:14:230333デフォルトの名無しさん
2007/12/30(日) 01:11:37痛いなりに面倒みてもらえたらいいんですが
プロのソースみてみたいし。
擦違いのような
0334デフォルトの名無しさん
2007/12/30(日) 01:47:060335デフォルトの名無しさん
2007/12/30(日) 11:33:11// 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';
0336デフォルトの名無しさん
2007/12/30(日) 11:34:01bf[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;
};
0337デフォルトの名無しさん
2007/12/30(日) 13:09:29{
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);
}
0338デフォルトの名無しさん
2007/12/30(日) 13:27:44礼をもうします。
0339デフォルトの名無しさん
2007/12/30(日) 15:51:340340デフォルトの名無しさん
2007/12/31(月) 09:16:27英語でよくわからないのですが、
日本語サイトないですかね?
0341デフォルトの名無しさん
2008/01/01(火) 04:46:46にある方法を使ってコンポーネントを置き換えた場合、オブジェクトインスペクタで指定したイベント対応コードが実行されません。
普通に配置したコンポーネント同様に、イベント対応のコードを実行させるにはどうしたらいいのでしょうか。
よろしくお願いします。
0342デフォルトの名無しさん
2008/01/01(火) 08:43:04http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200703/200703_07030070.html
0343デフォルトの名無しさん
2008/01/01(火) 14:33:37ありがとうございます。
0344デフォルトの名無しさん
2008/01/02(水) 15:07:36改行するたびに余分な}が勝手に入力されるんだけど、これって直らないの?
誤作動するのは次のコードの前後からみたいだが。
char c[2]="\"";
0345デフォルトの名無しさん
2008/01/02(水) 23:31:400346デフォルトの名無しさん
2008/01/06(日) 16:33:14.Net frame work v1.1のインストールができません。
WindowsXP SP2で、Windows Installerサービスは起動してます。
何か気をつけなければならない要素ってありますか?
0347デフォルトの名無しさん
2008/01/06(日) 18:00:03個別に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
0348デフォルトの名無しさん
2008/01/06(日) 18:26:53おっ うまくいきました
ありがとうございました〜
0349デフォルトの名無しさん
2008/01/06(日) 19:45:550350デフォルトの名無しさん
2008/01/07(月) 16:13:08どのメニューをクリックしても反応しないのですがどうしたらなおりますか?
ブラウザは普段はIE6(sp1)+Sleipnirを使っています
0351350
2008/01/08(火) 20:50:37ここで不具合でた人いないのかなぁ・・・
メニューのヘルプ>ボーランドのホームページ
を選択すると、ブラウザでhttp://www.borland.com/jp/が開き、
この画面では、普通にブラウジングできるので、
bds:/だから駄目なのかな、と思ったのですが・。・・
0352デフォルトの名無しさん
2008/01/08(火) 21:03:130353デフォルトの名無しさん
2008/01/08(火) 21:35:01すいません忘れてました
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;
となっています よろしくおねがいします
0354デフォルトの名無しさん
2008/01/10(木) 03:09:2516進数が入ったBYTE型変数を10進数のINT型の値に変換するにはどうすればいいですか?
0355デフォルトの名無しさん
2008/01/10(木) 08:03:39の意味が判らん。
もしかして単なるBYTE = unsigned char の配列か?
ASCIIで文字列が入ってるなら '$'を足して StrToInt とかだが
配列ならどっちが上位なのか判らんけど 256倍しながら加算すればいいだけ
「10進数のINT型の値」も意味が判らんが、後で10進数で表示したいって事なら、そんな情報は胸にしまっとけ
パック10進でって事なら、そう書け
0356デフォルトの名無しさん
2008/01/15(火) 21:20:380357デフォルトの名無しさん
2008/01/16(水) 00:04:00TXPManifestをパレットからフォームに適当に配置する
0358デフォルトの名無しさん
2008/01/16(水) 00:56:43ありがとう
もうCodeGearについていく
0359デフォルトの名無しさん
2008/01/16(水) 08:20:080360デフォルトの名無しさん
2008/01/16(水) 13:36:250361デフォルトの名無しさん
2008/01/16(水) 22:17:55作りました、最大でも約5秒程度です、パソコンによっては遅くカウントされてしまいます。
いろいろなパソコンで試して見ましたが、パソコンのスピードやWIN2000 win xp とか関係なく
正しく計測されるパソコンもあります、何かパソコンの設定のような気もしますが
どなたかわかりますか? c++builder5 pro で作ったプログラムです。
0362デフォルトの名無しさん
2008/01/16(水) 23:03:39> シリアルポートからのオン信号とオフ信号を受信して
受信処理はどうなってるの?というかオン信号とオフ信号って?
> その間の時間を
どうやって取得してる?
> 何かパソコンの設定のような気もしますが
まず自分のコードを疑おう。
> どなたかわかりますか?
エスパー求むってこと?
0363デフォルトの名無しさん
2008/01/16(水) 23:28:12説明不足でした。
特定コマンドをオン信号 オフ信号として判断してます。
0364デフォルトの名無しさん
2008/01/16(水) 23:41:13阿呆の見本なら居るようだが。
0365デフォルトの名無しさん
2008/01/17(木) 07:40:26試しに複数の方法で計測してみたらどうだ?
1、VCL Now() 関数の差
windowsAPI
2 GetTickCount()の差
3 GetMessageTime()
4、timeGetTime()
5、QueryPerformanceCounter()/QueryPerformanceFrequency
0366デフォルトの名無しさん
2008/01/17(木) 08:37:09親切に対応して頂き有り難う御座います。
試してみます。
0367デフォルトの名無しさん
2008/01/17(木) 09:51:170368デフォルトの名無しさん
2008/01/19(土) 18:42:14何ミリ秒後に処理を行うというプログラムを書きたいのですが、
時刻をミリ秒以下の単位で加算できるような関数はないでしょうか?
一応、単一スレッドで、複数の処理を実行しないといけないので、Sleep
による停止は出来ません。
例えば、こんな感じで使いたい:
time = getTime();
time1 += 3500;
time2 += 4000;
:
for(;;){
now = getTime();
if( now >= time1 ){
doSometing();
time1 = now + 3500
}
if( now >= time2 ){
doSometing();
time2 = now + 3500
}
:
}
0369デフォルトの名無しさん
2008/01/19(土) 19:54:10BCB5で作ったソースを読み込み実行すると
パラメータSenderは一度も使用されないと警告がでます。
気になります。
警告を外すのもなんですし。
警告が55もだされるのもいやなんですが。
みなさんはどんな感じなのでしょうか?
void __fastcall TForm1::Button8Click(TObject *Sender)
ちなみに呼び方はBCB7でOK?
0370デフォルトの名無しさん
2008/01/19(土) 20:43:28void __fastcall TForm1::Button8Click(TObject *)
{...
とかパラメータを型だけにして仮引数名を書かないってのはだめですか?
0371デフォルトの名無しさん
2008/01/19(土) 20:51:06がっつり怒られました^^;
0372デフォルトの名無しさん
2008/01/19(土) 20:55:05いろいろやってみます。
Senderってなんだっけ?
調べてみます。ども、助かりました。
0373デフォルトの名無しさん
2008/01/19(土) 21:01:26timeGetTimeの戻値を加算で出来ました。
0374370
2008/01/19(土) 21:06:480375デフォルトの名無しさん
2008/01/19(土) 21:06:59消したら警告はきれいさっぱり。
ほんとにいいのか?ま、いいか
0376デフォルトの名無しさん
2008/01/19(土) 21:20:42了解です。
0377デフォルトの名無しさん
2008/01/19(土) 21:45:26完全にオーバースペックになるけどパフォーマンスカウンタ使うと恐ろしい精度で計測できるよ
0378370
2008/01/19(土) 22:17:200379デフォルトの名無しさん
2008/01/21(月) 16:25:37TImage* img=new TImage(this);
img->Height=16;
img->Width=16;
Image1->Picture->Icon->Handle=LoadIcon(NULL,IDI_APPLICATION);
すると大きいアイコンの左上1/4が取得されてしまいました。
小さいアイコンをリソースから取得するにはどうすればいいのでしょうか、教えてください。
0380デフォルトの名無しさん
2008/01/21(月) 16:43:010381デフォルトの名無しさん
2008/01/21(月) 19:55:02プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
(何といったって、参考にしようとする市販の本さえ、 きちんと説明してくれていないのですから、
その証拠にC言語の学習で悩む人がどんなに多いことか)
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
宣伝と言ってしまえば、そうなってしまうかもしれませんが、ひとりでも多くのプログラマを救いたい。
プログラムの世界そのものの実力を底あげに貢献し、
無意味なバグに、残業したり、悩んだりして欲しくないのです。
興味がある方はどうか、下のサイトをみてみてください。
http://mori.eco.to/
0382デフォルトの名無しさん
2008/01/21(月) 21:42:300383デフォルトの名無しさん
2008/01/21(月) 21:49:200384デフォルトの名無しさん
2008/01/22(火) 00:03:25ExtractIconEx
0385デフォルトの名無しさん
2008/01/22(火) 00:03:530386デフォルトの名無しさん
2008/01/22(火) 00:14:57おまえ、2chに宣伝出したら、広告料すごいぞ?
最初にレス書いた時の許諾事項は読んだよな?大丈夫なのか?
0387デフォルトの名無しさん
2008/01/22(火) 10:07:360388デフォルトの名無しさん
2008/01/23(水) 00:33:410389デフォルトの名無しさん
2008/01/29(火) 03:30:36としたあと、その開放完了をWaitForSingleObjectのように低い負荷で待ちたいと考えています。
どのようにすればよいでしょうか。
よろしくお願いします。
0390デフォルトの名無しさん
2008/01/29(火) 07:50:02どっちにしても、メインスレッドでメッセージポンプ回してやらないとPostMessage
しただけじゃいつまでたっても終了しないよ。
0391デフォルトの名無しさん
2008/01/29(火) 10:22:48下記のように定義して、abcの要素数分(5個)をdefの大きさ(x)にしたいのですが
abcを書き換えても、xが自動的に決まるように書くにはどう記述すれいいですか。
AnsiString abc[]={
"111.",
"222",
"333",
"444",
"555"
};
int def[x];
0392デフォルトの名無しさん
2008/01/29(火) 12:34:46http://blogs.wankuma.com/melt/archive/2007/09/01/93176.aspx
0393デフォルトの名無しさん
2008/01/29(火) 13:02:17ありがとう。
_countof()はBuilderには無いんですね。エラーですた。
template <typename _CountofType, size_t _SizeOfArray>
char (*__countof_helper(_CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) sizeof(*__countof_helper(_Array))
これをこぴってきて
_countof(abc) にて要素数が簡単に取得できるようになりました。
0394デフォルトの名無しさん
2008/01/29(火) 17:14:232007でコンパイルしたらリソースリークが発生した。なんで?
sys\sysutils.pasの何行目とか表示してるけど、このファイルどこにあるの?
エディタのメッセージからは開けなかった。環境変数がおかしいのかな?
0395デフォルトの名無しさん
2008/01/29(火) 18:57:59windows タスクバーのボリュームコントロールをプログラムから開くには?
スタート・メニューは、webから探した
HWND hTaskBar=FindWindow(PChar("Shell_TrayWnd"), NULL);
if (SetForegroundWindow(hTaskBar)){
PostMessage(hTaskBar, WM_USER+0x0104, 0, 0);
}
で開けたので、似たような方法で出来ると思うのですが???
0396デフォルトの名無しさん
2008/01/29(火) 19:13:230397389
2008/01/29(火) 21:04:42ありがとうございます。
DLLを作っているのですけれども、ホストの終了時に呼ばれる関数内でフォームを解放し、それが完了したらホストに値を返すようにしたいです。
だから別スレッドでは無いと思います。
0398デフォルトの名無しさん
2008/01/29(火) 21:06:13レス感謝です。
実は先ほどボンヤリとsystem32フォルダを眺めていてsndvol32.exeを見つけ
WINEXECで開けました。
メインのボリュームだけで良かったんだけど、取り合えず良しとします。
最終的にはアプリ内の自作スライドでこのマスター・ボリュームをコントロール
したくてWin32 API プログラマーズ リファレンスと格闘中です(^^;)
0399デフォルトの名無しさん
2008/01/29(火) 23:23:07FastMMで詳細を表示させてみたら?
0400394
2008/02/01(金) 21:51:01原因はよくわからんが、同じ処理を2回やってたのがまずかったらしい。
AnsiStringに数字を入力するときにエラー処理として
try{
edit->Text.ToDouble();
}catch{
edit->Text="1.0";
}
みたいなコード書いてて、この処理の後に別の関数呼ぶんだけど
同じような処理の後、描画の処理になってたのを
このコードの別の関数を呼ぶ場所に描画の関数を書いたらエラーは出なくなったよ。
何でエラーが出たのかさっぱりわからん。
とりあえず自己解決しました。
FastMMはこれから作るプログラム全部に導入しようと思います
ありがとう。
0401デフォルトの名無しさん
2008/02/06(水) 14:17:190402デフォルトの名無しさん
2008/02/07(木) 06:40:370403デフォルトの名無しさん
2008/02/16(土) 13:24:18AnsiString t="";
s.printf("t=%s",t);
とすると、s が "t=(null)"
となってしまいます。
この(null)を出力させないようにするには、
s が "t="となるようにするにはどうすればいいでしょうか。
0404デフォルトの名無しさん
2008/02/16(土) 13:43:330405デフォルトの名無しさん
2008/02/16(土) 14:28:37早々に、さんくすです。
0406デフォルトの名無しさん
2008/02/27(水) 10:05:06上に持って来ることは出来ますか?
なんか使いづらくて
0407デフォルトの名無しさん
2008/02/27(水) 12:07:370408デフォルトの名無しさん
2008/02/28(木) 01:06:00昔のバージョンでは1発で目的のファイルを開けたのに
つかいにくく感じるのは自分だけなのか
0409デフォルトの名無しさん
2008/03/02(日) 15:40:26修復できる方法はないでしょうか
0410デフォルトの名無しさん
2008/03/02(日) 17:55:190411デフォルトの名無しさん
2008/03/02(日) 17:56:040412デフォルトの名無しさん
2008/03/04(火) 09:56:40プログラム上からのフォルダーのリネーム
ってどうやるんでしょう?
環境XP+BCB++V5。手段は問いません。
0413デフォルトの名無しさん
2008/03/04(火) 10:30:12Sysutils::RenameFile(const AnsiString OldName, const AnsiString NewName);
0414デフォルトの名無しさん
2008/03/04(火) 19:57:19レス有難う
ファイルじゃなくてフォルダ
(ディレクトリ)のリネームなんですよ
RenameFile(a,b)ではエラーになりますね。
ヒントなのかな・・・読めない・・?
0415デフォルトの名無しさん
2008/03/04(火) 21:02:040416デフォルトの名無しさん
2008/03/04(火) 21:18:06お手軽にMoveFileのUnicode版使えば?
0417デフォルトの名無しさん
2008/03/04(火) 21:52:34image->canvas->pixel[x][y] = (TColor)((a[x][y] >> 16) | (b[x][y] >> 8) | (c[x][y]))
でCanvasに書き、それを
SavePictureDialogでビットマップに保存しているのですが、
保存されるファイルが32bitのビットマップになっているようです。(ファイルサイズ的に)
これを24bitのビットマップで保存したいのですが、どのようにすれば宜しいのでしょうか?
0418デフォルトの名無しさん
2008/03/04(火) 22:40:53でいいんじゃね?
0419デフォルトの名無しさん
2008/03/04(火) 23:28:54非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
0420デフォルトの名無しさん
2008/03/05(水) 00:57:03の追加情報にバージョンの確認方法書いてあるからまずはそれをチェックしてみれ
0421デフォルトの名無しさん
2008/03/05(水) 01:14:29追加情報
1. このパッチを適用した後も、バージョン情報ダイアログに表示されるバージョン番号は変わりませんが、
bin ディレクトリにあるファイルのタイムスタンプは、11:02になります。
bds.exeが4:04でした。
インストール4回目だわさorz
あしたやってみます。
インストールキャッシュの有無の確認方法ってありますか?
また、インストール時キャッシュの保存ってあったっけ?
情報ありがとうございました。
0422417
2008/03/05(水) 19:44:28出来ました!ありがとうございます。
しかし、同じコードを書いた別のプロジェクトがあるんですが、それは24bitのビットマップで保存されているんですよね。
imageコンポート上かどっかで設定が出来るんですかね
0423デフォルトの名無しさん
2008/03/05(水) 21:43:120424デフォルトの名無しさん
2008/03/05(水) 22:48:52CG32.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といったプログラムコードの背景なので・・・
つかれた。情報あれば、教えてください。
0425デフォルトの名無しさん
2008/03/05(水) 23:25:24無料インストールサポートあったでしょ。たしか。
0426デフォルトの名無しさん
2008/03/06(木) 10:09:310427デフォルトの名無しさん
2008/03/10(月) 21:16:11以下のソースで、実行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);
}
//---------------------------------------------------------------------------
へたなコードですが、素人なのでご容赦を
0428デフォルトの名無しさん
2008/03/11(火) 00:16:57hWnd = OpenProcess(PROCESS_ALL_ACCESS, 0, dwPID);
DWORD ReturnSize;
if(!hWnd){ ShowMessage("if(!hWnd)");/
どうも、if(!hWnd)がtrueになるみたいです。
ほとほと困りました。なにとどご支援お願いいたします。
状況説明に不足がございましたら、レスしていただければ
助かります。
0429デフォルトの名無しさん
2008/03/11(火) 01:03:08OpenProcess() の戻り値とOSの関係とか、権限とかはOK?
0430デフォルトの名無しさん
2008/03/11(火) 09:19:33ShowMessage("if(!hWnd)");//デバッグ用//ここにhWndの値をShowMessageするにはどうすりゃいいんだ?
↓
IntToStr(hWnd) or IntToStr(hWnd) or AnsiString().sprintf("%08X", hWnd)
0431デフォルトの名無しさん
2008/03/11(火) 09:28:41OpenProcessの戻り値はHANDLE型。
0432デフォルトの名無しさん
2008/03/11(火) 09:52:09能とか表があると、gccのコンパイルが失敗するので、ソースファイルをUTF8にしたいんでつよね。
0433デフォルトの名無しさん
2008/03/11(火) 10:08:31>OpenProcessの戻り値をHWNDに入れてる。
OpenProcessの戻り値はHANDLE型。
ちょっと見えてきました。
まずは型の勉強をしてみます。
APIの型ってよくわからないんです。
でも、実行では動くのにビルドでは動かない。
ビルドはできるのに。ちくしょう!
夜やってみます。キャストの件ありがとうございます。
0434デフォルトの名無しさん
2008/03/11(火) 12:53:33GetLastError()を調べたところ、
5が帰ってきました。
p://onegland.hp.infoseek.co.jp/wincgi/help/winerror.txt
によると5は
5: アクセスは拒否されました。
とあり、悲しい限りです。
なんらかの対策はないでしょうか?
0435デフォルトの名無しさん
2008/03/11(火) 12:56:410436デフォルトの名無しさん
2008/03/11(火) 14:36:340437デフォルトの名無しさん
2008/03/11(火) 19:34:26だめでした。
「ウインドウハンドル ファイル名」でググッて
実装しているんですが。
GetForegroundWindowして、希望のexeがトップかどうかを
調べてるだけなんです。。。
ほかにいい方法ありませんか?
あきらかにAPIの問題だけど、あのスレ結構きついんだなぁ。
BCBしかわからんし。すれ違いかな?しつこくて申し訳ないです。
0438デフォルトの名無しさん
2008/03/11(火) 19:58:210439デフォルトの名無しさん
2008/03/11(火) 20:09:03調べたいのです。
そのため、GetForegroundWindowでウインドウハンドルを求めて、
アプリ名を検出し、特定のアプリかどうかの文字列判定をしています。
というわけで、アプリ名を知りたいのではないのです。
具体的には、作ってるのはユーティリティで、特定のアプリを
操作しているときに、激しく自前ソフトを実行し、
非特定アプリを操作しているときは、特定のアプリかどうかの
判定のみを実行するのです。ぅ〜ん、うまくいかないなぁ。
実行とビルド実行でこれだけ差がでるとつらいなぁ。
0440デフォルトの名無しさん
2008/03/11(火) 20:29:05HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, pid);
0441デフォルトの名無しさん
2008/03/11(火) 20:44:04おみごと!
どうにか動きました。よくわかんないけど。
いろいろありがとうございました。
0442デフォルトの名無しさん
2008/03/11(火) 20:44:14DWORD 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);
0443デフォルトの名無しさん
2008/03/11(火) 21:09:039xにも対応させたいし。って対応可能??
では。
0444デフォルトの名無しさん
2008/03/12(水) 01:15:57NT系でフルパス取るにはやっぱりPSAPIで取らないとだめ。
あと9x対応にするにはGetModuleFileNmaeExとEnumProcessModulesをLoadLibrary/GetProcAddressでロードしないとエラーが出る。
0445デフォルトの名無しさん
2008/03/12(水) 02:01:47TListViewにて
ListView1->ViewStyle=vsReport;にして
ListView1->Columns->Items[0]->Alignment=taRightJustify;
としても、文字列表示が左寄せのままです。
他の列はちゃんと右寄せに表示されます。
先頭列を右寄せで表示するにはどうすればいいでしょうか。
0446デフォルトの名無しさん
2008/03/12(水) 06:14:060447デフォルトの名無しさん
2008/03/13(木) 01:31:11最初のカラムのAlignmentが無効なのはコモンコントロールの仕様じゃなかったっけ?
0448デフォルトの名無しさん
2008/03/20(木) 20:01:53プルダウンリストで表示するプロパティを探しているのですが、
わかりません。教えていただければ助かります。
リストボックスでなくてもいいです。
コンボボックスのように入力は受け付けたくありません。
例としてはIEのインターネットオプションのプログラムタグの
HTMLエディタや電子メールといったリストボックスです。
0449デフォルトの名無しさん
2008/03/20(木) 20:25:270450デフォルトの名無しさん
2008/03/20(木) 20:28:39ありがとございました。
0451デフォルトの名無しさん
2008/03/20(木) 22:39:55今までGCCでやっていたときには同じフォルダにテキストファイル
おいておけばよかったんですが
Turbo C++に変えてからは同じフォルダに置いてもできません
0452デフォルトの名無しさん
2008/03/20(木) 22:50:540453デフォルトの名無しさん
2008/03/20(木) 23:22:49できました
テキストファイルをプロジェクトファイルにおいていました
実行ファイルはDebug_Build内に作られるんですね
0454デフォルトの名無しさん
2008/03/21(金) 00:43:11SetCurrentDirectory(ExtractFileDir(Application->ExeName).c_str());
とか書いておけばいい
0455デフォルトの名無しさん
2008/03/21(金) 23:52:200456デフォルトの名無しさん
2008/03/26(水) 01:10:47TListViewでチェックボックスを表示した場合とTCheckListBoxに表示される
チェックボックスでは見た目が違うのですが(TListViewに表示される方が枠が黒く太い)
これをTCheckListBoxで使われているようなチェックボックスに変える簡単な方法は
ないでしょうか?
0457デフォルトの名無しさん
2008/03/27(木) 09:12:23ダイアログボックスでOKボタンが押されたときに、TEditの内容が未入力だったら
TEditにカーソルを持っていき、入力をしてもらうようにしたいと考えています。
カーソルを持っていくには、
Edit1->SetFocus();で出来たのですが
OKボタンがおされたときに、OKBtnClick(TObject *Sender)で
Edit1のなかみを調べて、何も入っていなければ
Edit1->SetFocus();を実行しても、ダイアログが閉じてしまいます。
これは、ボタンにModalResult=mrOkを指定しているからだとは思います。
OKボタンがおされたときに、Edit1がカラならEdit1へ
ちゃんと入力されていれば、そのままダイアログを閉じたいのですが
どうすればよいでしょうか。
0458デフォルトの名無しさん
2008/03/27(木) 09:23:51Edit1->SetFocus();
ModalResult = mrNone;
}
0459デフォルトの名無しさん
2008/03/27(木) 09:30:420460デフォルトの名無しさん
2008/03/27(木) 11:18:26>>459
できました。
どうもありがとうございます。
0461デフォルトの名無しさん
2008/04/04(金) 07:54:34AnsiString 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の長さが文字として入ってしまいました。
0462デフォルトの名無しさん
2008/04/04(金) 08:04:160463デフォルトの名無しさん
2008/04/04(金) 08:36:01できました。ありがとうございます。
すいませんがもう一つ教えてください。
if(index!=0)
str.printf("%d",a);
else
str="あいうえお";
の場合はどうすればよいでしょうか。
index!=0 ? str.printf("%d",a) : str="あいうえお";
ではエラーになってしまいます。
0464デフォルトの名無しさん
2008/04/04(金) 08:46:40index!= 0 ? (void)str.printf("%d", a) : (void)(str = "あいうえお");
0465デフォルトの名無しさん
2008/04/04(金) 08:58:40なるほどー
すごい勉強になりました。
E2034 'AnsiString' 型は 'int' 型に変換できない
というエラーの意味が全然わからなかったのですが、
三項演算子は、両方で同じ型にしないとダメなんですね。
どうもありがとうございます。
0466デフォルトの名無しさん
2008/04/04(金) 12:25:42str = index != 0 ? "AAA" : "BBB";
とか
str.printf("%d", index != 0 ? a : b);
と書くんだよ。
あと、コンストラクタの初期化リスト等、どうしても「式」が必要な場所とか。
だから、「同じ型」の「式」が並ぶのが当然なの。「式文」じゃないから。
0467デフォルトの名無しさん
2008/04/04(金) 14:06:010468デフォルトの名無しさん
2008/04/04(金) 15:49:54相互にobjを使うのは形式が違うから誰か変換ツール作らないと無理だけど
同じC++言語だから変換する意味無いでしょうから誰も作らない。
0469デフォルトの名無しさん
2008/04/04(金) 16:11:210470デフォルトの名無しさん
2008/04/04(金) 16:12:280471デフォルトの名無しさん
2008/04/10(木) 01:04:430472デフォルトの名無しさん
2008/04/10(木) 08:13:590473デフォルトの名無しさん
2008/04/10(木) 21:15:440474デフォルトの名無しさん
2008/04/11(金) 01:34:370475デフォルトの名無しさん
2008/04/14(月) 15:13:54C++Builder6で作られたプロジェクトのビルドができません。
エラー内容は以下の通りです。
[BCC32 エラー] functional(135): E2093 < 演算子が使われたがクラス string には定義が存在しない。
どなたか教えて頂けますか。
0476デフォルトの名無しさん
2008/04/14(月) 16:19:18いい事言うなあお前。
みんなが頭じゃわかっててもなかなか実践できない事を口に出して言えるなんざ大した自信だよ。
それで出来てなかったらあのインチキ占いのバアさんと一緒だぞお前。
そんなに当たり前の事を言いたかったら尼さんにでもなって言行等しくなってから説教したらどうだ。
0477デフォルトの名無しさん
2008/04/14(月) 18:31:560478デフォルトの名無しさん
2008/04/14(月) 22:25:46いい事言うなお前。
0479デフォルトの名無しさん
2008/04/15(火) 00:05:26newsgroupで質問した人?エスパー求むってのもちょっとねぇ。
最小限の再現状況をさらしなさいな。
0480デフォルトの名無しさん
2008/04/15(火) 02:33:06最低限、エラー行を書けよ。
そんな質問の仕方では誰も答えねえぞ。
0481デフォルトの名無しさん
2008/04/15(火) 22:42:20曖昧な表現はすべて確定的表現にしないとダメよ
0482デフォルトの名無しさん
2008/04/16(水) 02:50:01>>479>>480>>481
質問の仕方が悪くてごめんなさい。
このエラーで困ってたのは
私(とnewsgroupで質問してた人)の関係者なのですが、解決したとのことです。
詳しい事は聞いてないのですが
エラーが出る直前にコンパイル中のCPPに#include <string>を追加したら通ったそうです。
どうもありがとうございました。
0483デフォルトの名無しさん
2008/04/17(木) 15:48:42関係者なんですね?わかります。
ともあれnewsgroupにもなんか書いておいたほうがいいと思いますよ。
0484デフォルトの名無しさん
2008/04/18(金) 18:28:240485デフォルトの名無しさん
2008/04/28(月) 15:47:08特殊フォルダを取得したいためSHGetSpecialFolderPath()を使いたいのですが、
定義されていないというエラーが出ます。
#include <shlobj.h>を先頭に挿入すると、さらに大量のエラーが出ます。
どうすれば、よいのでしょうか。
この系統の方法以外で特殊フォルダのパス名を取得する方法はありますか?
0486デフォルトの名無しさん
2008/04/28(月) 16:46:18それが礼儀っちゅうもん。
#include "shlobj.h"するには、
NO_WIN32_LEAN_AND_MEAN を追加しなければ、二重定義エラーがでる。
設定方法は、Builderのバージョンによりちょいと異なる。
0487デフォルトの名無しさん
2008/04/28(月) 23:09:59すみません、これから気をつけます。
バージョンに関してですが、Turbo C++です。
無料に引きつけられて勉強を始めましたが、国民機時代のTurbo君とは
名前だけが同じだけで後は全く別物でした。(汗)
Turbo C++をもう少し使ってみて、ものになりそうでしたら製品版の
Builderを買おうと思っています。
本題につきまして、
NO_WIN32_LEAN_AND_MEAN を#defineしましたら、問題なく動きました。
本当にありがとうございました。
今後も調べても分からないことを質問させて頂きますのでよろしく
お願いいたします。
0488デフォルトの名無しさん
2008/04/28(月) 23:19:36こっちのTurbo君などはいかが?
http://dn.codegear.com/article/21751
ちなみに新TurboのExplorerエディションはコンポーネントの追加が出来ない以外はほぼProfessionalと同等の機能持ってた気がする。
ちなみに自作や他作コンポーネントはRAD環境で使えないだけでソース上でnewすればExplorerでも使える。
0489デフォルトの名無しさん
2008/05/01(木) 22:57:30ググったらBuilder3で、専用の関数を作ったりしてましたが・・・6.0でも簡単にはできないのでしょうか?
0490489
2008/05/01(木) 23:21:320491デフォルトの名無しさん
2008/05/02(金) 00:20:100492489
2008/05/02(金) 00:36:04すいませんでした&ありがとうございました
0493デフォルトの名無しさん
2008/05/02(金) 00:44:320494デフォルトの名無しさん
2008/05/02(金) 02:59:51バッファとか考えなくてイイ。
0495デフォルトの名無しさん
2008/05/02(金) 08:06:110496デフォルトの名無しさん
2008/05/07(水) 13:17:55新規作成→アプリケーション から、ヘッダファイルでとりあえず、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
です。ご指導の程、よろしくお願いいたします <(_ _)>
0497デフォルトの名無しさん
2008/05/07(水) 13:28:29まずはVCLリファレンスの読み方でも勉強しようか
TStringGrid
ユニット Grids
結論から言うと宣言されてない型から継承したクラスをどうやって作るのかと。
0498496
2008/05/07(水) 13:33:21#include <Grids.hpp>
これが必要だったみたいです (^^;;;;
ども、お騒がせでした
0499496
2008/05/07(水) 13:36:14あ、すいません、前後してしまいました
いや、なんかそこらへんのクラスに必要なヘッダってのは最初っから
インクルードされてるもんだと思ってました (^^;;;;
ありがとうございました <(_ _)>
0500デフォルトの名無しさん
2008/05/07(水) 13:38:16パレットからフォームにコンポーネント置けば勝手にヘッダファイルが追加されるけど、ソース上でのみ宣言だと手動でヘッダincludeしないとダメだお
ついでにtypedefはいらん気もするけど。
0501496
2008/05/07(水) 14:09:51なるほど、そういう仕組みでしたか。
typedef しとかないと、宣言のときに一々 class xxxx って
頭にclassをつけなきゃいけなくなると思っていたのですが、
あれ?typedef しなくても、「 class 」って記述抜きで通っちゃいました
なんでだろう????
色々とありがとうございました <(_ _)>
0502デフォルトの名無しさん
2008/05/08(木) 10:21:490503デフォルトの名無しさん
2008/05/09(金) 06:35:46・別階層に同名のファイルやフォルダって作れますか?(
・一気にサブフォルダを含めてプロジェクトに作成する事はできますか?
(一つずつ、フォルダを掘って作成しないといけませんか?ドロップできなくて..)
0504デフォルトの名無しさん
2008/05/09(金) 17:04:01コンポーネントを試作中なのですが
コンポーネントをインストールした状態でのテストをしてみたいと考えています。
(オブジェクトインスペクタがどんな感じになるかとか。。。)
ということで
1.テストコンポーネントのインストール
2.コンポーネントのテスト
3.テストコンポーネントのアンインストール
4.コンポーネントの手直し
という手順を繰り返したいのですが
3.をどうやってやったらよいのかがわかりません
bcb6proです。
ご指導の程よろしくお願いします <(_ _)>
0505デフォルトの名無しさん
2008/05/09(金) 17:12:20てかアンインストールしなくてもテスト>手直し>コンポのビルド>インストールで問題ない。
0507デフォルトの名無しさん
2008/05/09(金) 18:08:30ヘッダファイルのpublicに入れるだけではダメですよね?
ソフトはBCB6.0Proです。
よろしくお願いします。
0508デフォルトの名無しさん
2008/05/09(金) 18:35:370509507
2008/05/10(土) 00:51:44田舎なので本屋に置いてないので、見てから買うことが出来ないため、来るまでわからないんです。
http://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
0510デフォルトの名無しさん
2008/05/10(土) 13:26:42全部のフォームのソースにインクルードしときゃいいんじゃね?
0511デフォルトの名無しさん
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};
};
//---------------------------------------------------------------------------
0512デフォルトの名無しさん
2008/05/10(土) 14:01:05//---------------------------------------------------------------------------
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 ってのを
再利用できないものでしょうか?
それともやっぱり、ゴリゴリと一から実装し直さないと駄目なのものなのでしょうか?
よろしくお願い致します <(_ _)>
0513507
2008/05/10(土) 15:49:09それはやっているんですけど、動かないので・・・。
メインのフォームに書かれている関数なので、そのヘッダファイルは他のフォームでもインクルードしているのですが、
未定義の関数として見られてしまうんです。
0514デフォルトの名無しさん
2008/05/10(土) 16:40:200515デフォルトの名無しさん
2008/05/10(土) 16:51:18メインフォームのメンバ関数として定義してりゃそりゃ見つからんだろ。
普通の関数にしないと。
0516デフォルトの名無しさん
2008/05/10(土) 18:26:48なるほどっ!!
// this->BorderStyle = FBorderStyle; // ←これじゃBorderStyleが変わるわけがない
TEdit::BorderStyle = FBorderStyle; // ←こっちでバッチリ!!
オーバーライドされる前のやつってのも、こうすれば使えるんっすね!!
ありがとうございましたぁーーーーっ!!!
0518デフォルトの名無しさん
2008/05/10(土) 19:38:35C++Builderの入門書じゃなくてC/C++そのものの入門書読むことをすすめとく。
STLもvectorくらいは最低覚えとけ。
0519デフォルトの名無しさん
2008/05/13(火) 15:48:44enum 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 形式のクラス型」ではないのでしょうか?
ご指導の程、よろしくお願いいたします。
<(_ _)>
0520デフォルトの名無しさん
2008/05/13(火) 16:46:19エラーが出ていたのは、__classid(TEnumProperty) ではなく、__typeinfo(TMyEnum) の方でした。
TMyEnum はクラスではないので、
PTypeInfo TypeInfo;
PPropInfo PropInfo = GetPropInfo(__typeinfo(TForm), "BorderStyle");
if (PropInfo)
TypeInfo = *(PropInfo->PropType);
という具合にしないといけないようですが、GetPropInfo がよくわかりません。
ヘルプを見ても引数が void のものしかありませんし、
Win32API の方で GetProp というのが該当する様ですが、こちらに変えてもうまくゆきませんでした。
enum型の型情報ポインタってのは、いったいどうやったら取得できるのでしょうか (´;ω;`)
0521デフォルトの名無しさん
2008/05/13(火) 19:02:40extern 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を継承したときのオーバーライドってこれで合ってますでしょうか よろしくお願いします <(_ _)>
0522デフォルトの名無しさん
2008/05/17(土) 22:06:01TfmOption *fmOption = new TfmOption(this);
fmOption->ShowModal();
delete fmOption;
どうもうごきません。
それとモーダルもしたくないのですが、
普通にメインウィンドウと同等のウィンドウとしたいのです。
オプションで初期にはロードしたくありません
0523デフォルトの名無しさん
2008/05/18(日) 07:43:32TForm::Visibleをチェック。
新規作成したフォームはデフォルト値がfalseになってる。
0524デフォルトの名無しさん
2008/05/18(日) 10:04:48Visible=trueは必要ないハズ。
>>522は基本的にOKだと思う。
動かないとは、表示されないという意味なのだろうか。
モーダルにしたくないなら、
fmOption->Show();
0525デフォルトの名無しさん
2008/05/18(日) 14:42:51void __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変数にオプション保持用の変数をもって、
ロードしたいのですが、簡単そうでむずかしくて・・・。
0526デフォルトの名無しさん
2008/05/18(日) 14:43:570527デフォルトの名無しさん
2008/05/18(日) 19:21:120528デフォルトの名無しさん
2008/05/19(月) 01:06:04その気がないならDelphiのほうがまだましだと思う。
0529デフォルトの名無しさん
2008/05/19(月) 17:06:13>>528の方がもっと低脳
の件について
0530デフォルトの名無しさん
2008/05/19(月) 19:49:260531デフォルトの名無しさん
2008/05/19(月) 19:58:38ヒント:ヘルプ
0532デフォルトの名無しさん
2008/05/20(火) 17:59:51× の件
○ な件
0533デフォルトの名無しさん
2008/05/20(火) 18:07:55buf[0]の値が255であるとき
Edit->Text.printf("%02X",buf[0]);
ヘキサの[FF]と表示されるようにしたいのですが、やはり
AnsiString ss.printf("%02X",buf[0]);
Edit->Text = ss;
のように代入するしか方法はないのでしょうか?先人の方教えて
頂けませんか?
0534デフォルトの名無しさん
2008/05/20(火) 18:25:010536デフォルトの名無しさん
2008/05/20(火) 19:39:56AnsiStringで受け取った入力を、char[80]から入れたいんだけど、どすればいいんすか?
0537536
2008/05/20(火) 19:41:10入力されるブツは、日本語ダス
0538デフォルトの名無しさん
2008/05/20(火) 19:58:30strcpy
0539デフォルトの名無しさん
2008/05/20(火) 20:22:050540デフォルトの名無しさん
2008/05/22(木) 21:03:52BDS2006にて
VCLフォームアプリケーションを新規作成する。
TExcelApplicationをフォームに貼り付ける。
コンパイルすると
[リンカ エラー] Error: 未解決の外部参照 '__fastcall System::Variant::operator =(wchar_t *)' が
C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\BCBOFFICEXP.LIB|Excel_XP_srvr.cpp から参照されました
というエラーが出ます。
このエラーの解決方法がわかりません。
なにかをincludeしなければならないのでしょうか。
0541デフォルトの名無しさん
2008/05/22(木) 21:09:34Excel_XP・・・となっている部分が
Excel_2K・・・となり
問題なくコンパイルは通ります。
0542デフォルトの名無しさん
2008/05/22(木) 21:12:15ヘッダじゃなくてライブラリファイルが抜けてるっぽいね。リンカエラーだから。
0543デフォルトの名無しさん
2008/05/26(月) 22:29:09BMP形式で保存すると32bitになりますよね?
そこで、PixcelFormat で pf24bitを指定すると、なぜか書けないんです。
そこで、あえて32bitを指定してもなぜか書けずに特に指定せずに
image->picture->〜 = (TColor)0xffffff
だと書ける。
ただ、保存するのは24bitのBMPにしたいんだが、ググると
ColorToRGBという関数があるみたいなんですが、
これの使い方教えて貰えませんか?ヘルプ見ても、いまいちわからなくて。
また、この関数使うのより簡単に24bitBMPへ保存できる良い方法が有れば伝授してください
0544543
2008/05/26(月) 23:01:57環境は、Builder 2006です。
0545543
2008/05/27(火) 19:08:00Canvasに書いてから、pf24bitを指定する事で書けました。
どうやら順番があったようです
0546デフォルトの名無しさん
2008/06/08(日) 14:40:21dll内にフォームを用意したいのですが
うまくいきません
Form1=new TForm1(this);Form1->ShowModal();delete Form1;
うまく呼び出す方法はあるのでしょうか?
0547デフォルトの名無しさん
2008/06/09(月) 23:17:59フォームにボタンとラベルを各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();
}
0548デフォルトの名無しさん
2008/06/17(火) 03:43:57恐縮ですが質問させてください。
プログラム上で動的にコンポーネント(TPanel)を配置しています。
そのコンポーネントにOnDragDropとOnDragOverイベントを取得させて
動作させたいのですがやり方がよく分からずうまくいきません。
初歩的な質問で申し訳ありませんが教えて頂けないでしょうか。
よろしくお願いします。
0549デフォルトの名無しさん
2008/06/17(火) 08:15:260550デフォルトの名無しさん
2008/06/17(火) 10:23:37だんだんプロジェクトが大きくなってくると、デバッガのインスペクトとかで表示される値が
むちゃくちゃになってきます。回避方法ってないものでしょうか?
0551デフォルトの名無しさん
2008/06/17(火) 10:26:58それは無い。
0552デフォルトの名無しさん
2008/06/17(火) 11:24:590553デフォルトの名無しさん
2008/06/17(火) 11:26:56コンパイラの最適化の結果。
0554デフォルトの名無しさん
2008/06/17(火) 11:32:530555デフォルトの名無しさん
2008/06/17(火) 11:52:05プロジェクトにファイルを追加した直後は、ブレークポイントで止まらなくなるけど。
ブレークポイントで止まった後は変数が変になることはない。
0556デフォルトの名無しさん
2008/06/17(火) 12:13:29struct Hoge : vector<int> {};
Hoge hoge;
try
{
string a;
if (a.empty())
throw exception();
Test test;
}
catch (...)
{
}
これのTest(何のクラスでもいい)のデストラクタがなぜか呼ばれるんだけど、
再現する人いるかな。
0557550
2008/06/17(火) 12:37:45コンパイラの最適化OFFで、
if(Instance != NULL)
{
Instance->Data = 3;
}
とかやって、Instance->Data にブレークポイントを設定したとする。
それで、Instance の値を見ると NULL になってることがある。
プログラム自体はちゃんと動くんだけど、デバッガが、グダグダになることがある。
ダイレクトXアプリってのもあるのかなぁ?
あと、これは仕様だと思うんだけど、いつのまにか、TOpenDialog で
マイコンピュータを開くと、なにも表示されなくなった。
0558デフォルトの名無しさん
2008/06/17(火) 12:39:14多分、6にうpするとそんなことない。
0559デフォルトの名無しさん
2008/06/17(火) 12:49:036ってもう買えないよね?
0560デフォルトの名無しさん
2008/06/17(火) 12:53:020561デフォルトの名無しさん
2008/06/17(火) 16:40:400562デフォルトの名無しさん
2008/06/17(火) 16:42:46ま、5と6使った自分なら、間違いなく6を選ぶ。
0563デフォルトの名無しさん
2008/06/17(火) 17:07:53BDS2006 はもってるんだけど、なんかこれもバギーらしいな。
思い切って、2008 がでるまで待とうかとも思ってるんだけどね。
9月ぐらい?
printf デバッグとかもう嫌だよ・・・。
0564デフォルトの名無しさん
2008/06/17(火) 18:40:32パソコンを再起動
これ常識。
これで回復する。
自分のプログラムで、どっかぶち壊しまくってるんだよ。
0565デフォルトの名無しさん
2008/06/17(火) 18:45:000566デフォルトの名無しさん
2008/06/17(火) 18:52:20自分で自分のDSをぶちこわしているから変数がヘンになる。
0567デフォルトの名無しさん
2008/06/17(火) 19:11:35DSとか言ってるから古い人ぽいけど。
0568デフォルトの名無しさん
2008/06/17(火) 19:47:060569デフォルトの名無しさん
2008/06/17(火) 22:13:34デバッガ、コードガード、OS、の3つをすり抜けないと無理なんだけど、
そう言う事って出来るの?セキュリティホールみたいな物か?
0570548
2008/06/18(水) 02:27:24void __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をマウスドラッグで
移動できるようにしたいのですがその方法がよく分からないということです。
回りくどい説明で申し訳ありません。
0571デフォルトの名無しさん
2008/06/18(水) 07:39:030572548
2008/06/18(水) 12:05:40マウスの操作でボタンの座標位置を変更できるようにしたいです。
「自分で追加したボタンを自分の配置したい位置につまんで移動できる」
と言った方がわかりやすいかもです・・・。
OnDragDropイベントではなくOnMouseMoveイベントを使えばもっときれいにできるのかもしれないんですが、
ここではとりあえず「ドラッグで移動して配置する」という操作だけを目的としていたので
イベントとして使いやすいと感じたDragDropを使用しています。
0573デフォルトの名無しさん
2008/06/18(水) 22:48:51でクリックしようとしたときにちょっとした操作ミスでドラッグで移動になる、と。
そんな自己満足なUIは考え直せって。
0574デフォルトの名無しさん
2008/06/18(水) 23:07:010575デフォルトの名無しさん
2008/06/18(水) 23:39:38で所望の動作はWM_NCHITTESTでHT_CAPTIONってのがお手軽。
0576548
2008/06/20(金) 02:47:20ボタンクリックとドラッグ混同の操作ミス等、言われてみたらその通りだと感じました。
アドバイス含め、対処できるように組み直したいと思います。
移動についてはさせることができました。
アドバイス、ご指摘ありがとうございました。
0577デフォルトの名無しさん
2008/06/20(金) 15:57:40うちも VCL 以外で近いことを以前やったことあるけど、
そのときの実装は何ピクセル以上ドラッグするとドラッグ開始、
っていうふうにしてた。
0578デフォルトの名無しさん
2008/06/24(火) 04:30:23-Hr スイッチにより vcl4.h を vcl.h の代わりにインクルードします
っていうメッセージが出るんだけど、このスイッチって何処に記載されてるの?
古いプロジェクトの移行って面倒だね・・・。
0579デフォルトの名無しさん
2008/06/30(月) 16:46:200580デフォルトの名無しさん
2008/07/01(火) 04:50:200581デフォルトの名無しさん
2008/07/01(火) 09:39:37ところで、Vi$taってなぜかXPとマルチブートできませんよね?
0582デフォルトの名無しさん
2008/07/01(火) 09:50:060583デフォルトの名無しさん
2008/07/01(火) 19:26:51Vistaの動作検証だけなら開発は2000かXPで。
視覚スタイルは.manifest同梱で対応可。
Vistaアイコン(PNG圧縮256px)はIcoFxで可能。
res作成はVista対応SDKのrc.exeで可能。
0584デフォルトの名無しさん
2008/07/01(火) 19:49:260585デフォルトの名無しさん
2008/07/01(火) 22:49:40そうなのか・・・XPに入れてexeとdllだけ2000にコピーしたから気付かなかったわ。
0586デフォルトの名無しさん
2008/07/02(水) 08:57:02ビジュアルスタイル対応は、Theme Manager 使った方がいいのでは。
0587デフォルトの名無しさん
2008/07/04(金) 22:52:10TButtonの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;
}
}
どうしたらいいんでしょうか? アドバイスよろしくお願いします。
0588デフォルトの名無しさん
2008/07/04(金) 22:56:41もし文字色をシステムに従わないようにしたいのであれば、オーナドローでどうぞ。
0590デフォルトの名無しさん
2008/07/06(日) 01:08:29{
char *aaa;
aaa = "jpg";
if(aaa == "jpg")Button1->Caption = "jpg";
}
C言語の基本的なことだとはわかっているのですが・・・
これがtrueにならない理由って何でしょう?
基本的すぎるのか、文字列でググっても出てこないのはなぜー
0591デフォルトの名無しさん
2008/07/06(日) 01:18:27void __fastcall TForm1::Button1Click(TObject *Sender)
{
char* aaa;
char* bbb;
aaa = "jpg";
bbb = "jpg";
ShowMessage(AnsiString().sprintf("aaa=%08X bbb=%08X", aaa, bbb));
}
0592デフォルトの名無しさん
2008/07/06(日) 03:08:060593デフォルトの名無しさん
2008/07/06(日) 04:34:540594デフォルトの名無しさん
2008/07/06(日) 05:21:36メモリは壊れないのではないのか。
0595デフォルトの名無しさん
2008/07/06(日) 05:24:50ができないのを今初めて知った(´・ω・`)
0596デフォルトの名無しさん
2008/07/08(火) 13:57:48if ( strcmp( aaa,"jpg" )==0 ) とすればええんでないの?
"jpg"ってすると、メモリのどっかに確保された4バイト('j','p','g',0)のアドレスを示す。
aaaに格納された"jpg"のアドレスと、ifで比較している"jpg"のアドレスが違うからfalseになる。
0597デフォルトの名無しさん
2008/07/08(火) 18:27:30char* でやらないで AnsiString でやれば動く。
0598デフォルトの名無しさん
2008/07/09(水) 23:36:09Button1Click(Button1); Button1Click(Button2); Button1Click(Form1);
のどれでも動くみたいですが、Senderには普通何を与えるのが正しいの?
Senderの役割を教えてください。
//Form1上にButton1とButton2
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1Click(Button2);
}
0599デフォルトの名無しさん
2008/07/09(水) 23:54:20たとえば拡大ボタンと縮小ボタンがあって、それぞれにイベントハンドラ書くのはアホ臭いから
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int zoom;
TButton* button = dynamic_cast<TButton*>(Sender);
zoom = button->Tag;
if (zoon == 1) 拡大();
else 縮小();
}
こんな感じで使ったりする。
ハンドラ内でSender使わないならthisで十分。
0600デフォルトの名無しさん
2008/07/10(木) 00:14:170601デフォルトの名無しさん
2008/07/22(火) 14:35:51http://homepage2.nifty.com/spw/tips/GetIfTable.html
上記のサンプルプログラムを自分の環境で実行してみたのですが、以下のエラーが出てしまいます。
[リンカ エラー] 外部シンボル 'GetIfTable' が未解決(D:\ADDRESGET\UNIT1.OBJ が参照)
ソースファイルをダウンロードして実行してみたところ、正常に動作したことから環境は間違って無いと思うのですが・・・。
インクルードファイルも同じにして、オプションのリンカやディレクトリ/条件も揃えてみましたがダメでした。
この場合、何を見たらよろしいのでしょうか?
よろしくお願いします。
0602デフォルトの名無しさん
2008/07/22(火) 14:54:57bcb/lib/psdkにあるのプロジェクトに追加しる
0603デフォルトの名無しさん
2008/07/22(火) 15:01:37・・・その通りでした。
インクルードで指定して、エラーも出ていないから必要無いと思い込んでました。
本当にありがとうございました。
0604D
2008/07/22(火) 15:12:34☆ チン ハラヘッタ〜
ハラヘッタ〜
☆ チン 〃 ∧_∧
ヽ___\(\・∀・)
\_/ ⊂ ⊂_)
/ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄| |
|淡路たまねぎ|/
 ̄ ̄ ̄ ̄ ̄ ̄
0605デフォルトの名無しさん
2008/07/22(火) 15:38:51コンパイルとリンクに違いについてもうちょっと勉強した方がいい
0606デフォルトの名無しさん
2008/07/25(金) 03:16:38char chrBuf[1024];
AnsiString asBuf;
strcpy(chrBuf,"123456");
strcpy(asBuf.c_str(),chrBuf);
asBuf.Delete(3,3);
Label1->Caption = asBuf.c_str();
これで、「126」と表示させたいのですが、実際には「123456」となってしまうのは何故でしょうか・・・?
よろしくお願いします。
0607デフォルトの名無しさん
2008/07/25(金) 04:39:22AnsiString asBuf;
strcpy(chrBuf,"123456");
asBuf = chrBuf;
asBuf.Delete(3,3);
Label1->Caption = asBuf;
とやりたいの?
Caption は AnsiString だから、AnsiString → char * → AnsiString っていう
キャストが行われると思うんだけど、これはわざと?
c_str() で確保されたメモリ空間の寿命は未確定。
コピー先として使うべきではない。
0608デフォルトの名無しさん
2008/07/25(金) 10:30:26AnsiStringを加工に使いたいのですが、挙動を理解しきれてないので・・・。
「http://homepage1.nifty.com/emil/ansistring.html」で、
>char* c_str( )
>文字列をC言語の char* 文字列で返す。返すのはあくまでも char* 型のポインタであり、
>文字列のコピーが作られるわけではない。従って、受け取った char* 文字列を安全に操作したい場合は strcpy( ) などでコピーすると良い。
と、あるのでコピーしたのですが・・・解釈が違ったのかな?
ポインタとして渡せば動作するのですね。
ありがとうございます。
0609デフォルトの名無しさん
2008/07/25(金) 10:35:12は、無理して使う必要は無い。
どうしても使わないといけないときは、AnsiStringとstd::stringの渡しくらい。
例えば、
AnsiString SBuf;
string sBuf;
のとき、
sBuf = SBuf.c_str();
SBuf = sBuf.c_str();
と書く。
それ以外は、「.c_str()」を書かなくても、多分演算子がオーバーロードされてて、簡単に代入できる。
0610デフォルトの名無しさん
2008/07/25(金) 13:51:01解釈が違うと思う。
c_str() で得られたポインタから strcpy 等で
「自分で確保したメモリにコピーする」っていう意味。
そうすれば、自分で確保したメモリの寿命は自分で決められるから。
ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-016.html
↑も参照してみて。
0611デフォルトの名無しさん
2008/07/25(金) 15:16:04詳しい解説ありがとうございます。
入門書を見ると、「初心者はAnsiStringを使えば簡単」って書いてあるけど、実は取り扱いには注意しないといけないんですね。
暑くて頭があまり回っていませんが、がんばってみます。
0612デフォルトの名無しさん
2008/07/25(金) 15:20:45基本的には常に AnsiString を使って、
API とのやりとりや、標準ライブラリの呼び出しだけに c_str() を使う、
って考え方が良いと思う。
0613デフォルトの名無しさん
2008/07/25(金) 15:48:01なことない。簡単。
0614デフォルトの名無しさん
2008/07/25(金) 18:05:18テクスチャについて質問があります。
今, 「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やそれ以上のサイズが使える解決方法をお願いします。
0615デフォルトの名無しさん
2008/07/25(金) 18:15:00よくわからないけど、ファイル自体をスタックに積んでるのかねぇ?
そんなコード見たことがないが。
その辺り調べてみた?
0616デフォルトの名無しさん
2008/07/25(金) 18:37:34In 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;
}
}
0617デフォルトの名無しさん
2008/07/25(金) 18:48:290618デフォルトの名無しさん
2008/07/25(金) 18:54:340619デフォルトの名無しさん
2008/07/25(金) 20:02:44math.hのincludeがうまくできてないのかね
0620デフォルトの名無しさん
2008/07/25(金) 21:11:480621デフォルトの名無しさん
2008/07/26(土) 21:04:150622デフォルトの名無しさん
2008/07/26(土) 21:09:55とりあえず載ってるコードがダメダメな気がするから自分で書き直すことをお奨めする
0623デフォルトの名無しさん
2008/07/26(土) 22:36:46とでるのですが、理由がわかりません・・・。
どなたかわかる方お願いします。
0624デフォルトの名無しさん
2008/07/27(日) 14:51:31実際にボタンを押してではなく、あるメソッド内から呼び出したいのですが
そういうことは可能ですか?
0625デフォルトの名無しさん
2008/07/27(日) 15:12:140626デフォルトの名無しさん
2008/07/27(日) 15:43:56おかげさまで解決しました。
ありがとうございました。
0627デフォルトの名無しさん
2008/07/27(日) 22:16:52今までC言語を始めよう!というフリーソフトを使ってきました
0628デフォルトの名無しさん
2008/07/27(日) 22:17:48スレ違い
0629デフォルトの名無しさん
2008/07/27(日) 23:24:30エディタ部分だけなら2006以降のエディタの方がいいかな
ウィンドウ構成とかは6までのIDEのほうが好きだけど
0630デフォルトの名無しさん
2008/08/05(火) 15:25:09mecabの初期化すら出来ない状態なので何かアドバイス頂ければ嬉しいです。
よろしくお願いします。
0631デフォルトの名無しさん
2008/08/08(金) 15:12:29VCその他では
#define PROCESS_ALL_ACCESS 0x001f0fff
BCCでは
#define PROCESS_ALL_ACCESS 0x001fffff
になってる。
たぶん>>427の問題もそのせい
こういうバグってどこに報告すればいいん?
0632デフォルトの名無しさん
2008/08/08(金) 15:31:13検証コードはprintf("%08X", PROCESS_ALL_ACCESS);
環境は6pro update4
0633デフォルトの名無しさん
2008/08/08(金) 15:37:38#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
0xFFF)
#define STANDARD_RIGHTS_REQUIRED (0x000F0000L)
#define SYNCHRONIZE (0x00100000L)
どう見ても 001f0fff だわな
0634デフォルトの名無しさん
2008/08/08(金) 15:38:59駄レスすまそ
0635デフォルトの名無しさん
2008/08/09(土) 11:28:570636デフォルトの名無しさん
2008/08/09(土) 21:33:14チェックしてますが、入力値が異常でも、フォーカスが次のTEdit
にうつってしまいます。
よく考えれば当然といえば当然の結果なのですが、どうしても正常値
を入力するまでフォーカスを保持させたいのですが、行き詰ってしまい
ました。
よい解決方法がないでしょうか。よろしくお願いします。
0637デフォルトの名無しさん
2008/08/09(土) 22:19:30void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
TEdit* edit = dynamic_cast<TEdit*>(Sender);
if (edit->Text != AnsiString("aaa")) {
edit->SetFocus();
}
}
0638デフォルトの名無しさん
2008/08/11(月) 15:43:16ネットで調べると、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;
}
}
0639デフォルトの名無しさん
2008/08/11(月) 15:56:51ビットマップが24bitならBGRの3bytes、32bitならBGRAの4bytes。
0640デフォルトの名無しさん
2008/08/11(月) 15:58:5224bitだとワード+バイト転送なのに対し、32bitはダブルワード1回ですむ
0641デフォルトの名無しさん
2008/08/11(月) 16:07:26なるほど、ビットマップの形式によって変わるので処理としては間違ってはいないんですね。
BGRAがあることに気づきませんでした。
ありがとうございます。
0642デフォルトの名無しさん
2008/08/13(水) 17:02:27メイン側のメンバ変数の内容が見えないのですが、どうすればいいのでしょうか。
エラーが出るのではなく、関係ない数値が入っているので、別の部分を参照しているみたいです
具体的には
メイン側クラス(MainClass)、サブのスレッド(SubThread)
MainClass内で
AnsiString a;
SubThread->hogeEvent = (TNotifyEvent)&hogeFunc;
さらに
void hogeFunc(TObject* Sender)
{
MessageBox(Handle , a.c_str() , "",MB_OK);
}
として、hogeEventを発生させたとき、メイン側で既に代入したaの内容が読み取れていない
といった感じです。
よろしくお願いします。
0643デフォルトの名無しさん
2008/08/13(水) 23:46:54実行する。PostMessageとかSynchronizeとかを使う。
0644デフォルトの名無しさん
2008/08/14(木) 03:13:49ありがとうございます。
TNotifyEvent fOnHoge;
__property TNotifyEvent hogeEvent = {read=fOnHoge,write=fOnHoge};
void __fastcall TSubThread::evHoge(TObject* Sender)
{
if(hogeEvent){
hogeEvent(this);
}
として、サブスレッド内で
Synchronize((TThreadMethod)&evHoge);
を呼び出しても、解決しません。
このような書き方ではメインスレッドのコンテキストで実行されないのでしょうか。
2度も申し訳ありませんが、よろしくお願いします。
0645デフォルトの名無しさん
2008/08/14(木) 18:47:21Unit1.cppにくっついてるフォームForm1(Unit1.dfm)のMemo1に
Unit2.cppの処理から文字を入れたいときはどうすればよいでしょうか…
VBっぽくForm1->Memo1->Lines->Add(a);みたいにしたら出来るかなーと思ったけど駄目でした
Turbo C++を使っています。
0646デフォルトの名無しさん
2008/08/14(木) 18:48:370647デフォルトの名無しさん
2008/08/14(木) 18:50:140648645
2008/08/14(木) 19:10:20出来ました。ありがとうございます!
0649デフォルトの名無しさん
2008/08/17(日) 03:27:01これを使用してみたいのですが、最初にどこから手をつけていいのかわからなくって・・・。
とりあえず、DLLのインポートライブラリを作成してみようと、nidaq32.dllを使用してみたのですが、
Error nidaq32.dll: unknown file type
と、なってしまいます。
NI-DAQのバージョンは7.2
XPでBuilder6.0を使用しています。
0650デフォルトの名無しさん
2008/08/18(月) 00:43:530651デフォルトの名無しさん
2008/08/18(月) 01:24:22これってIMPLIBの使い方間違ってます?
0652デフォルトの名無しさん
2008/08/18(月) 20:02:18#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です。
0653デフォルトの名無しさん
2008/08/19(火) 09:01:040654デフォルトの名無しさん
2008/08/19(火) 09:09:17これって何のライブラリになるんでしょ?C++標準?VCL?
それを知らないと、#includeできないので。
あと、getlocaleってのもあるんでしょうか?
0655デフォルトの名無しさん
2008/08/19(火) 09:18:02localelist
みたいな1式も取れるんでしょうか?
0656デフォルトの名無しさん
2008/08/19(火) 09:35:41BCBでも他の文字列ではちゃんと動いてるし。
0657デフォルトの名無しさん
2008/08/19(火) 09:50:06>Standard C++ Library: Class Reference
>locale
ってのがありますね。
これはクラスだからいろいろメソッド使えるかも。
でも、これで切り替えても、
AnsiToUtf8/Utf8ToAnsiのロケールとは無関係なんかなぁ。
あ〜、テストプログラム作れば良いんだが、通勤時の暑さのせいでしんどい。
0658デフォルトの名無しさん
2008/08/19(火) 23:14:53インポートライブラリが悪いって、どのような現象があるのでしょうか?
BuilderのバージョンはBuild10.166ですが・・・
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;
{
0660デフォルトの名無しさん
2008/08/21(木) 02:12:21正解でなくても、何か参考になるようなことでもいいので意見を下さい。
よろしくお願いします。
0661デフォルトの名無しさん
2008/08/21(木) 07:47:42implib nidaq32.lib nidaq32.dll と順番を直したけどnidaq32.dllは壊れてるからエラー、とか?
一応本家にbcc用のインポートライブラリがあるみたいだけど。 ↓の一番下のzip
http://digital.ni.com/public.nsf/allkb/7793F4D8AFC47C1E86256E84005BBBE8
0662デフォルトの名無しさん
2008/08/21(木) 20:09:54NIDAQmxのDLLはnicaiu.dll見たいだよ?
NIDAQmxをインストールするとc:\WINDOWS\system32あたりにnicaiu.dllがあるはずだから
>implib nicaiu nicaiu.dll
でnicaiu.libを作ってリンクしてみたら?
0663デフォルトの名無しさん
2008/08/22(金) 02:33:44すいません、一度壊してました・・・orz
>>662
NIDAQではなく、NIDAQmxを使うのですか!!
ありがとうございます、やってみます。
0664デフォルトの名無しさん
2008/08/27(水) 17:23:50void __fastcall TForm1::ShowDialog()
{
Form2->Show();
for (i=0;i<100;i++) {... ;ProgressBar1->Position=i; ...}
Form2->Hide();
}
このForm2が前面に表示されている最中は、 Form1上にあるボタンをクリックしても
OnClickイベントが発生しないようにしたい(無視したい)のですが、 どうしたらいいのでしょうか?
Form2表示中にForm1上のボタンをクリックしたことによる処理が、 Form2が隠れた後に
実行されて困っています。
よろしくお願いします。
0665デフォルトの名無しさん
2008/08/27(水) 19:58:480667デフォルトの名無しさん
2008/08/28(木) 03:05:24http://www.speedreading.co.jp/read/riron07.html
8つの円を描き、全体をぼかすように前後左右の平均を取るように処理してみたところ、何度もやるとものすごく時間がかかるので・・・。
ぼかし処理は下のものを使用しました。
http://gimite.net/bcbqtree/qtreemain.cgi?mode=thread&thread=135
0668デフォルトの名無しさん
2008/08/29(金) 22:15:29http://update.codegear.com/forms/jp_cpp_download_reg
ここに何度登録したことか。。。。
0669デフォルトの名無しさん
2008/08/29(金) 22:34:00サーバーが見つかりません
0670デフォルトの名無しさん
2008/08/31(日) 00:08:200671デフォルトの名無しさん
2008/09/06(土) 08:25:000672デフォルトの名無しさん
2008/09/06(土) 10:46:04英単語の文字数を数えるにはどうすればいいですか?
0673デフォルトの名無しさん
2008/09/06(土) 10:52:490674デフォルトの名無しさん
2008/09/06(土) 10:57:350675デフォルトの名無しさん
2008/09/06(土) 11:04:330676デフォルトの名無しさん
2008/09/06(土) 11:15:14ありがとうございました。ここではC++という文字をよくみるのに本屋ではC#をよくみたので一緒かなと思いました
ありがとうございました
0677デフォルトの名無しさん
2008/09/06(土) 17:27:47++
++
だったんだよ!
0678デフォルトの名無しさん
2008/09/07(日) 01:24:48C++が一つ増えるなら、
C#は半分だけ増えるっていうイメージなんだけど。
それだと、2つも増えてるな。
0679デフォルトの名無しさん
2008/09/07(日) 02:35:29その発想は無かったわ
0680デフォルトの名無しさん
2008/09/07(日) 17:30:34サムネイル表示したいと思っています。
ttp://www2.ttcn.ne.jp/tkky/Tips/DrawGrid/drawgrid1.htm
を参考にDrawGridを使って実現しようかと思っていたのですが、
DrawGridコンポーネント1個に対して, 1つの画像しか表示できないんでしょうか?
0681デフォルトの名無しさん
2008/09/07(日) 23:31:120682デフォルトの名無しさん
2008/09/08(月) 21:57:33アメリカ人は本当にマッチョが好きだよな。サンフランシスコ。
0683デフォルトの名無しさん
2008/09/09(火) 04:41:14そうします。ありがとうございます
0684680
2008/09/09(火) 07:34:14ListViewでサムネイル表示を試してみようと、
下の(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」押す
0685デフォルトの名無しさん
2008/09/22(月) 10:04:17TMenuItemのCaptionにて
開く(&O)...
と設定されますけど、
このピリオド3個の意味を教えてください。
0686デフォルトの名無しさん
2008/09/22(月) 12:43:510687デフォルトの名無しさん
2008/09/22(月) 20:03:06ピリオドがないのは、処理がすぐ終わるけど
ピリオドがあるのは、ダイアログが出るでしょ。
それだよ。
0688デフォルトの名無しさん
2008/09/22(月) 23:25:23れすありがとうございます。
確かに...なのは、ダイアログが開く系ですね。
(& みたいな特別な機能がある訳ではなく
WindowsのUIの作法みたいなものなのですね。
とても参考になりすた。
0689デフォルトの名無しさん
2008/09/28(日) 23:08:48TFontのStyleがSet という特別な型だったのですが
設定は、Font->Style << fsBold のようにすれば良いのはヘルプに記載があったのですが
FontにfsBoldが設定されているかを調べる方法がわかりません。
どうすればいいのでしょうか。
0690デフォルトの名無しさん
2008/09/28(日) 23:34:450691デフォルトの名無しさん
2008/09/28(日) 23:45:56できましたーーー。超ありがとうございます。
0692デフォルトの名無しさん
2008/09/29(月) 23:49:18具体的には mplayerの再生ボタンや巻き戻しボタンを押したり、mediaplayerの再生ボタンを押したり
その他新しいプログラムの再生ボタンを簡単に登録して押せるようなそんなプログラムを
くみたいのですが。
0693デフォルトの名無しさん
2008/09/30(火) 00:17:51メニューバーから操作できる機能なら、コマンドIDをメニューリソース見るか、SPY++やWinspectorでコマンドID調べてWM_COMMANDでPostすればいい。
どっちもだめならSendInputでがんばるしかない。
0694デフォルトの名無しさん
2008/09/30(火) 00:18:33ハンドルが取れれば、APIでごにょごにょできるでしょ。
あとはがんばれ。
0695デフォルトの名無しさん
2008/09/30(火) 10:50:39ありがとうございます。
0696デフォルトの名無しさん
2008/09/30(火) 20:54:22リストボックスにD&Dでリストボックスにファイルパスを表示する
プログラムをどうすれば言いか教えていただけないでしょうか?
0697デフォルトの名無しさん
2008/09/30(火) 22:04:17マルチポストはルール違反だぜよ。
0698デフォルトの名無しさん
2008/09/30(火) 22:44:16"C++Builder" ファイル ドラッグアンドドロップ
でぐぐれ
0699デフォルトの名無しさん
2008/10/02(木) 00:15:220700デフォルトの名無しさん
2008/10/02(木) 00:19:19質問なんですが、フォームを使ってアプリを作っており、
デバッグで配列の中身や変数を見たく、printfなんかでコンソールに表示させたいのですが
何か方法はありますか?
インスペクタ?みたいなのはどうも使いにくくて・・・
ちなみに、C++Builder6を使ってます
0701デフォルトの名無しさん
2008/10/02(木) 00:32:28ttp://msdn.microsoft.com/ja-jp/library/cc428973.aspx
でもIDEのデバッガ機能をちゃんと勉強して使ったほうが楽だと思うけどね。
0702デフォルトの名無しさん
2008/10/02(木) 01:08:53AllocConsole()でコンソールが開きます。コンソールのハンドルを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が入ってない環境とかで使えるよ。
0703デフォルトの名無しさん
2008/10/02(木) 02:04:16普通にそのままのprintfが使えるようになるんじゃないかね。
知らないけど。
0704デフォルトの名無しさん
2008/10/02(木) 02:44:280705デフォルトの名無しさん
2008/10/02(木) 10:34:03メインフォームの初期化ルーチン(FormCreateとか)から他のフォームの初期化ルーチンを呼び出したいが、
それがまだ生成されていないのでエラーになるというケースが多くて困っています。
全てのフォームが生成された後で一括して初期化を行いたいという時にはどうすればよいのでしょうか?
どなたか教えて下さい。
0706デフォルトの名無しさん
2008/10/02(木) 12:02:220707デフォルトの名無しさん
2008/10/02(木) 12:46:22解決したかも知れないけど、
TMemo 貼って Add で俺はやってる。
0708デフォルトの名無しさん
2008/10/02(木) 17:46:19#ifdefで二種類作るので、間違えないようにしたいのですが・・・
0709700
2008/10/02(木) 18:59:26しかしこのスレ非常にやさしいw
ありがとうございました〜、色々とやってみて合うもの見つけてみます
0710デフォルトの名無しさん
2008/10/02(木) 19:43:14#pragma optionでできないものリストに「-efilename」が書かれてるから無理
objファイルならできるけど。
0711デフォルトの名無しさん
2008/10/02(木) 19:56:58無理なんですか、了解です。
ありがとうございました。
0712デフォルトの名無しさん
2008/10/02(木) 20:00:24makefileで分けるといい
0714デフォルトの名無しさん
2008/10/17(金) 00:02:21他の言語のを真似して
WebBrowser1->Document->All->GetElementsByName("hoge")[0]->selectedindex = 0;
※hogeは表示するページのソースをみて名前を調べました
などとしたのですが、「AllはIdispatchのメンバーではない」とエラーが出ます・・・
どんな書き方をすればよいのでしょうか
0715デフォルトの名無しさん
2008/10/17(金) 04:28:58昔触ったのを見たら
IHTMLDocument2Ptr doc;
doc = browser->Document;
IHTMLElementPtr body = doc->body;
とかやってた。
IHTMLDocument2Ptrとして使うには、MSHTMLかなんかをimportだかする必要があったと思うけど。
0716デフォルトの名無しさん
2008/10/19(日) 04:31:460717デフォルトの名無しさん
2008/10/20(月) 04:18:550718デフォルトの名無しさん
2008/10/20(月) 16:48:530719デフォルトの名無しさん
2008/10/23(木) 15:03:10if(c_str()=="")やif(c_str()==NULL)と書いても素通りしますよね。
Lengthが0かどうかでチェックをしているので問題は無いのですが、気になったのでよろしくお願いします。
0720デフォルトの名無しさん
2008/10/23(木) 16:20:530721デフォルトの名無しさん
2008/10/23(木) 17:14:13c_str使うんならstrcmpとか使おうぜ。
AnsiStringとchar型文字列の比較なら普通に==で良いとも思うけどな。
0722デフォルトの名無しさん
2008/10/23(木) 17:56:44専用の関数があったんですね、ありがとうございます。
>>721
素通りというのは""やNULLで比較しても、何か文字が入っているような動きをしていたものですから。
まだAnsiStringを理解してないかもです。
strcmpも使ってみたのですが、動きは同じだったので・・・。
ところで、フォルダ名をチェックするのに最後に\がついているかを見て、無かったら\を付けたいのですが、
これってどうやればいいんでしょう?
AnsiLastCharで拾おうとしてのですが、うまくいかないので、よろしくお願いします。
0723デフォルトの名無しさん
2008/10/23(木) 18:11:140724デフォルトの名無しさん
2008/10/23(木) 19:05:07処理してくれる関数があったんですね。
ありがとうございます。
0725デフォルトの名無しさん
2008/10/23(木) 20:18:520726デフォルトの名無しさん
2008/10/25(土) 15:47:30上のImageに半透明や透明色を塗ることってできるのでしょうか?
半透明で調べてもフォームやボタンはあるのですが・・・。
すいませんが、どなたか方法を教えて頂けないでしょうか。
0727デフォルトの名無しさん
2008/10/25(土) 16:24:390728デフォルトの名無しさん
2008/10/25(土) 19:16:29それを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;
今こんな感じで書いてるのですが全然わかりません・・
どなたかよろしければアドバイスお願いします。
0729デフォルトの名無しさん
2008/10/26(日) 13:10:230730デフォルトの名無しさん
2008/10/26(日) 13:45:41あ、コンマ区切りで数列を出せばExcelでは枠別に表示されるんですね
ありがとうございます!
よろしければどなたかコンマ区切りでEdit1から3までの数字を一つのMemo1に出す
方法を教えていただけないでしょうか
0731デフォルトの名無しさん
2008/10/26(日) 14:20:40{
Memo1->Lines->Add(AnsiString().sprintf("%s,%s,%s", Edit1->Text, Edit2->Text, Edit3->Text));
}
0732デフォルトの名無しさん
2008/10/26(日) 15:03:38現在はHmCommを使用しているのですが、USB-232C変換器が物によって正常に通信できたりタイミングがずれたりするので、
別の物を試してみたいのですが・・・良い物がありましたら紹介してください。
よろしくお願いします。
0733デフォルトの名無しさん
2008/10/26(日) 18:23:25char *mTop=(char*)(ms->Memory);
char *mEnd=pTop+(ms->Size);
と記述すると
W8072 問題のあるポインタ演算
という警告が出ます。
警告の出ない正しい記述方法を教えてください。
0734デフォルトの名無しさん
2008/10/26(日) 22:51:080735デフォルトの名無しさん
2008/10/26(日) 23:19:32ttp://www.geocities.jp/in_subaru/erslib/index-erslib16.html
これ使ってごらん。
コンポーネントじゃないけど、ヘッダファイルだけで動作する。
初期化に2行、出し入れに数行、後始末に1行ぐらい書けばいいので
PICとやり取りするのに簡単だから使ってる。
でも、USBのシリアル変換機はもともと不安定だからなぁ・・・。
0736デフォルトの名無しさん
2008/10/27(月) 00:15:44解決しました。ありがとうございます。
0737732
2008/10/27(月) 00:45:44ありがとうございます。
シンプルで良さそうですね。
ちょっと使ってみます。
ノートPCが前提なので、USBのシリアル変換機を使用して安定してないといけないんです・・・。
0738デフォルトの名無しさん
2008/10/27(月) 15:18:20A1, 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・・・)の部分だけ読み込みたいのですが
どういう風にやればいいですか。よろしくお願いします。
0739デフォルトの名無しさん
2008/10/27(月) 15:37:37写真ともう一枚の32bppなTBitmap用意、アルファブレンドしてTImageに転送するしかないと思う。
アルファチャンネル扱えるTBitmap継承クラスも何種類か公開されてるから難しい物じゃない。
写真じゃないほうにペイントするとかだったら、TImageのイベントで取ったストロークの情報でペイント描画用のTBitmapに描けばいいだけだし。
>>738
ただのCSVファイルじゃん(・ε・)
0740738
2008/10/27(月) 15:48:540741デフォルトの名無しさん
2008/10/27(月) 16:06:44要するに 00:00 を取り除くって事?
0742738
2008/10/27(月) 16:10:52j(1.2.3・・・)の部分だけをmemoに表示させたいのです。
0743デフォルトの名無しさん
2008/10/27(月) 16:13:330744デフォルトの名無しさん
2008/10/27(月) 16:14:480745デフォルトの名無しさん
2008/10/27(月) 16:19:370746デフォルトの名無しさん
2008/10/27(月) 16:24:140747738
2008/10/27(月) 16:33:42Memo1
j
j1
j2
j3
・
・
な感じで。
0748デフォルトの名無しさん
2008/10/27(月) 16:40:05そんなん単に先頭からカンマを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以前は無理かもしれない。あしからず。
0749デフォルトの名無しさん
2008/10/27(月) 16:49:38void __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()));
}
}
}
0750デフォルトの名無しさん
2008/10/27(月) 16:58:540751デフォルトの名無しさん
2008/10/27(月) 17:36:220752デフォルトの名無しさん
2008/10/28(火) 14:44:59Positionの値を変えるのでは無く、マウスで操作した時の動きをさせたいのですが・・・。
0753デフォルトの名無しさん
2008/10/28(火) 15:28:270754デフォルトの名無しさん
2008/10/28(火) 15:58:04イベントはさすがに呼べねえだろ。
0755デフォルトの名無しさん
2008/10/28(火) 16:56:440756デフォルトの名無しさん
2008/10/28(火) 17:21:13Are you a big baka ?
スクロールした結果、OnChange()が発生するのであって
OnChange()を自前で呼んでも無意味じゃん。
0757デフォルトの名無しさん
2008/10/28(火) 17:25:37しかして>>755は
OnChange()を呼べばスクロールが発生するとでも思っているのかぁ
プププ
0758755
2008/10/28(火) 19:00:09プログラム上からイベントを発生させる方法ってあります?
0759デフォルトの名無しさん
2008/10/28(火) 19:06:500760デフォルトの名無しさん
2008/10/28(火) 23:13:14嘘はいかんな
0761752
2008/10/29(水) 02:51:14どうやってやればいいんでしょう・・・?
0762デフォルトの名無しさん
2008/11/01(土) 01:22:01BitBtnは画像を配置すると文字が消えてしまうので、他に何か方法は無いでしょうか?
よろしくお願いします。
0763デフォルトの名無しさん
2008/11/01(土) 15:51:47起動時bitbtnにするDIBにフォントを使って字を書いてしまえばいいじゃないかw
元の画像は普通のボタンから抜くなりなんなりすればいいジャマイカ
そしてそれをフリーで後悔すれば….
と思う前に誰かすでに作ってないかとかおもってググ…
0764デフォルトの名無しさん
2008/11/01(土) 15:52:23その中の計算を行いそれを50個またテキストデータとして保存したいのですが
テキストデータを同時に読む込むプログラムとそしてそれを同時に書き出す方法が
どうしてもわかりません。よければアドバイスお願いします。
0765デフォルトの名無しさん
2008/11/01(土) 17:32:460766デフォルトの名無しさん
2008/11/01(土) 18:48:32すみません、説明不足だったようです。
同時にではなくたとえばA001〜020で読み込む場合にfor文などで回して
自動ですべてを順に読み込み書き出すようにしたいのです
0767デフォルトの名無しさん
2008/11/01(土) 20:10:09for文で回して順に読み込み書き出しすればいいと思うよ
と思ったが「同じフォルダにあるテキストデータ」ってファイルのこと?
ならファイルを順繰りに読んで希望のファイルだけ読み込み書き出しすれば良いんじゃないかね
0768デフォルトの名無しさん
2008/11/01(土) 20:51:350769デフォルトの名無しさん
2008/11/01(土) 23:37:20そのへんが全然わからんから
エスパーじゃないから
答えようがねえなぁ
文章から類推すると、何もかもまったくわからんようにしか見えんが。
0770デフォルトの名無しさん
2008/11/02(日) 13:55:50private: 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文が終了したあとに処理されてしまいます。
なぜでしょうか?
0771デフォルトの名無しさん
2008/11/02(日) 14:03:05あともう一つ教えてください。
出力ウィンドウに、テスト的に変数の値などを表示させたいのですが、
Console::WriteLine("aaa");
などとしてもまったく表示されません。何か方法はありますでしょうか?
よろしくお願いします。
0772デフォルトの名無しさん
2008/11/02(日) 14:27:08ここは、
くだすれC++Builder(超初心者用)その3
0773デフォルトの名無しさん
2008/11/02(日) 14:57:22すみません。間違えました><
0774デフォルトの名無しさん
2008/11/03(月) 18:05:44バイナリ形式のファイル読み込んで、その内容を同じファイル名でテキスト形式に置き換えて保存したいのですが
それを手動保存するのではなく自動で同じファイルネームでそのフォルダ内に生成されるプログラムを作りたいのですがどのようにすればよいのでしょうか
0775デフォルトの名無しさん
2008/11/03(月) 18:49:03スレ違い
C/C++の宿題を片付けます 117代目
http://pc11.2ch.net/test/read.cgi/tech/1225320579/
こっちだな
0776デフォルトの名無しさん
2008/11/03(月) 18:55:33すいません、これをSaveDialogやOpenDialogなどを用いてc++builderで
実行しなくてはいけないのですが読み込んだファイルを同じ名前のテキスト形式で自動生成する保存の方法を教えていただけないでしょうか
0777デフォルトの名無しさん
2008/11/03(月) 19:46:17君の質問に回答できる奴はエスパー
0778デフォルトの名無しさん
2008/11/03(月) 20:06:21バイナリの中身が構造体だったり、浮動小数点と整数が
交互に書かれていたりする時どうやって判別するのですか?
コンピュータから見るとどちらもただの0と1の羅列ですよ?
0779デフォルトの名無しさん
2008/11/04(火) 04:10:550780デフォルトの名無しさん
2008/11/04(火) 12:41:530781デフォルトの名無しさん
2008/11/04(火) 13:44:41OpenDialogを使用して、指定したフォルダからファイルを読み込みたいのですが、
最初の動作では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にフォルダ名が入っています。
0782デフォルトの名無しさん
2008/11/04(火) 14:14:42DirectoryExists(OpenDialog1->InitialDir)
してみい
falseが返ってくるからさ
0783デフォルトの名無しさん
2008/11/04(火) 14:41:37FileNameにフルパスでいれときゃいい
0784デフォルトの名無しさん
2008/11/04(火) 15:16:55はい、falseでした。
一度動くようになると、PCを再起動してもtrueですね・・・。
なぜでしょう?
>>783
汚い書き方ですが、
OpenDialog1->FileName = OpenDialog1->InitialDir;
をExecute()の前に置いたら動作しました。
Execute()で最初に開くフォルダはFileNameのフォルダで、InitialDirでは無いってことでよろしいでしょうか?
0785デフォルトの名無しさん
2008/11/04(火) 17:13:51こっちも忙しいんだから早くして下さいね。
0786デフォルトの名無しさん
2008/11/04(火) 23:57:41>一度動くようになると
パスが通ってるから。
想定される状況で通るように場合分けしたら?
フォルダを開くという概念がどうもね。
0787デフォルトの名無しさん
2008/11/07(金) 17:01:27指定時間後に自動的に閉じることって可能でしょうか?
可能であればどうすればいいのでしょうか?
0788デフォルトの名無しさん
2008/11/07(金) 17:24:430789デフォルトの名無しさん
2008/11/07(金) 17:47:09TSplashForm
0790デフォルトの名無しさん
2008/11/07(金) 23:35:090791デフォルトの名無しさん
2008/11/08(土) 00:16:07Close();
Release();
で閉じれるね
0792デフォルトの名無しさん
2008/11/08(土) 02:51:270793デフォルトの名無しさん
2008/11/08(土) 04:17:33ってか、大麻付きダイアログを作ればいいだけだけど。
0794デフォルトの名無しさん
2008/11/08(土) 04:38:460795デフォルトの名無しさん
2008/11/10(月) 09:41:380796デフォルトの名無しさん
2008/11/10(月) 16:04:46pass = 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の配列データです。
0797デフォルトの名無しさん
2008/11/10(月) 16:16:550798796
2008/11/10(月) 16:25:20AnsiStringでいいです。別のところでそれぞれの配列を使って計算したいので。。
どういう風に書けば9個格納できるでしょうか。
0799デフォルトの名無しさん
2008/11/10(月) 16:36:030800デフォルトの名無しさん
2008/11/10(月) 16:46:49char 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;
}
0801796
2008/11/10(月) 17:26:07うまくいきません。
Memo1->Lines->Add(A1)で確認してみたのですがうまく読み込めていませんでした。
読み込むファイルが数百行というのは関係あるのでしょうか。
A1 = 1回目に読み込んだ配列
A2 ・・・
という感じでやりたいのですが。。。
とりあえずがんばってやってみます。
0802デフォルトの名無しさん
2008/11/10(月) 17:35:33んじゃさ、TStringList使えばいいんでないの?
TStringList *sl = TStringList();
sl->LoadFromFile("ファイル名"");
for( int i = 0; i < sl->Count; i ++ ){
aa = sl->Strings[i];
}
こんな感じでどうよ?
0803デフォルトの名無しさん
2008/11/10(月) 17:59:23AnsiString kekka;
for(int I=0;I<20; I++){
kekka = Memo1->Lines->Strings[I];
}
という風に試したのですがMemo1に表示させてある内容と違う値が出てしまいました。
わからないのでアドバイスください。
0804デフォルトの名無しさん
2008/11/11(火) 00:44:15kekkaは一つしか無いでしょ。
Memo1->Lines->Stringis[I]は20個あるでしょ。
20回ループまわしてもkekkaは一つしか無いでしょ。
0805デフォルトの名無しさん
2008/11/11(火) 10:28:51っていうか俺のTStringListは無視か!!
それにkekkaを配列にすりゃいいって最初に言っただろう!
0806デフォルトの名無しさん
2008/11/11(火) 14:56:40それで出来るようになるのってちゃんとしたプログラムがいくつも書けるようになってからだろうに。
クラス図とかメモリマップとか妄想絵図とか、何でもいいからソースコード以外の何かで書いてみたら
自分がどこに引っかかってるのか分かるような気がする。
0807デフォルトの名無しさん
2008/11/11(火) 19:02:060808デフォルトの名無しさん
2008/11/11(火) 21:27:18妄想を紙に書いてみると
自分のアホさが
よくわかる。
0809デフォルトの名無しさん
2008/11/13(木) 10:39:08・BCB5
・複数のカラム追加したListViewを設置
・上記カラムの1つはAutoSize
このListViewにデータを流し込んだ時に後から発生した
縦スクロールバー分の幅が自動調整されないんだけど
これを自動調整するには何がベストなんでしょうか?
今は仕方なくデータを流し込んだ後にListViewの幅を
-1 >> +1として調整してます
0810デフォルトの名無しさん
2008/11/13(木) 10:58:48ListViewの幅か?カラムか?
0811デフォルトの名無しさん
2008/11/13(木) 11:53:38右端が発生したスクロールバーで隠れるのよ・・・
0812デフォルトの名無しさん
2008/11/14(金) 10:51:350813デフォルトの名無しさん
2008/11/17(月) 12:48:11・やりたいこと
クライアントアプリ(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 が参照)
と出て、うまくいきません。
足りない操作、間違った操作をやっていたら教えてください。
お願いします。
0814デフォルトの名無しさん
2008/11/17(月) 15:35:150815デフォルトの名無しさん
2008/11/17(月) 15:39:130816デフォルトの名無しさん
2008/11/17(月) 15:56:250817デフォルトの名無しさん
2008/11/17(月) 15:59:290818デフォルトの名無しさん
2008/11/17(月) 16:00:010819デフォルトの名無しさん
2008/11/17(月) 16:19:590820デフォルトの名無しさん
2008/11/17(月) 16:25:56プログラム板がID制になってもいいのか
0821デフォルトの名無しさん
2008/11/17(月) 16:28:33大賛成
0822デフォルトの名無しさん
2008/11/17(月) 16:29:030823デフォルトの名無しさん
2008/11/17(月) 16:46:110824814
2008/11/17(月) 19:14:130825デフォルトの名無しさん
2008/11/17(月) 19:24:180826デフォルトの名無しさん
2008/11/18(火) 00:41:260827デフォルトの名無しさん
2008/11/18(火) 10:17:080828デフォルトの名無しさん
2008/11/18(火) 10:32:490829デフォルトの名無しさん
2008/11/18(火) 10:47:530830811
2008/11/18(火) 16:14:59変化するイベントで自分で再設定すれば出来るのは知っているんですが
コンポーネントのサイズ変更を行えば自動でやってくれる以上
なんとかそれを直接行えないかなと思ってるんですか・・・
0831デフォルトの名無しさん
2008/11/21(金) 18:14:21読み込み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行並んでいます。
0832デフォルトの名無しさん
2008/11/21(金) 18:24:180833デフォルトの名無しさん
2008/11/21(金) 18:34:24Memo2にLoadFromfileなどでxを書き出すと
-2.06167
-2.05553
-2.04654
-2.04326
・
・
yを書き出すと
EEE
RRR
EEE
RRR
(空白の場合もあるのでそれも一行として数える)
・
・
・
などといった具合にxとyに格納したいのです。
TStringといいましたが格納の仕方がそれだけしかしらないので
AnsiStringなどでもできるのでしたらどちらかアドバイスお願いします。
0834デフォルトの名無しさん
2008/11/22(土) 19:34:06for( 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列目の情報
}
0835デフォルトの名無しさん
2008/11/23(日) 17:20:19遅くなってしまってすいません、そして説明不足でした・・・。
できればMemo1の内容を再利用したいのですが、c++builderのバージョンが5なので
Delimiterが使えないようなのです・・・
お手数ですがDelimitedText以外での表し方を教えていただけないでしょうか。
0836デフォルトの名無しさん
2008/11/23(日) 18:50:25TStringList* 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列目の情報
}
0837デフォルトの名無しさん
2008/11/23(日) 19:30:27返信ありがとうございます.
おっしゃられたように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);
}
0838デフォルトの名無しさん
2008/11/23(日) 20:05:59TStringList* Values = new TStringList;
使用後
delete Values;
0839デフォルトの名無しさん
2008/11/24(月) 19:39:22{
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だけでなく同じ行数文だけスペースも含め格納したいのですが、これは無理でしょうか?
0840デフォルトの名無しさん
2008/11/24(月) 19:53:320002, -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で格納していきたいのです。
無理難題を言ってしまいすいません。
0841デフォルトの名無しさん
2008/11/24(月) 19:55:12もしよろしければアドバイスお願いします。
0842デフォルトの名無しさん
2008/11/25(火) 00:27:26ループ中で何度も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 で出ているデータが本物のデータからのコピーなら、ピリオドとカンマが
入力ミスで混ざってて、自動で正しく分離する事は無理。
0843デフォルトの名無しさん
2008/11/28(金) 02:16:31TColorは24bit専用なのでしょうか?完全な白の時は透過になるのですが、それ以外は全く透過しません。
色によって透過度を変えたいのですが、上手くいかないのが現状です。
PixelFormatで32bitの指定はしているのですが・・・。
すいませんがよろしくお願いします。
0844デフォルトの名無しさん
2008/11/28(金) 11:26:00BDS2006を使っています。
ファイルの数が多くなってきたので
ヘッダファイルを、header1.hというファイルにまとめて
#include "Main.h"
#include "About.h"
・・・
という感じに記述して
.cppファイルの方には、
#include header1.h
と記述するようにしました。
このように変更してから、
再構築を行い、プログラムを実行し
バージョン情報を表示すると、EClassNotFound
TImageが見つかりませんというエラーがたまに出るようになりました。
About.cppをコンパイルし直すと正常に動作します。
他のクラスでも同じように、エラーが発生し再コンパイルすると正常になることがあります。
どうしてこのようなことが発生し、どうすれば回避できるのでしょうか。
ヘッダをまとめて1個のファイルにしてしまうのはダメなのでしょうか。
0845デフォルトの名無しさん
2008/11/28(金) 14:26:150846デフォルトの名無しさん
2008/11/28(金) 15:43:040847デフォルトの名無しさん
2008/11/28(金) 15:49:080848デフォルトの名無しさん
2008/11/29(土) 01:55:440849デフォルトの名無しさん
2008/11/29(土) 09:34:25TSearchRecのSize変数から取ったのですが、
ファイルサイズが大きいと戻り値がマイナスになってしまいます。
大きいファイルサイズでも正確に取得するには
どうすればいいのでしょうか。
0850デフォルトの名無しさん
2008/11/29(土) 10:20:560851デフォルトの名無しさん
2008/11/29(土) 10:22:520852デフォルトの名無しさん
2008/11/29(土) 10:33:20TSearchRec.FindData.nFileSizeLow
0853デフォルトの名無しさん
2008/11/29(土) 10:34:580854デフォルトの名無しさん
2008/11/29(土) 17:44:27これで行けるはずなんだが・・・うーんわからん
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;
}
0855デフォルトの名無しさん
2008/11/30(日) 00:35:28Win32スレで聞いているうちにバグの原因がわかったので、
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();
0856デフォルトの名無しさん
2008/11/30(日) 00:36:10Application->NormalizeTopMosts();
Application->MessageBox(str, L"AlphaBlend()でエラーが起きました", MB_OK);
Application->RestoreTopMosts();
}
delete bt;
}
0857デフォルトの名無しさん
2008/11/30(日) 00:42:59ありますが、これがまさにアルファ値そのものです。
ですからここにアルファ値をセットしてAlphaBlend()を呼び出せば、
期待通りの結果が得られます。
もちろんPixelFormatはpf32bitでなければなりません。
0858843
2008/11/30(日) 19:35:36丁寧にありがとうございます。
WideStringのところでひっかかったり、AlphaBlendが見つからなかったり(wingdi.hをインクルードするだけじゃダメなのかな?)していてまだ確認できていませんが、
いろいろ調べてやってみます。
ありがとうございました。
0859デフォルトの名無しさん
2008/11/30(日) 20:26:46BCB6だと、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使えばいいよ。
0860843
2008/11/30(日) 21:16:16はい、BCB6を使用しています。
CBuilder6\Lib\Psdkに同名のファイルがあるので、パスが通っていれば良いのかと思っていました。
インポートライブラリを作成したところ、動作しました。
ありがとうございます。
ところで実行結果ですが、これでよろしいのでしょうか?
http://www3.uploda.org/uporg1823015.jpg.html
rgbq.rgbReserved = k;の部分で透明度が変わるはず・・・ですよね?
ti->Transparent = true;
ti->Canvas->Brush->Style = bsClear;
を入れてみてもダメでした。
0861デフォルトの名無しさん
2008/11/30(日) 22:14:10それで合っています。
どうしても疑問に思われるなら、rgbq.rgbReservedにいろんなアルファ値(0〜255)
を入れてやってみて下さい。
0862デフォルトの名無しさん
2008/11/30(日) 22:16:02明らかに実行結果が変わります。
あとこういうグラデーション画面ではなくて、画像のbitmapを
使うとよくわかります。
0863デフォルトの名無しさん
2008/11/30(日) 22:21:09ti->Canvas->FillRect(Rect(0, 0, 255, 255));
こんな感じでImageコントロールを赤色で塗りつぶしてから
AlphaBlend()を掛けるとよく効果がわかります。
デフォルトでは白色ですからわかりにくいと思います。
0864843
2008/11/30(日) 22:38:05ひとつのImageで二つの画像を重ね合わせるのですね。
これを二つのImageで行うことは不可能でしょうか?
下の画像に、上のImageを透明〜半透明色で塗った物を重ねたかったので。
Formをアルファブレンドした場合、全体を均一に同じ透明度で半透明になってしまいますよね?
0865デフォルトの名無しさん
2008/11/30(日) 22:46:24AlphaBlend()に与えるパラメータBLENFUNCTIONの最後のパラメータが
0だと、3つ目のパラメータが全体に与える透過度になります。
しかし今回はピクセル毎に透過度を指定する方法を敢えて選んでいます。
そちらのやり方を欲しておられるように読めたので。
その時は3番目のパラメータを255に、4番目のパラメータをAC_SRC_ALPHA
にして、rgbReservedにピクセル毎のアルファ値を入れる事になるのは説明
した通りです。
もし上のImageを透明〜半透明色で塗った物を合成したいのならば、二回
AlphaBlend()を呼び出さなければなりません。
0866デフォルトの名無しさん
2008/11/30(日) 22:48:04ようになっているからです。MSDNをよく読んで見て下さい。
つまり上の画像を別の単色の画像か何かでアルファブレンド、次いで
その画像を下の画像とアルファブレンド、という二段階になります。
0867843
2008/12/01(月) 00:48:02ありがとうございましたー。
0868デフォルトの名無しさん
2008/12/04(木) 17:03:59アドバイスありがとうございます!そして返事が遅れて本当にすいません;
これでやってみたのですが2列目の情報はMemo2に書き出すことができたのですが
4列目の情報を書き出そうとするとなぜかエラーがでてしまい。リストのインデックスが範囲を超えていますとでてしまいます。
原因がどうしてもわからず、困っています。
何かよい書き出し方法はもしくは格納方法はないでしょうか?
当方C++builder5を使用しています。
格納方法もしくは書き出し方法はEEEやRRRがないときは元のテキストのようにスペースとして一行あけて
書き出したいのですがどなたかよろしければアドバイスお願いします。
0869843
2008/12/05(金) 19:42:25>>855に>>863を加えたのですが
rgbq.rgbReserved = k; のkを0にすると、以下のようになりますよね。
http://www2.uploda.org/uporg1833847.jpg.html
透過度を0にすれば上にかかる色は消えますが、色の濃さは残るようで赤色にグラデーションがかかってしまいます。
濃さも消すことはできないのでしょうか?
0870デフォルトの名無しさん
2008/12/05(金) 20:02:48「4つめがEEEでもRRRでもなく空の時」って「Values->Strings[ 3 ]」が生成されないってことはないよな?
ブレイクポイント貼るかステップ実行するかして、どのリストからどんな風にはみ出してるのかデバッガ使って変数の値見ておいで。
0872デフォルトの名無しさん
2008/12/20(土) 20:13:435.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の間で線形補間)といった感じです。
0873デフォルトの名無しさん
2008/12/20(土) 20:16:460 があったらその値とそこまでの距離を使って
線形補完すればよろし。
ところで端に 1 があった場合はどうすんの?
0874デフォルトの名無しさん
2008/12/20(土) 20:19:20int 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++;
}
}
0875デフォルトの名無しさん
2008/12/20(土) 20:20:31for(int X = s; X< u+1; X++){
Memo1->Lines->Strings[X] = (B - A)/(u+1) * X + A;
Memo2->Lines->Strings[X] = 0;
}
u = 0;
}
このような感じで組んでみたのですが線形補間もうまくできておらず、
エラーが起こる場合もあります、よろしければアドバイスお願いします
0876デフォルトの名無しさん
2008/12/20(土) 20:22:45返信ありがとうございます。
その場合は手動で0が端にくるようにしたいと思います。
0877デフォルトの名無しさん
2008/12/20(土) 20:23:24memo1 のデータを保存する必要がないなら、
memo1 のデータをあらかじめ補間した値ですげ替えておけば良い。
メモリに余裕があるなら、memo1 とは別にそういうテーブルを用意してもいい。
最初に一気に補間すると時間がかかるなら無理かもしれないが。
0878デフォルトの名無しさん
2008/12/20(土) 20:26:010879デフォルトの名無しさん
2008/12/20(土) 20:34:28文字列を引き算したり
A に Memo2 の値を入れたり
整数を StrToInt したり
'0' じゃなくて 0 と比較してたり
X の範囲がおかしかったり
線形補間の分母がおかしかったり
おかしいところがありすぎて困っちゃう。
あと、今はまあいいんだけど、
最終的には補間後に i を補間の終了した地点にまで移動させた方が効率がいい。
0880デフォルトの名無しさん
2008/12/20(土) 20:35:26変数名は分かりやすい意味のある名前をつけよう。
0881デフォルトの名無しさん
2008/12/20(土) 21:39:53返信、アドバイスありがとうございます><
プログラム知識も浅く見様見真似で作ったのでこんな形になってしまいました・・
おかしい言われたところも自分ではどのようにして変えていけばよいのかわからず
困り果てています。
線形補間をしてmemo1に書き換えるにはどのようにプログラムを組めばよいでしょうか・・
0882デフォルトの名無しさん
2008/12/20(土) 22:08:35とりあえず考え方として
Memoから値を文字列→数値に変換して配列とかvectorに格納する
数値に必要に応じて線形補完する
数値を文字列に変換してMemoに格納する
というように、やるべきことを自分が理解できるところまで分解してみてはいかが?
自分で理解できないものを作ることはできないんだし。
0883デフォルトの名無しさん
2008/12/21(日) 07:27:35戻す操作は一般に遅いので>>882さんみたいにvectorに入れる
など考えた方がいいよ
0884デフォルトの名無しさん
2008/12/21(日) 16:35:08今日調べていたのですが使い方もわからずじまいでした;
動作速度は遅くてもよいので具体的にこのように
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
・ ・ ・
・ ・ ・
0885デフォルトの名無しさん
2008/12/21(日) 17:30:23そりゃ答え教える事はできるけど・・・
今後もずっと聞き続けるのん? って話だしなあ。
0886デフォルトの名無しさん
2008/12/21(日) 17:32:06Vectorがわからないなら配列でいいんで、せめてそのくらいは勉強しようね。
で、丸投げならそういうスレにいってもらうとして、そうでなければ、
あなたが同じことをやるとしたらどうやってそれを実現するのか、を手順として
分解していって、それをプログラムとしてコーディングする、という手順で。
とりあえず文字列は数値計算できないものなので、これを一旦doubleにして、
計算して、終わったら文字列に戻す…てなふうに。
0887デフォルトの名無しさん
2008/12/21(日) 17:54:17スクリプト言語使った方が楽だと思うんだがね。
0888デフォルトの名無しさん
2008/12/21(日) 21:58:26とりあえずアルゴリズム云々以前ぽいけど、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 );
0889デフォルトの名無しさん
2008/12/22(月) 16:18:170890884
2008/12/22(月) 18:25:02if(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になってしまう)
どこに問題があるのかアドバイスの方よろしくお願いします。
0891デフォルトの名無しさん
2008/12/29(月) 18:17:29に計算した値が入っていて、
Memo1
A1,A2,A3,A4,A5
B1,B2,B3,B4,B5
C1,C2,C3,C4,C5
というCSV形式でMemo1出力したいのですがどういう風に書けばいいですか?
0892デフォルトの名無しさん
2008/12/29(月) 19:23:03ループが欲しけりゃ配列にして下さい。
0893デフォルトの名無しさん
2009/01/06(火) 13:15:46インストールされたフォルダを探してもサンプル用のがちょっとあるだけだし、
いちいち作るの大変だし…
0894デフォルトの名無しさん
2009/01/06(火) 23:25:37良い関連書籍は無いでしょうか?初心者向けの。。。
今日ヨドバシに行ったのですが、VC++の本ばかりで、
C++Builder関連は3冊くらい(応用編のような感じ)しかありませんでした。
0895デフォルトの名無しさん
2009/01/07(水) 09:19:240896デフォルトの名無しさん
2009/01/12(月) 21:25:18商品名(Label1)を表示したいのですが、
ACCESSのDLookupのような命令はどう書けば良いでしょうか?
0897デフォルトの名無しさん
2009/01/12(月) 22:51:53情報を小出しにするのはヤメレ
0898896
2009/01/12(月) 23:50:12阿呆な質問だったみたいですいません。
サーバーにあるMySQLの商品テーブル接続まではうまく行って、
テストで特定のEdit欄に商品名を表示することまでは出来たのです。
で次は、Editに商品コードを入力して検索ボタンを押したら、
Labelに該当する商品名を表示させたいと思ったんですが、そこが
うまくいかなくて。
TADOConnectionコンポーネントでADO接続。
TADOTableで商品テーブルと接続。
TDataSourceを配置。
IF文で、Text1のコードで商品テーブルの商品コードを検索し、
該当のコードがあればそのレコードの商品名を返せば良い。
というのはわかるんですが。
コンポーネント活用ガイド&実践プログラミング〈Vol.3〉データベーステクニック編
を読みながら書いても、2009版ではエラーが出てしまって。
全然解決しないもので、困ってました。
0899デフォルトの名無しさん
2009/01/13(火) 14:42:37答えようもない。
0900896
2009/01/13(火) 19:41:05Lookupで自己解決しました。
0901デフォルトの名無しさん
2009/01/14(水) 16:06:50これをEを含ませず、また答えとして小数点6桁程度に抑えたいのですがどのようにすればよいのでしょうか?
上記の答えは double A;で宣言したときになったものでfloat A;で宣言するとオーバーフローとエラーがでてしまいます。
0902デフォルトの名無しさん
2009/01/14(水) 17:25:58ひとまずグーグル先生に「書式 sprintf」と聞いてみたらいいと思うよ。
0903デフォルトの名無しさん
2009/01/14(水) 18:12:23返信ありがとうございます。
サイトでは何度も確認していたのですが、c++builderでは下のように書き出しており
%●●という形で小数点の値を6桁と指定して残りを切り捨てという形に仕方はどうしてもわかりません。
宣言文の箇所で小数点の桁数の指定、またEなど数字以外のものを使用させないようにすることはできないでしょうか?
基本的なことなのかもしれませんがどうしてもわかりません;
double A;
---(計算)----
Memo1->Lines->Add(A);
このような感じです
0904デフォルトの名無しさん
2009/01/14(水) 18:26:04http://www9.plala.or.jp/sgwr-t/c/sec05.html
0905デフォルトの名無しさん
2009/01/14(水) 18:27:03ひとまずグーグル先生に「書式 sprintf」と聞いてみたらいいと思うよ。
0906デフォルトの名無しさん
2009/01/14(水) 18:58:37Memo1->Lines->Add(AnsiString.sprintf("自分で考えてね", A));
って書けばいいよ。
0907デフォルトの名無しさん
2009/01/22(木) 02:14:20日本語環境(XP SP3&BCB6)で作成したものを英語版のWindowsXPで実行すると、表示がおかしくなるようなことってありますか?
Imageの中の表示がおかしいだけでなく、コンポーネントの配置や大きさもずれていたりします。
表示等に2byte文字は使っていないつもりです。
グラボとかの問題でもこのようなことは発生することってありますか?
よろしくお願いします。
0908デフォルトの名無しさん
2009/01/22(木) 17:27:03設計時のフォームのフォントのCharsetが気になるな。
フォームのコンストラクタでthis->Font = Screen->IconFont;して
表示崩れ直るか確認してみたら?(ParentFont=trueの状態で)
0909デフォルトの名無しさん
2009/01/22(木) 23:49:09返事ありがとうございます。
this->Fontでは表示は崩れませんでした。
ただ、CharsetはシフトJISになっていました。
これによって位置がずれたりするのでしょうか?
0910デフォルトの名無しさん
2009/01/23(金) 16:21:09charsetが影響するよ。実行時環境のcharsetが特定できないなら、
好みのフォント設定後、this->Font->Charset = Screen->Font->Charset
でいいんじゃないかな。
英語XPでも、言語オプションの非ユニコードアプリを何語と解釈するかを「日本語」に
セットすることで日本語XPと同じ表示にできるよ(フォントがインストールされていれば)
0911デフォルトの名無しさん
2009/01/26(月) 16:04:21「共有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ファイルを置かないとだめなようですが。
0912デフォルトの名無しさん
2009/01/26(月) 16:37:230913デフォルトの名無しさん
2009/01/26(月) 17:07:32レスありがとうございます。
ttp://www.gesource.jp/programming/bcb/22.html
こういうページもあったのでやってみましたが、dllが同じフォルダにないと
起動したときにエラーでちゃいます。
できるのはbuilderのライブラリだけですか。
いろいろ検索してるとgccのページが出てくるんですが、
静的リンクでコンパイルするとサイズが大きくなると書いてあったので
てっきり実行ファイルの中にライブラリが埋め込まれる感じで
ライブラリが要らなくなるものだと思いました。
静的ライブラリも動的ライブラリもいっしょに配らないとだめで、
ロードされるタイミングだけなんですね。
0914デフォルトの名無しさん
2009/01/26(月) 17:43:42DLLも全部一緒くたに中に書いてしまえ
0915デフォルトの名無しさん
2009/01/26(月) 17:45:340916デフォルトの名無しさん
2009/01/26(月) 17:46:35それがあるならプロジェクトにobjやlib放り込めばDLLいらないんだが。
0917911
2009/01/26(月) 18:32:24レスありがとうございます。
>インポートライブラリじゃなくてスタティックリンクライブラリのほう
なるほど、検索すると出てきました。拡張子が同じでも本物と
ちょっと違うのがあって、implibで作ったのはインポートライブラリ。
スタティックリンクライブラリを作ってやってみます。
0918デフォルトの名無しさん
2009/02/12(木) 19:59:450919デフォルトの名無しさん
2009/02/12(木) 22:31:420920デフォルトの名無しさん
2009/02/19(木) 11:52:00自宅用に買ったc++builderを会社のマシンに(もちろん使うのは自分のみ)
インストールして使うのは有りなんでしょうか?
0921デフォルトの名無しさん
2009/02/19(木) 12:06:50ありでしょ。
不安なら問い合わせてみれば?
0922デフォルトの名無しさん
2009/02/19(木) 20:42:320923デフォルトの名無しさん
2009/02/21(土) 14:02:20WEB上にあるSendMessageとかダメです。clRedじゃなくてRGB(255,0,0)とかも。
何が原因でしょう?エスパーの方おねがいしもす。
0924デフォルトの名無しさん
2009/02/24(火) 23:34:480925デフォルトの名無しさん
2009/02/28(土) 06:25:18#ifdef _DEBUG
Hoge(s);
Hoke(s);
#endif
これをマクロにしようと
#define HOGA(s) \
#ifdef _DEBUG \
Hoge(s); \
Hoke(s); \
#endif
としたらエラーになります。
どのように記述すればよいでしょうか。
0926デフォルトの名無しさん
2009/02/28(土) 08:34:18#define HOGA(s) \
Hoge(s); \
Hoke(s);
#else
#define HOGA(s) ((void)0)
#endif
0927デフォルトの名無しさん
2009/02/28(土) 08:35:40#ifdef _DEBUG
#define HOGA(s) \
do { \
Hoge(s); \
Hoke(s); \
} while(0)
#else
#define HOGA(s) ((void)0)
#endif
0928デフォルトの名無しさん
2009/02/28(土) 11:39:12スペシャルサンクスです。
うまくいきました。
0929デフォルトの名無しさん
2009/03/03(火) 22:36:380930デフォルトの名無しさん
2009/03/04(水) 00:17:56SetWindowRgn
でググレ。
0931デフォルトの名無しさん
2009/03/04(水) 20:47:14フリーでいいのがないんで...
0932デフォルトの名無しさん
2009/03/04(水) 20:59:170933デフォルトの名無しさん
2009/03/04(水) 22:01:35http://www.vector.co.jp/soft/win95/writing/se378767.html
0934デフォルトの名無しさん
2009/03/04(水) 22:26:010935デフォルトの名無しさん
2009/03/04(水) 22:26:040936デフォルトの名無しさん
2009/03/05(木) 10:17:03DirectXについては全くの初心者です。
0937デフォルトの名無しさん
2009/03/05(木) 10:40:530938デフォルトの名無しさん
2009/03/05(木) 10:51:310939デフォルトの名無しさん
2009/03/05(木) 11:19:482007にもあるからあるとおもう
つーか5からあったし
>>938
俺的には6の方が使い勝手はいいんだが・・・
1,3,5,2007と持ってるが今はメインで5を使ってる(5も6もUIは一緒)
2007からは激しく使いづらいオブジェクトインスペクタが鬼のようにバグるし
0940デフォルトの名無しさん
2009/03/05(木) 11:57:00滅茶苦茶難しい質問だね。
BCB6使ってる自分から言うと、BCB6は高速コンパイルとメモリマネージャを自分でインスコしないと難がある場合も。
その辺、バージョンうpするとはじめっから製品にバンドルされてる。
0941デフォルトの名無しさん
2009/03/05(木) 12:41:25レスありがとう。
今はBCB5のLearning版なんだ。
一時期VC++を買うことも考えたんだけどまったくわけが分からない。
2009は買わずに一度BCB6に落ち着かせてからまた考えればいいのだろうか。
でも価格差が3万ぐらいだったから、それなら最新の方がと思ったんだけど。
>2007からは激しく使いづらいオブジェクトインスペクタが鬼のようにバグるし
使いづらいのは困るんだよなぁ。VC++が無理だと分かったのでBCB続投しようと思ったんだし。
>高速コンパイルとメモリマネージャを自分でインスコしないと難がある場合も。
インスコしない場合どんな弊害があるんだ?
高速コンパイルが出来ないというのはわかるんだが、メモリマネージャを入れない弊害がいまいち分からない。
0942940
2009/03/05(木) 13:03:4520分かかってたコンパイルが2分くらいに。もう元には戻れない。
>メモリマネージャを入れない弊害がいまいち分からない。
ヒープを増やそうがスタック増やそうが、メモリ不足になった例が2件。
・画像ロード&解析を、2000件くらい繰り返すとメモリ不足エラー
・100メガぐらいのメモリストリームをIndy(ver6にはバンドルされてるおw)をHTTP経由でやりとりしてたら、数回でメモリ不足エラー
両方ともメモリマネージャの差し替えだけで対処完了。
0943デフォルトの名無しさん
2009/03/05(木) 13:38:38ありがとう
> 20分かかってたコンパイルが2分くらいに。
これは・・・はずせないなぁ。
数分の違いならいいやと思っていたんだけど。
いま「CodeGearRADStudio2009 CODEGEAR Delphi C++Biulder2009」という体験版をインストール中。
何種類かあったのであっているのか分からないけど。
>>939のいうように激しく使い勝手が悪いようならBilder6でいこうかなと思う。
0944デフォルトの名無しさん
2009/03/05(木) 13:56:19まあUIが変わったのは慣れでなんとかなるかもだが
基本キーボードで操作してるんでフォームとオブジェクトインスペクタの
キーボードでの操作がかなりやりづらくなった
AnsiStringのsprintfが使えなくなったりとか、まあFormatでいいんだけどさ遅いけど
あとコントロールをロックしてるのに違うフォームにするとコントロールが移動できちゃうとか
とにかくバグが大杉だしヘルプの見づらさは異常
0945デフォルトの名無しさん
2009/03/05(木) 15:06:54どもども。
「CodeGearRADStudio2009 CODEGEAR Delphi C++Biulder2009」のインスコ終わった。
VC丸ぱくり感がなんとも。。。
でもVCほどに手に負えないこともない気がする。
AnsiStringのsprintf()なんだけど↑にはあったよ。復活したのかな?
ただ、stdioのsprintfが
>コントロールをロックしてるのに違うフォームにするとコントロールが移動できちゃう
フォームデザイナのことだよね。自分はロック使わないから大丈夫そうかな。
正直、メモリマネージャの差し替えが自分に出来るか分からないし、環境弄っていけば以前の使いやすさには近づく気がする。
>ヘルプの見づらさは異常
でもこれは重要だ。まぁ本家以上のヘルプに頼るしかないかな。つ(グーグル先生)
0946デフォルトの名無しさん
2009/03/05(木) 15:11:54これは消し忘れた。
AnsiPosの仕様って変わっているのかな?
以前と返ってくる数値が変わってしまった。
文字コードの問題なのか?
0947デフォルトの名無しさん
2009/03/05(木) 15:16:40内部的にはUnicodeだぞ
逆アセンブルしてみるとよくわかる
0948デフォルトの名無しさん
2009/03/05(木) 15:20:16(;´Д`)えAnsiStringのsprintf()あるんだ・・・
ちなみにAnsiStringのとこでF1押してヘルプをだしても
ぐだぐだな説明文だけで肝心のメソッドが出てこないんだが
これどやったら出てくるんかなあ。2007ね
0949デフォルトの名無しさん
2009/03/05(木) 15:32:15以前は違ったのか?
たとえば
src="データフォルダ=C:\Program Files\CodeGear\data";
Delimiter="=";
bool __fastcall SplitSubString(AnsiString src,AnsiString Delimiter, AnsiString &dest1,AnsiString &dest2)
{
dest1="";
dest2="";
if(src.IsEmpty()) return false;
int pos = src.AnsiPos(Delimiter);
if(pos==0)
{
dest1 = src;
return false;
}
dest1 = src.SubString(1,pos-1);
dest2 = src.Delete(1,pos+Delimiter.Length()-1);
return true;
}
とすると
dest1="データ";
dest2="ォルダ=C:\Program Files\CodeGear\data";
になってしまう。
src.pos() ならうまくいくが、前の仕様だと「AnsiPos は Pos とは異なり,2 バイト文字をサポートします。」ってあるからpos()じゃまずいカナとも思うんだけど。
0950デフォルトの名無しさん
2009/03/05(木) 15:37:26それどころか、F1を押しても、メニューのヘルプでさえ
「ヘルプ名前空間が定義されていません」と言われる始末。
トライアル版だからか?フルインストールしたんだけどなぁ。
ただ、AnsiString(). とドットまで打つ(またはCTRL+スペースで)と関数の定義が出てくるでしょ。
あれには表示されるし、ビルドも成功する。
0951デフォルトの名無しさん
2009/03/05(木) 15:39:50ヘルプではAnsiStringT
0952デフォルトの名無しさん
2009/03/05(木) 15:52:35それウザイからOFFにしてるんだわ
>>951
2007でそれでヘルプ出すとみつけられないって言われた><
0953デフォルトの名無しさん
2009/03/05(木) 16:29:19ああ2007か
AnsiStringTは2009用だお
0954デフォルトの名無しさん
2009/03/05(木) 16:34:06そうなんだ。
ところで2009使っててバグ目立ったりする?
0955デフォルトの名無しさん
2009/03/05(木) 16:45:40'='は1バイトだからうまく動作しないんでは
0956デフォルトの名無しさん
2009/03/05(木) 16:46:26Update2でほとんど目だったバグは消えた
あとUpdate3は現在ベータテスト中
0957949
2009/03/05(木) 17:30:50AnsiPosを調べた。
AnsiString S="ああああ=いいいい";
int pos = S.AnsiPos("=");
BCB5の場合、pos=9;
2009の場合、pos=5;
仕様が変わってやがる。
いつからだろう。
0958デフォルトの名無しさん
2009/03/05(木) 17:37:21つーかなんでボーランドは糞MSの真似すんだろか
0959949
2009/03/05(木) 17:43:44>>958
いや、だってUIがすでに
VC++の体験版を使ってたんだけどなじめなくてさ、ここに来てBuilder2009体験版入れたらあっVCだって思ったよ
特にフォームデザイナが完全にVCだし。
以前のように作るウインドウをそのままデザインする感じのほうが良かったよ。
0960デフォルトの名無しさん
2009/03/05(木) 17:48:140961デフォルトの名無しさん
2009/03/05(木) 17:50:08つーかただのPosはどうよ?
0962デフォルトの名無しさん
2009/03/05(木) 17:54:14うまく動作した
0963デフォルトの名無しさん
2009/03/05(木) 17:55:57俺はPosばっか使ってたわ
0964949
2009/03/05(木) 18:00:58UnicodeString用のものらしいね。
AnsiStringでは使えない。
>>961
なんかダメっぽいな
>>949で
AnsiString S="ああ度あxいいいい";
int pos = S.AnsiPos("x");
結果は pos=6 だ。
"度"の文字コードは 93 78
"x"の文字コードは 78
本来は pos=9 なんだけどな
0965949
2009/03/05(木) 18:08:42UnicodeString S="ああ度あxいいいい";
int pos = S.AnsiPos("x");
結果、pos=5
これも文字数を返しているんだけど
>>949の
UnicodeString().SubString や UnicodeString().Delete がバイト数ではなく文字数のようでうまくいくみたい。
0966949
2009/03/05(木) 18:21:00AnsiString S="ああ度あxいいいい";
int pos = S.Pos("x");
AnsiPos じゃなくて Pos ね。
UnicodeString調べてみたらDelphi2009で標準に変わるとか書いてあった。
AnsiString を UnicodeString に置き換えればいいのかな?
0967デフォルトの名無しさん
2009/03/05(木) 18:21:370968デフォルトの名無しさん
2009/03/05(木) 18:22:490969デフォルトの名無しさん
2009/03/05(木) 20:31:10BCB6でやってみたらBCB5と同じ動作だった
俺は2007は持ってないので2007はわからないが、
2009は間違いなく動作が異なっている
0970デフォルトの名無しさん
2009/03/05(木) 20:32:572009からだよ
デバッグの逆アセンブルで見てみると多バイトコードの部分は
UnicodeStringで一度処理してからAnsiStringで処理すると
いう面倒な仕掛けになっている。
恐らく出来るだけ従来のBCBと互換性を持たせるためだと
思うが、馬鹿みたいなコードではある。
0971949
2009/03/05(木) 20:54:00AnsiString を UnicodeString に変えればいいのかと思ったんだけど。
0972デフォルトの名無しさん
2009/03/05(木) 21:10:59問題はAnsiStringを使う時にのみ起きるわけで。問題というほどの事でも
ないけど
0973949
2009/03/05(木) 21:19:10最初っからUnicodeString使っていればいいよって感じかな?
0974デフォルトの名無しさん
2009/03/05(木) 21:21:13そうそう、そういう事です
0975949
2009/03/05(木) 23:56:19店頭販売とかはしてないよなぁ
0976デフォルトの名無しさん
2009/03/06(金) 06:59:530977949
2009/03/06(金) 21:31:30ありがとう
ぐぐったけど通販だけかな?まぁ店頭販売しているところはなさそうだったけど。
ついでにぐぐったらEC-CURRENT ってところが89,437円だった。
1万円近い差は大きいかなと思うんだがそこんところどうなんだろうなぁ
まぁスレチな内容はよしとして
2009体験版ヘルプ無いから分からない。
webBrowserでドキュメントの内容を書き換える方法が分からなかったり。
COMインターフェイスとかさっぱりだよ・・・
0978デフォルトの名無しさん
2009/03/07(土) 10:46:47自動的にiniファイルに書き出してくれるようなすばらしい機能とかはあったりはしないですか?
0979デフォルトの名無しさん
2009/03/07(土) 12:46:010980デフォルトの名無しさん
2009/03/07(土) 18:59:180981デフォルトの名無しさん
2009/03/11(水) 15:58:57>>980
Turbo C++ Explorer でよければ。
俺は Delphi も BCB も 6 で止まってるんで、
どこにあるかは知らん。
レス数が950を超えています。1000を超えると書き込みができなくなります。