くだすれC++Builder(超初心者用)その5

■ このスレッドは過去ログ倉庫に格納されています
2012/04/21(土) 13:26:14.76
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

■C++Builder XE2 - エンバカデロ・テクノロジーズ
http://www.embarcadero.com/jp/products/cbuilder


<過去スレ>
くだすれC++Builder(超初心者用)その4
http://toro.2ch.net/test/read.cgi/tech/1256256376/
くだすれC++Builder(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1171219191/
くだすれC++Builder(超初心者用)その2
http://pc10.2ch.net/test/read.cgi/tech/1144308804/
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/

<兄弟スレ>
くだすれDelphi(超初心者用)その54
http://toro.2ch.net/test/read.cgi/tech/1325028195/
2012/06/06(水) 17:33:54.85
>>116
ProgressBar->Min = 0;
ProgressBar->Max= 100;
ProgressBar->Step = 1;
ProgressBar->Position = 0;
for( int i = 0; i < 100; i ++ ){
 ProgressBar->StepBy( 1 );
 Application->ProcessMessages( );
}
ProgressBar->Position = 0;
Application->ProcessMessages( );

最後に Application->ProcessMessages( );
重い処理をした後あとだと処理が終わってもCGIが再描画されないときもあった気がする。
2012/06/06(水) 17:45:07.42
また2010のバグかよ(-_-;)

XE2でやるとうまく行くが
次のようなコードはどう?

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ProgressBar1->Min = 0;
ProgressBar1->Max= 100;
ProgressBar1->Step = 1;
ProgressBar1->Position = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ProgressBar1->StepBy(1);
}
//---------------------------------------------------------------------------
119デフォルトの名無しさん
垢版 |
2012/06/06(水) 17:51:58.01
>>117
それやってみましたがダメでした
>>118
すんません、コードの性質上タイマーでアレするのはちょっとやりにくいのです。

ProgressBarが内部で遅延描画をしてるのは疑いないのですが
それをプロパティ等で設定できないものかとおもいまして
ちなみにSmooth = falseにしても、バーが滑らかなアレのままで断片表示になってくれません。
完全にProgressBarのバグですが、ちゃんと描画させる方法はないですかね?
更にちなみに、UpdateやInvalidateなどをやってもダメでした・・・
2012/06/06(水) 17:55:42.61
>>119
そうじゃなくて>>118ならちゃんと表示されるか聞きたい
だめならSleep()でもいいからさ
2012/06/06(水) 18:21:45.69
これでも表示がおかしいかい?

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ProgressBar1->Position = 0;

for (int i = 0; i < ProgressBar1->Max; i++) {
Sleep(100);
Step();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Step()
{
ProgressBar1->StepBy(1);
}
122デフォルトの名無しさん
垢版 |
2012/06/06(水) 18:59:01.97
>>120
あー、なるほど。
確かにそうですよね、やってみます。
>>121
それもやってみましたがダメでした
123デフォルトの名無しさん
垢版 |
2012/06/07(木) 18:26:38.63
BCB6をXPで使用しています。
メインファームである処理をしている時にフォームを掴むとその処理が停止してしまいますが、
これを回避する方法はありますか?
離せばまた元通り動き出すので、今は「掴むな!!」という事にしています。
2012/06/07(木) 18:52:02.41
別スレッドで処理を行わせるくらいしか回避方法はない。
2012/06/07(木) 21:06:21.52
Focus当てられないようにするとか
2012/06/07(木) 21:52:25.64
FormのEnabledプロパティをfalseにするとフォーカスが当てられなくなるな

しかもオーナードローでなければボタンは反応するので途中で計算を止めたい時も行ける
127123
垢版 |
2012/06/07(木) 22:59:14.92
アドバイス有り難うございます。

FormのEnabledをflaseにして見ましたが、そもそも移動したい時にも移動できなくなるので
ちょっと難しいそうです。
別スレッドでという方法を試して見ます。

スレッドは使った事が無いので基本的な事を教えて下さい。

「異なるスレッドが保有するVCLにアクセスする時に排他制御の問題があるので、
Synchronizeメゾッドを使用して同期しろ」と書かれていますが、
例えばメインフォームのLabel1にアクセスするコードが新しく生成したスレッドの中にしか無い場合には、
排他制御の問題はそもそも無いのでSynchronizeメゾッドは使用する必要がないという理解で良いでしょうか?

2012/06/07(木) 23:15:27.11
移動は出来るけど処理は止めたくないのかあ

SynchronizeメソッドはVCLがマルチスレッドに対応してないので
Label1を新しく生成したスレッドからしかいじらないとしても調べる必要がある
129123
垢版 |
2012/06/07(木) 23:31:32.58
>>128

「調べる必要がある」とはどういう意味でしょうか?


Synchronizeメソッドの説明を読むと、
一度メインフォームに処理を戻してVCLの更新を実行するという事が書かれています。
でもフォームが掴まれている状態でSynchronizeメソッドを呼ぶとそこで止まってしまうのではないかと・・・?
結局止まってしまうのではないかと。
130123
垢版 |
2012/06/07(木) 23:45:49.94
>>Synchronizeメソッドを呼ぶとそこで止まってしまうのではないかと・・・?

実験してみたら上記は問題ありませんでした。
2012/06/08(金) 00:57:57.67
スレッド別なんだから止まるわけないじゃん
それよりメインフォームでVCLをいじってるとSynchronize()の結果が変わる
その時にいじると競合が発生して不審な挙動になる
2012/06/08(金) 15:25:24.49
C++Builder発売15周年記念キャンペーン
なんてやってたんだね
proで50000円は新規の人に魅力的だろうか?
133バカでごめんね
垢版 |
2012/06/09(土) 13:06:35.97
c++を使い始めたものなんですけど

こっちはちゃんとなるんですけど
http://www.dotup.org/uploda/www.dotup.org3073322.jpg

includeを使うと
http://www.dotup.org/uploda/www.dotup.org3073352.jpg


こんな感じになっちゃって・・・(´;ω;`)


だれか解決して下さいませんか?


2012/06/09(土) 14:34:38.30
>>133
画像は分かりやすいけど…
dotupじゃすぐに消えちゃうぞ。一発ネタならちょうどいいけどね。
とりあえず、imgurにでもアップしなおして。
2012/06/09(土) 14:37:00.41
あと、ユーザー名は画像加工した方がいいんでないかい?
136バカでごめんね
垢版 |
2012/06/09(土) 14:38:35.85
ユーザー名ぐらいはいいかなあと
2012/06/09(土) 14:46:28.54
いいんならいいけど。
てか、よく見たらこれBuilderじゃなくて、Borland C++ Compiler 5.5.1か〜。
2012/06/09(土) 18:37:32.34
>>133
http://www.atmarkit.co.jp/fwin2k/win7/06xpmode/06xpmode_03.html

ここを参考にXPモードでBCCをインストールし直す
2012/06/09(土) 18:41:25.01
>>132
魅力でしょ、
50000円ならシェアウェアを公開して
1ライセンス2000円もとれば、あっという間に元は取れるんだし。
2012/06/09(土) 18:49:59.41
ソフト作る労力も勘定に入れてくれ
2012/06/09(土) 21:16:18.72
a) bcc32.exe の引数に -I オプションでインクルードディレクトリを指定する。
例: -Ic:\bcc55\include

bcc32.exe のあるフォルダに、bcc32.cfg というテキストファイルを用意して、
-I<インストールディレクトリ>\include
などと書く。または、すでにある bcc32.cfg が
正しいディレクトリを指しているか調べて書き換える。

bcc なら解るが、cpad は使わないのでわからん。
2012/06/09(土) 21:21:29.27
とにかく、
エラー F2209 a.cpp 1: インクルードファイル 'stdio.h' をオープンできない
を解決しろ。
コンパイルでエラーがでてるのでリンクしていないから a.exe は作成されていない。
でも、cpad が、どこかにある古い a.exe を実行して、64ビット云々のダイアログがでているだけ。
143142
垢版 |
2012/06/09(土) 21:22:31.31
あ、cpad が実行しているわけではないのか。
2012/06/10(日) 13:24:50.15
RAD2010を使用しているのですがエディタでコメントを日本語入力しているときに、マウスカーソルがコードにかかっていると定義の検索が作動した時に文字化けしたり落ちたりしてしまいます。
IMEでマウスカーソルオフ以外の方法でこれを回避する方法はないでしょうか?再インスコや別PCでも治りません。誰か助けて…。
2012/06/10(日) 14:13:47.65
QC に入れなさい。>144
2012/06/10(日) 15:34:38.64
ということはあまり問題になっていないということでしょうか?強制電源オフしなくてはならないので困ってます。
BDS2006から発生していてバージョンアップをやめていたのですがWin7で安心して使用できるようにバージョンアップしたらまた同じでした。
もしかしてうちだけですか?
2012/06/10(日) 15:36:25.50
QC に入れなさい。>146
2012/06/10(日) 15:38:13.77
捨てアカで BDN アカウントをとって
公式フォーラムに口汚く罵った書き込みを入れてみたら?

2012/06/10(日) 15:56:07.04
アカウントは持っているんですが登録したあたりから英文スパムが来るようになって怖いんですよね。あきらめます。ありがとう!
2012/06/10(日) 16:53:38.40
>英文スパム
David I って人からとか?

>あきらめます。ありがとう!
おめでとう。 VisualStudio ならそんなことないから、良い機会だから切り替えよう
2012/06/10(日) 18:15:32.80
David Iとかエンバカとかもスパム扱いになりますがそれ以外で毎週100以上orz
VSへの乗り換えも考えたんですがBuilderに慣れてると使いづらくてねぇ。DirectXは楽になるんだけど。
XE3が出る頃までなんとかガンバりますわ。
152142
垢版 |
2012/06/10(日) 18:49:57.27
うちにはこないので、たぶん、他の原因かと。
2012/06/10(日) 19:44:20.16
IDEFixPackとか…これはさすがに効きそうにないか。まぁQCに入れても2010じゃ放置だろうし。
強制電源オフが必要なのってどういう状況?
2012/06/10(日) 19:56:40.89
なんか2010の不具合報告が最近多いなぁ
それとXE2をWindows7にインストールした時の挙動がXPと違うとか
2012/06/10(日) 22:13:29.08
>>153
日本語入力中にマウスカーソルがコードにのっていると文字入力したとたんに割り込みっぽく定義検索が発動。
すると同時に2バイト文字が1バイト文字として数えられてしまうのか半分くらいの位置以降で文字化けが発生。そのままさらに定義検索が発動?して無限ループ。(文字化けだけですむこともある)
で、タスクマネージャーでBuilderを落とそうとしてもダイアログは出るんだけど落とすこともできずWindowsにも戻れないのでリセットするしかなくなります。
2006以降の方なりませんか?
2012/06/10(日) 22:21:28.76
標準のタスクマネージャとかぬるいの使わないでProcessExplorerとかまともなもの使えば
たたき落とすことくらいはできるんじゃね?
あとはツール→オプション→エディタ設定→支援機能でシンボルインサイトあたりを無効化とか。
2012/06/10(日) 22:42:41.86
Process Explorerとかは使ったことがないんだけど、タスクマネージャーの起動すらできずにExplorer自体も落ちて再起動かかるも何もできなかったりします。
今、シンボルインサイトをオフって見ました。対策にはなるのですが、現在ユニットを多目に使用しているのでちょっと厳しいです。
2012/06/10(日) 23:12:00.86
CPUを100%とられてるのかも。まさかのシングルコアCPUだったりする?
だったらProcessExplorerでCPU使用率が高いプロセスの優先順位をNormalから下げることで
他の操作が可能になる(右クリック→Set Priority→Below Normal)。Process Explorerは事前に
起動しておくと吉。
2012/06/10(日) 23:19:06.57
すみません。環境書いてませんでしたね。i7 875K定格でメモリ16GB Win7 ULT 64bitです。
その方法も試してみたいと思います。いろいろありがとうございます。
2012/06/10(日) 23:34:26.82
連投申し訳ありません。早速試してみましたがBDSのCPU使用率は0.01%
Process Explorerで落とせたり落とせなかったりです。数分待つとProcess Explorerがやっとでてきたり不安定です。
2012/06/10(日) 23:39:09.30
IDE Fix Packは?
2012/06/11(月) 00:08:53.72
登録ユーザーダウンロードを見ているのですがどれなのかわかりません。HF2まで当てていますが。
2012/06/11(月) 00:32:00.57
見つけました。が、インストールしても治らず。
というかインストールすると普通に文字化けが…。
2012/06/11(月) 05:45:06.10
つ ttp://andy.jgknet.de/blog/ide-tools/ide-fix-pack-2009-10/
2012/06/11(月) 20:41:30.60
それをインストールしましたが治りませんでした。
166デフォルトの名無しさん
垢版 |
2012/06/15(金) 16:21:48.56
エクスプローラが落ちたときに、タスクトレイに表示されているアイコンが消えてしまいます。
これを防ぐにはどうしたら良いのでしょうか?
2012/06/15(金) 18:16:54.60
一定時間間隔で登録する(MSの推奨)。
2012/06/16(土) 06:04:04.87
タスクバーごと消えた場合タスクバーが再作成されるときに

UINT WM_TASKBERCREATED = RegisterWindowMessage( "TaskbarCreated" );

ってメッセージが飛んでくるので、そのとき再登録するとか。
2012/06/16(土) 10:12:25.10
そう言えばエクスプローラが落ちた時にアイコンが出るソフトと出ないソフトがあるな
出ないソフトはそこら辺をさぼっているわけか
2012/06/18(月) 01:00:02.14
XE2でPageコントロールに複数のフォームを
ドッキングさせるアプリを作っているのですが

あるタブだけ、もしくは全てのタブのドッキングアウトを
抑制することはできるのでしょうか?

EndDockだったかのAllowにfalseを突っ込んでも
駄目でした
171デフォルトの名無しさん
垢版 |
2012/06/22(金) 12:34:36.28
>>139
シェアウェア―って簡単に売れないのでは?
1本も売れないってよく聞くけど、本当はそんなことないの?
2012/06/22(金) 13:03:08.74
それは、金を払う価値がないソフトウェアだからでは?

例えば、秀丸やEmEditorなんて一企業が成立するくらい使ってもらってるじゃん
2012/06/22(金) 13:04:31.08
どっちもエディタだぬ
他のジャンルでは?
2012/06/22(金) 13:11:49.33
FileVisor
175デフォルトの名無しさん
垢版 |
2012/06/22(金) 13:17:09.31
そういや秀丸って名前がかっこ悪いバグまだ直ってないのか?
2012/06/22(金) 13:18:00.94
使ったときねーから知らん
177デフォルトの名無しさん
垢版 |
2012/06/22(金) 17:40:12.96
>>172 そんなレアなケース出されても....
>>139の言っていることは、
その気になればすぐに元を取れるって感じだから、
そうなの?ていう質問では?
2012/06/22(金) 18:13:52.81
実際マネタイズ大変だよな昔よりさらに
Google様が無料は当たり前の世の中にしてくれたからなぁ
179デフォルトの名無しさん
垢版 |
2012/07/03(火) 15:19:38.09
C++Builder2010で質問

Indyを使ったメール受信ですが
色々サイトをみると以下のように件名を表示しているのですが
TIdMessage *msg = new TIdMessage(this);
IdPOP3->Retrieve( 1, msg );
Memo->Lines->Add( msg->Subject );
delete msg;
文字化けします。
どのサイトをみてもこんなやりかたをしててSubjectは文字化けしないみたいなんですが
どうしたら文字化けしなくできますか?
2012/07/03(火) 15:37:01.49
エンコードが違うのとちゃうん
181デフォルトの名無しさん
垢版 |
2012/07/03(火) 15:51:13.40
どのサイトみてもこんな感じなんですよね。
msg->SubjectをいきなりMemoにぶち込んでるだけで
これC++Builder2010のIndy10で普通に表示されます??
2012/07/03(火) 18:18:02.09
Indyって文字コード変換までしてくれるの?
してくれないならメールヘッダのContent-Typeとか見て変換しないとダメなんじゃないの?
183デフォルトの名無しさん
垢版 |
2012/07/03(火) 18:29:32.01
どのサイトもSubjectは変換してなかった
本文は変換してたけどね。
2012/07/03(火) 19:49:45.85
なんかヘッダーの日本語エンコードに対応してないらしい
Indy以外探したほうがいいかもね
185デフォルトの名無しさん
垢版 |
2012/07/04(水) 09:26:28.71
('д`)えー
186デフォルトの名無しさん
垢版 |
2012/07/04(水) 11:46:27.66
サイトでのソースは全部delphiなんだけど
C++Builderの方はバグってるのかなあ
何かそんなことかいてるサイトもあったし
だれか>>179を試してほしい・・
2012/07/04(水) 12:40:49.23
フリーじゃないのこれ
2012/07/04(水) 14:13:34.94
どっちィ
189デフォルトの名無しさん
垢版 |
2012/07/04(水) 14:21:51.41
んじゃさ、受信したSubjectとか=?ISO-2022-JP?形式なんだけど
これを変換する方法を教えて><
2012/07/04(水) 14:22:26.44
Delphiのメール送信側だけど
http://codezine.jp/article/detail/400
見るとヘッダのコード変換にjconvert.pasとか使ってるみたい
Indy10でこの状態だから他の探したほうがいいんじゃないの?
191デフォルトの名無しさん
垢版 |
2012/07/04(水) 14:43:09.12
最初jconvert使ってたんだけど・・・
どうもC++Builder2010じゃうまくいかなくて
同じコードをC++Builder5でやるとちゃんと変換されたんだけど
2010ってデフォでUnicodeになってるから?
2012/07/04(水) 14:45:44.39
多分そうだろうね
AnsiStringでやってUNICODEに後から変換するとか力技で一回やってみれば?w
193デフォルトの名無しさん
垢版 |
2012/07/04(水) 14:49:36.76
やってみたぽ・・・
とりあえずAnsiStringにぶち込んでから
Memo->Lines->Add( ConvertJCode( DecodeHeaderString( subject ), SJIS_OUT ) );
194デフォルトの名無しさん
垢版 |
2012/07/04(水) 14:50:28.10
その辺は鬼のように試したんだけど全くうまくいかない。
C++Builder5じゃちゃんと変換されるんだけどなあ
2012/07/04(水) 14:55:30.22
jconvert.pas自体がStringでビルドされてたら意味ないと思う多分
196デフォルトの名無しさん
垢版 |
2012/07/04(水) 14:57:38.42
そうなんだよね、それ気づくの遅かったアホだし俺とか
んで、諦めて、アレしたんだけど
しかし何故delphiの方はSubjectそのままぶち込んでもちゃんと表示されてんだろ
2012/07/04(水) 15:05:55.60
別物だからさ
198デフォルトの名無しさん
垢版 |
2012/07/04(水) 15:28:45.56
どうしたものか
とりあえず>>189教えてくらさ><
2012/07/04(水) 15:30:42.80
とりあえずjconvert.pasのStringをAnsiStringに置換してビルドしてみれば?
200デフォルトの名無しさん
垢版 |
2012/07/04(水) 15:33:11.48
やってみる・・・
2012/07/04(水) 15:51:02.58
やっぱりやめた・・・
202デフォルトの名無しさん
垢版 |
2012/07/04(水) 15:52:43.51
いや、根性でやったんだけどさw
まあダメだったわ、とりあえず無理やりキャストしてコンパイルが通っただけって感じだし
どうしたらいいの俺とか
2012/07/05(木) 06:03:21.10
ちょっと調べてみた
MecsUtils.pasっていうEmbarcadero Developer Networkにある文字列関係の処理用コード使ったらタイトル文字化け直ったよ
http://cc.embarcadero.com/item/26061
Yahoo Mailの1メールでしか試してないけど
この中のMecsShrinkElementっていう関数にTIdMessageのSubjectを渡すと正常に変換された
2012/07/05(木) 10:12:45.85
>>203
あああああああああああああああああああああああああ!!
ありがとうありがとう><
できましたできました!!!
自分もヤホーメール1件でしかまだ試してないですが
今までずっと試してたのが出来たのでこれでISO-2022-JPはばっちりです!!
ありがとうございました^^
2012/07/05(木) 10:23:51.58
違ったあああああああ!
=?ISO-2022-JP?B?って形式で入ってるのはダメだった〜
理由はよくわからないけどSubjectに入ってる形式で
何かわけのわからん形式ならMecsShrinkElementでOKでしたが
=?ISO-2022-JP?B?形式で入ってると変換されなかったので
これは別の関数呼べばいいんですかね??
何を呼べばいいかソースみてもわかりませんが・・・
2012/07/05(木) 10:30:57.29
ヤホーから来たメールはOKだったけど
ニフティーから来たメールはダメだったぽ・・
これプロバによってアレかあ死にたい
2012/07/05(木) 15:17:40.69
BCB6で、boost.polygon、は使えまつか?
2012/07/05(木) 21:52:36.95
コモンコントロールってWM_NOTIFYを親に送りますよね
親がコントロールだったら、そのコントロールをサブクラス化するしか
WM_NOTIFYを捕捉する術はないのでしょうか?
2012/07/05(木) 23:36:07.06
ない
210デフォルトの名無しさん
垢版 |
2012/07/06(金) 10:02:51.17
この前からIdPOP3がバグるって騒いでる基地外ですが
>>203氏のおかげで結構変換することができた
で、色々受信してたらMecsShrinkElementを通しても化けるのがあって
よくよくみてみると、MecsShrinkElementで化けるのは
最初から既にちゃんと変換されてたってのがわかったんだけど
2010のIndyのバグのせいか、ちゃんと変換されてるのと無変換で
MecsShrinkElementを通すとOKってのがあったんだけど
これを判別する方法としてCharSetがISO-2022-JPならMecsShrinkElementを使う
って事にしたら大抵OKになったけど、たまにCharSetに何も入ってないのに
MecsShrinkElementを使わないとダメなのがあって
これどうやって判別したらいいのですか・・・

2012/07/06(金) 10:04:55.02
7bit か 8bit かで区別するといいお
2012/07/06(金) 10:08:27.68
XE2なら問題ないみたいだな

2010はバグ多いな
要するにXE2は2010、XEのバグ取りとFileMonkeyを入れたってことか

XE3でclang+llvmになるらいけどまたしばらくバグに苦しむんだろうな・・・
213デフォルトの名無しさん
垢版 |
2012/07/06(金) 10:25:51.56
>>211
それダメですた、それ入ってないのがあって識別できません><

>>212
XE2迷ったけど64ビット作れないみたいだし次まで待つ事に
2012/07/06(金) 10:28:06.99
だよ
XE2はDelphiのみ64bit対応
だまされたー
215デフォルトの名無しさん
垢版 |
2012/07/06(金) 11:38:13.20
とりあえず、判断は
AttachmentEncoding、CharSet、ContentTransferEncodingでなんとかなりそうです。
で、最後に・・・
=?shift_jis?B? この形式で来るのが現在変換できなくて困ってます。
これを変換する方法を教えてください・・・
2012/07/06(金) 17:58:14.65
【中2自殺】 皇子山中学校 「韓国に対する関心を高めるため」 修学旅行は韓国へ
http://engawa.2ch.net/test/read.cgi/poverty/1341564390/

ねらい
ハングルを学ぶことによって、韓国に対する関心を寄り高める。
http://jan.2chan.net/may/b/src/1341557000217.jpg

■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況