くだすれC++Builder(超初心者用)その5at TECH
くだすれC++Builder(超初心者用)その5 - 暇つぶし2ch350:デフォルトの名無しさん
13/01/21 19:03:25.81 .net
Delphi Pascal Compiler
コマンドラインコンパイラdcc32は、どういう場合につかいますか?

351:341
13/01/21 20:40:50.34 .net
>>341
ここにはIDでないからな。知らないで開発委託者の立場でレスはしない。
そんなことも知らないでC++を使ってるような経験値の低い開発者には
頼まないってこと。
MSがこれを入れておくと動きますよと言ってくれるVBで、といったのは
そういうわけ。
C++Builderはexeをコピーするだけで動くスタンドアロンなプログラムが作
れるのが利点の1つ。

352:341
13/01/21 20:52:06.09 .net
やれやれ、アンカみすってる。で、ここは超初心者スレだったのか。

プロジェクト→オプション

パッケージタブ 実行時パッケージを使って構築 のチェックをはずす。

リンカタブ リンクの共有RTL DLLを使う のチェックをはずす。

この2つで自前でLoadするDLL以外の依存は完全になくなる。実行ファイ
ルがでかくなるって嫌う人も多いが、そりゃ32Mバイトのメモリが広大だっ
たころの話。
これでデータベースのエラーがでるならそれはどこかがバグってる。

353:デフォルトの名無しさん
13/01/21 21:43:56.42 .net
>>344-345 ほんとに何も知らないならレスしないください。ウザイだけです。



355:デフォルトの名無しさん
13/01/30 16:46:48.89 .net
TChartで質問ですが
Series1->YValue[n] = 123;
みたいに既に作成されているグラフのn番目に値を後から変更できますが
Series1->Add( 0, "gggg", clTeeColor );
のようにAddした際にテキストとしてAddしているのですが
このテキストを↓
Series1->YValue[n] = 123;
これみたいに後からテキストの値を変更する方法を教えてください

356:デフォルトの名無しさん
13/01/30 16:55:03.70 .net
あ、ごめんでけた^^

357:デフォルトの名無しさん
13/02/22 00:11:14.73 .net
C++Builder2010を使用しています。
スレッド間の排他制御に関して教えて下さい。

A、Bの2個のスレッドがあります。
Aで計算するデータをBで参照するだけの場合でも排他制御はした方が良いのでしょうか?
具体的にはAはループ処理でずっと計算をしています。
Bは定期的(1秒に1回とか)に計算結果をGUIに表示するだけです。

どなたかアドバイスをお願い致します。

358:デフォルトの名無しさん
13/02/22 00:16:26.09 .net
当たり前だろ
マルチコアで変数に代入中に値を参照したらどうなる
アトミックなOS APIを使おう

359:349
13/02/22 00:48:14.88 .net
>>350

有り難うございます。
排他処理実装します。

「アトミックなOS API」の検索キーを教えて頂けませんか?
あちこち見て、クリティカルセクションというのを試して見ようと思っていました。

360:デフォルトの名無しさん
13/02/22 00:54:15.07 .net
>>351
単純な排他制御はパフォーマンスに悪影響を及ぼす事がある

クリティカルセクションは主にデバイスドライバで使用する
一番多く使うのはMutex
インターロックAPI
セマフォ
イベント

などかな

361:デフォルトの名無しさん
13/02/22 06:20:24.65 .net
いま、同一パソコン上で、2つのWindowsアプリケーションを動作させてて、そのプロセス間通信でメモリマップドファイルを利用してファイルデータの受け渡しを行ってるんですが、一方のWindowsアプリケーションを別のパソコンへ持っていきたいと考えてます。
この場合、イーサネットで接続するようになるのですが、名前つきパイプを利用すれば同等の機能が実現できますでしょうか?

362:デフォルトの名無しさん
13/02/22 08:37:37.69 .net
それC++Builderに関係ない話だね
Win32スレで聞いたらいいかも
あ、今荒れてるか

363:デフォルトの名無しさん
13/02/22 18:48:14.14 .net
出来るか出来ないかで言えば出来る

364:デフォルトの名無しさん
13/02/22 20:17:29.42 .net
メールスロットでもいいんじゃねーの
プロセス間通信でしょ

365:片山博文MZパンク ◆0lBZNi.Q7evd
13/03/22 23:23:20.90 .net
無料でC++Builderを使いたい。どこにあるの?

366:デフォルトの名無しさん
13/03/22 23:32:57.19 .net
>>357
警察に言って聞くといいよ!

367:デフォルトの名無しさん
13/03/23 07:51:11.24 .net
現在は14日間のTrialのみ

368:デフォルトの名無しさん
13/03/23 16:33:24.75 .net
試用期間は300日ですぞ

369:デフォルトの名無しさん
13/05/11 16:43:38.72 .net


370:デフォルトの名無しさん
13/06/29 13:23:11.65 .net
2010からXE4にVUPしたのですがプロジェクトオプションのデフォルト設定の仕方が分かりません
またパッケージを未使用にして保存してもいくつかXE4を再起動するとオンになってしまいます
(プロジェクトを保存して開き直す場合は反映されているのにXE4を再起動するとダメです)
XE3をいれてみても同じです。どうしたらいいの?

371:デフォルトの名無しさん
13/06/29 17:22:08.08 .net
デフォルトのプロジェクト設定はXE2辺りで無くなった
便利だったのにね

ファイルに保存できるオプションセットを使えだとさ
これ、正直仕様がよく分からん

372:デフォルトの名無しさん
13/06/29 19:06:04.50 .net
ありがとう!やっぱりそれですよね
でもパッケージの使用可否はやはり設定できないようです

373:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
俺も>>362と同じく2010からXE4に


374:した者なんだけど Releaseでコンパイルする方法がわからない・・・ 以前は構成マネージャでdebugとreleaseを切り替えてたのに無くなってるので これ何処で設定するの??



375:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
表示メニューに移動してた・・・

何でこんな糞みたいなことするんだろ
デフォのプロジェクト保存とか勝手に無くすし

376:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
プロジェクトオプションのダイアログの一番上にあるターゲットじゃないの?

377:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
>>367
それってたぶん、プロジェクト設定のターゲットじゃないかな、かな。
まあとりあえず解決したんだけどさ


つーか、exeでかすぎwwwwwwwwwwwwwwwwwwwwwwwwwwwww
とりあえずフォームだけのをコンパイルしてみたらexeが4MBってwwww
大丈夫なのかこれwwwwwww

以前C++Builder5でexeが肥大するバグがあってするUpdateが出たけど
何で使いもしないのも無理やりexeに組み込むんだろ

378:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
自分の所でしか動かさないのなら動的RTLの使用にチェックを入れとけば?

379:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
DebugとReleaseを切り替えるのって
プロジェクトマネージャで1ダブルクリックじゃん
XE4すげー便利じゃん

380:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
>>369
XE4入ってない環境で動かすから
>>370
プロジェクトマネージャ邪魔で非表示にしてるから今まで使った事ないんだよね

381:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
これツールバーカスタマイズでアクティブ構成のアレ追加できればいいのに

382:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
プロジェクトマネージャが邪魔なら
オブジェクトインスペクタとかと同じ場所にタブにして置けばいいじゃん
タブ1クリックで切り替えられるんだからさ

383:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
なるほど、タブでアレしたらよさげな感じになりそうですね

っていうか・・・
64bitコンパイルできるっつーからゲットしたんだけど
これプロジェクトのターゲットに32bitしか表示されないんだけど・・・
どやったら64bitでコンパイルできるんですかね??

384:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
プロジェクトマネージャ
ターゲットプラットホーム
右クリック
プラットホームの追加

385:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
>>375
ありがとうできました・・
これプロジェクトマネージャからでしか追加できないのかなあ

めっちゃ64bitをアピールしまくってたくせに何でデフォで選択できないんだろこれwwww

386:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
フォームだけのexeで4MBは多分Builderのリンカがアホなのが原因
sensorとか使ってないRTLがてんこ盛りにリンクされてる

DelphiでフォームだけだとXE3では2.2MBくらいだった

387:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
>>377
マジですか
むしろDelphiでもXE4にしたら4MBくらいになったりとか?

ちなみに、C++Builder1、3、5、6、2007、2010、EX4と使ってきたけど
新しいのリリースする度にどんどんexeが肥大化してってるww
まあいろんな機能が実装されてるから仕方ないんだろうけど
フォームだけで4MBは無いよなあ・・・

388:デフォルトの名無しさん
13/07/01 NY:AN:NY.AN .net
今やってみたら、Delphi XE4でもフォームだけで2.2MBだった。
俺の所ではBuilder XE4では3.5MBだけど何が違うんだろう?

リンカのオプションでマップファイル出力を詳細にすると何がリンクされているか分かるよ

389:デフォルトの名無しさん
13/07/02 NY:AN:NY.AN .net
動的RTLのチャック入れてるとか?

390:デフォルトの名無しさん
13/07/02 NY:AN:NY.AN .net
チャックって!!
チェックって脳内変換してね^^

391:デフォルトの名無しさん
13/07/04 NY:AN:NY.AN .net
XE4でさ、メモリをコピーだけするのを作ったのさ
んで、64bit OSで32bitと64bitでコンパイルして速度計ったら
64bitでコンパイルした方が倍時間がかかってたんだけど、何で?

392:デフォルトの名無しさん
13/07/04 NY:AN:NY.AN .net
ソースさらせ
単に対象メモリサイズまで倍になってるってことじゃないだろうな

393:デフォルトの名無しさん
13/07/04 NY:AN:NY.AN .net
単純にメモリコピー速度を32bitと64bitで比較するためにアレしてみただが

#define DIBBUFFERSIZE (1920*2048*4)
DWORD *Dib1;
DWORD *Dib2;
Dib1 = (DWORD *)::VirtualAlloc( NULL, DIBBUFFERSIZE, MEM_COMMIT, PAGE_READWRITE );
Dib2 = (DWORD *)::VirtualAlloc( NULL, DIBBUFFERSIZE, MEM_COMMIT, PAGE_READWRITE );
int ms = ::GetTickCount( );
for( int i = 0


394:; i < 100; i ++ ){  ::CopyMemory( Dib1, Dib2, DIBBUFFERSIZE ); } ms = ::GetTickCount( ) - ms; Panel1->Caption = ms; :: VirtualFree( Dib1, DIBBUFFERSIZE, MEM_DECOMMIT ); :: VirtualFree( Dib2, DIBBUFFERSIZE, MEM_DECOMMIT );



395:デフォルトの名無しさん
13/07/04 NY:AN:NY.AN .net
CopyMemory が原因みたいだな
*des++=*src++
で単純にコピーすると64bitの方が速いな

396:デフォルトの名無しさん
13/07/05 NY:AN:NY.AN .net
>>385
やってみた。
64bitの方が早くはならなかったが同じくらいの速度にはなった。

397:デフォルトの名無しさん
13/07/05 NY:AN:NY.AN .net
System::Move()とかmemcpyだとどうかな?

398:デフォルトの名無しさん
13/07/05 NY:AN:NY.AN .net
memcpyはCopyMemoryと同じだった
Moveは使ってないっぽ

399:デフォルトの名無しさん
13/07/05 NY:AN:NY.AN .net
Moveやってみた
forで回すのと同じくらいの速度で32も64も同じくらいの速度だった

400:デフォルトの名無しさん
13/07/05 NY:AN:NY.AN .net
Moveはx86だとfastcodeのアセンブラで、x64はfastcodeのpascalコードなので、同じくらいというのは
まぁそんなもんかという気はする。

401:デフォルトの名無しさん
13/07/06 NY:AN:NY.AN .net
::CopyMemory って WinAPI 呼ぶんじゃないの?

402:デフォルトの名無しさん
13/07/06 NY:AN:NY.AN .net
>::CopyMemory って WinAPI 呼ぶんじゃないの?
CopyMemory自体がWin32API

403:デフォルトの名無しさん
13/07/07 NY:AN:NY.AN .net
>CopyMemory自体がWin32API
じゃ遅くても仕方ないな。Win64 API 使えないのかよ。
使えねーつーるだな

404:デフォルトの名無しさん
13/07/07 NY:AN:NY.AN .net
さてどうしようか

405:デフォルトの名無しさん
13/07/07 NY:AN:NY.AN .net
またmalloc()やプリコンパイルヘッダの時みたいにユーザーが提案してきた
ルーチンを組み込むつもりなのかな

406:デフォルトの名無しさん
13/07/08 NY:AN:NY.AN .net
>>393
えっ?

407:デフォルトの名無しさん
13/07/08 NY:AN:NY.AN .net
64bitネタがでていたのでXE4にVUPしてから64bitでビルドしてなかったので試してみたら3倍速位になった
デジカメのRAW現像なのでshort変数ばかり使ってるんだけどなぜ速くなったのか全くわからん

408:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
exeのサイズは何倍になった?

409:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
32bitで3.4Mが64bitは9.8Mになってた
ランタイム不要のReleaseビルドでの比較です
2010で作成したソースをClipboardで使われているNativeUIntの部分を条件分岐追加してコンパイルしただけ

410:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
XE4 での 32bit 版の大きさも知りたいところだな

411:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
何の大きさ?チンポ?

412:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
XE4 での 32bit 版のチンポも大きさも知りたいところだな

413:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
だから32bit版の何の大きさを知りたいのさ?チンポ?

414:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
399は両方XE4です
2010だと1.2Mだった
サイズはあまり気にしないがやっぱりでかくなってるんだな

415:デフォルトの名無しさん
13/07/09 NY:AN:NY.AN .net
チンポ?

416:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
C++Builder XE4でandroidアプリって作成できますか?

417:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
出来ねーよ

418:デフォルトの名無しさん
13/07/10 NY:AN:NY.AN .net
雑魚は黙ってろよ

419:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
C++Builder5で質問なんだけど
最初はなんともなかったんだけど
フォーム数が増えてきてからコンパイルするとアイコンがデフォになってしまう
その状態になっても何度も再構築してたらちゃんと指定したアイコンになる時もあったんだけど
今はもう完全に何度再構築してもデフォアイコンのまま
しかもこの現象はXPだけでWin7だとちゃんとアイコンが表示されている。
このバグを回避してちゃんと指定したアイコンになる方法を教えてくださ・・・・

420:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
GDIオブジェクト数の制限が掛かってるんじゃね?
レジストリいじって再起動かも

421:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
レジストリどこ弄くればいいですかね?

422:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
URLリンク(technet.microsoft.com)

ここをよく読んで

URLリンク(factory.sakura.ne.jp)

これで変更

レジストリエディタでも変更できるけど間違えるとWindowsが起動しなくなったりして危険

しかし制限値は10000なのでこれが原因じゃないような気がするなあ

423:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
>>412
ありがとう。
よく読んでアレしてみます

424:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
プロセス毎に10000だよ?
Formにそれだけのコンポーネント乗っけてないよね?

425:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
1つのフォームに1万も乗せてないですが
フォーム数は100ちょいで合計してもコンポーネント数は1万も無いかもあるかもって感じですが

426:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
dfmファイルは116ありました。
ちなみにちなみに、浅いフォルダでコンパイルすると正常にアイコンが表示されます
と言ってもダメな時のフォルダ階層って4つくらいなんですけどね・・
ルートにフォルダ作ってそこでやると何故か大丈夫

427:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
>>416
それじゃあ>>412やっても変わらないだろうな・・・
俺の場合はJaneStyleで多量のJPGを一気に開くと画面が崩れるので設定を変えたんだが
他の原因だな

428:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
浅いフォルダだとおk?
もしかしてパスの長さがMAX_PATHを超えてないか?

429:デフォルトの名無しさん
13/07/17 NY:AN:NY.AN .net
>>417
やっぱ変わらないですか

>>418
浅いフォルダ階層だとおkですがしかし
しかし、フォーム数が少ない時やもっと深い階層で他のフォームが少ないのは大丈夫
階層深くてもフォルダ名が短いのでMAX_PATH超えることはないです256ですよね?
せいぜいあって100バイトあるかないかですね

430:デフォルトの名無しさん
13/08/05 NY:AN:NY.AN .net
C++Builder2009で作成したプログラムをWindows7で実行したのですが
リストビューのカラム幅を変更しようとドラッグすると、ドラッグ途中では
再描画されずに縦棒で位置を示す表示がされるだけで、ドラッグ終了で
位置が確定してやっと新しいカラム位置で再描画されます。
これは2009はWindows7をサポートしていないことが原因でしょうか?。
また2009でもドラッグ中に再描画できるようなウラ技(?)とかありますか?。
スプリッターはResizeStykeをrsUpdateにしておけば旧OSと同様に
処理されていますが、カラムの変更も同じような感じにしたいのですが・・・。

431:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
C++Builder2009なんですが、

TTreeview の LoadFromFile と SaveToFile メソッド

内部的にはUnicode だと思うんだけど、 SaveToFile で Unicode で保存まではいいんだけど
LoadFromFile で Unicode で読み込んでくれず、どうやらS-JISで読んでいるみたいなんです。

LoadFromFile で Unicode で読み込む方法か、
もしくは SaveToFile で S-JISで保存する方法があったら教えてください。

TStringList だと TEncoding で指定できるのに・・・。

432:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
overloadされたLoadFromFileが存在してない?

433:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
ないです。

E2227 _fastcall TCustomTreeView::LoadFromFile(const UnicodeString) の呼び出しに余分なパラメータがある

といわれます。

434:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
どうにも方法がないなら、TStringList→TStream系→TTreeviewでなんとかなりませんかね。
もしくは、TStringList.Text→TStringStream→TTreeviewとか。
当方Delphiかつ現在環境を用意してないので試してはいない。適当でスマソ。

435:デフォルトの名無しさん
13/08/09 NY:AN:NY.AN .net
>>424
TStream系に変換してみましたが、TTreeview のLoadFromStream の段階でダメのようです。

当面は原始的に各ノードに対して .StringOfChar('\t',Node->Level)+Node->Text; をTStringListに追加していって、それを保存という感じで対応しようと思います。
この方法で保存したものなら TCustomTreeView::LoadFromFile(const UnicodeString) でちゃんと読み込めましたので。

ありがとうございました。

436:デフォルトの名無しさん
13/08/15 NY:AN:NY.AN .net
評価式についての質問なんですが。

int a=10,b=20;

if(a+=b && a==30) { }

こういう式があったとして、これって真になるということは保証されていましたっけ?
されてない?

if( (a+=b) && a==30) { }

こうすればOK?

437:デフォルトの名無しさん
13/08/16 NY:AN:NY.AN .net
変態コードだけど、いいんじゃね?

438:デフォルトの名無しさん
13/08/21 NY:AN:NY.AN .net
C++Builder6で作られたソフトのメンテやらされているんだけど
簡単な画像処理で
Image1->Canvas->Pixels[x][y]=color;
で512*512


439:ぶん回してるところがやたら遅いんだけど Canvasを実メモリ配列に吸い出して なんか処理してから 元に戻したいんだけど、どうすればいいんでしょ? サンプルコードでもあれば教えてください。



440:デフォルトの名無しさん
13/08/21 NY:AN:NY.AN .net
>>428
今日も面接いってきたよ 2012年の3月から147社正社員面接しているのに採用されないよ
正社員歴2年の高卒の27だよ 福岡市に一人で住んでるよ 身長174センチ体重55キロだよ
資格は 簿記3級 秘書検定3級 ITパスポート,運転免許 モスのエクセルとワードだよ
これはネタではないよ
事実だよ
コピペでもないよ

441:デフォルトの名無しさん
13/08/21 NY:AN:NY.AN .net
>>428
ScanLine()で一行分ゴッソリ取ってくるのが普通じゃないの?

442:デフォルトの名無しさん
13/08/21 NY:AN:NY.AN .net
>>430
ありがとうございます。
VC++ばかりやってたのでVCLのメソッドがよく判っていません。
明日やってみます。

ついでと言ってはなんですが、これ以外にcanvasのイメージを一気にxy配列で取り込む方法ってありますか?

443:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
>>431
CopyRect使えばTBitmapにコピー出来るけどそんな事したいのか?
配列に取り込むには一度TBitmapに変換してからじゃないと1ドット毎に
システムコールが起きるので遅くて仕方がない

444:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
だいたいWindowsのビットマップは丸っきり前後関係が逆なのでC言語の配列とは
相性が最悪なんだよな

C<=>FORTRANで行と列を交換するtranspose()位の手間がかかる

445:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
ここはくだすれ...

歴史的に Windows BitMap の内部フォーマットは千差万別。かつ、連続したメモリブロックになっていない場合もある(あった)
ので結構めんどくさい。ひとことで言うと例外が多い。
素性のはっきりしたデータを最新の OS で動かすのであればそんなに問題ないんだけど
どんな画像でも、ちょっとふるい OS でも、となるとね...

なので一ピクセル単位のアクセスってのが、とっても遅いんだけど、まぁ安全。ってこと。
もうちょい早く処理したいなら ScanLine を使えば水平一ラインごとに読み書きできるので
たいていこちらを使う。

446:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
千差万別って、DDBとDIB Sectionの2種類しかないじゃないか

447:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
フルカラーの24bit16万色が(+8bitα値がGDI+)当たり前の今は関係ないけど、
昔は少ないVRAMにパレットを割り当てる事によって原色に近い色を出してたろ

そういうのを全部VCLに吸収して表面から見えないようにしていたので、プログラム
によってはびっくりするような結果が出ていた

そこまで考慮するかどうかで対応策も違ってくる
無視していいと思うんだけどね

448:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
×16万色
○256^3≒1677万色

449:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
URLリンク(www13.plala.or.jp)

ここが分かりやすいな

俺はDelphi Graphic Secretsというすっげー古い本を読んでるけど
今でも関心するような事が書いてある

でもほとんど今では役に立たないような事が多いけどな
VCLがいかに初期Windowsのヒデエ場所を隠蔽して見えなくしているかも
だいたい分かる

450:431
13/08/22 NY:AN:NY.AN .net
皆様のご親切に感謝です。
全体の内容がわかってなくての質問でした。

よく見てみると今回の質問は
ネットワークからモノクロ8ビット


451:の画像データをメモリ配列に取り込んで このメモリ配列の画像データを小さいウインド画面でモニタするために  color=data*0x10000+data*0x100+data;  Image1->Canvas->Pixels[x][y]=color; // これをグルグル とやっているのを高速化したいのですがお勧めの手法はなんでしょうか? 単純に画像メモリ配列データをウインドに画像として出力したいということで 古いOSと古いマシンの対応は不要です。 勉強不足長文すみません。



452:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
URLリンク(www.geocities.jp)

こんな感じでScanLine()を行数分繰り返して出来たBitMapを
Imageに代入

453:デフォルトの名無しさん
13/08/22 NY:AN:NY.AN .net
ああそうだ、初めて知ったんだけど、ImageコンポーネントのPictureプロパティの
HandleからHBITMAP構造体へのポインタを得て、BITMAP構造体を
GetTObject()で取得しても、bmBitsはNULLになっちゃうのな
これどうすればいいんだろ

454:431
13/08/23 NY:AN:NY.AN .net
>>440

おかげさまで何とか理解出来ました。

初歩的な質問に付き合っていただきましてありがとうございました。

455:デフォルトの名無しさん
13/08/23 NY:AN:NY.AN .net
>>441
そっちには入っていない
MaskHandleの方に入っている
というかわざわざカプセル化されているVCLの中身を覗いてゴニョゴニョしたいのなら
初めからMFCで書けばいいだろ

456:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN .net
TBitmap(もしくは、TCanvas)の2つを透過コピーするサンプルコード下さいorz


>>441

TImage->Picture->BitmapのWidthかHeightを設定するタイミングでアサインされるんでわ?

457:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN .net
ScanLineでマスク画像の白の部分以外を描けばいいだけじゃない?
マスク画像使わないんなら設定した色以外の場合だけ描けばいいんじゃない?

458:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN .net
AlphaFormatの事だとVCLは事情が異なるからなあ

GDI+をサポートしていないので、描画時に考慮するだけで他の動作は違うし

459:444
13/08/30 NY:AN:NY.AN .net
>設定した色以外の場合だけ描けば

調べても動作させても上手くいかなかったので、そうします。

460:デフォルトの名無しさん
13/08/30 NY:AN:NY.AN .net
ListViewでレポート表示させている場合に、ある行にフォーカスを設定すると
その行が画面に見えてない時には見える位置まで自動でスクロールしてしまうのですが
スクロールさせないようにすることは可能でしょうか?
スクロールしてしまった後に自力で戻すしかないでしょうか?

461:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
ある行にフォーカスを設定ってSelectedってこと?
だとしたらウチではそんなことにならないんだけど…

462:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
SelectedじゃなくてFocused
設定すると点線で囲まれる

463:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
ListView1->Items->Item[10]->Forcused=true;
にしても全然スクロールしないよ。XEだけど

464:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
その行が表示されていない状態でフォーカスを設定すると見える位置までスクロールしない?
ファイラーなんかでフォーカス行が見えていない時に↑↓キーでフォーカス行を変更すると
見える位置までスクロールするのと同じことなんだけど

465:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
>>451
描画の更新するとどうなる?

466:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
ListView1->Invalidate();しても移動しないよ

467:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
UpdateやRefreshは?
あと移動しないということは見えない状態のままということだよね
それで↑↓キーをどっちか押すと見える位置まで移動する?

468:デフォルトの名無しさん
13/08/31 NY:AN:NY.AN .net
いろいろ試してみた結果 「Forcusedをtrueにしたから」 というわけでもなく
再描画されたタイミングでフォーカス行までスクロールされているみたい
あと仮想リストビューを使っているのでその辺も違いがあったかもしれない
リストのデータを更新してCountに件数をセットしたタイミングでスクロールされていた
(フォーカスを設定していたタイミングではなかったので、ここで勘違いしてた)
なのでCountに件数をセットする前に表示されている一番上の行番号を退避しておいて
件数をセットした後でまた元の一番上の行番号が見えるように戻してやることで解決したっぽいです
ここまでお付き合いして情報を


469:寄せて頂きありがとうございました



470:デフォルトの名無しさん
13/09/05 17:36:57.52 .net
C++Builder6のIDEについて質問です。
IDE使用中にパソコンがフリーズしたことがあり、それ以来エラーが出るようになりました。
エラーのメッセージは下記リンク先と全く同じです。

URLリンク(www.functiont.info)
2005年9月18日(日) Delphiの本体でエラー?
--
モジュール 'vcl60.bpl' のアドレス 40110C48 でアドレス 00000018 に対する書き込み違反がおきました。
モジュール 'coreide60.bpl' のアドレス 0052700C でアドレス 000000B4 に対する読み込み違反がおきました。

私の場合は一応は使えるのですが、IDEのメニューで「開く」から別のプロジェクトを開くと
この上のエラーメッセージが出ます。そして検索やコンパイル結果が表示されるウィンドウが
ドッキングから外れて浮いた状態で小さく表示されます。この後このウィンドウを
ドッキングし直せば以降は普通に使えるのですが、また別のプロジェクトを開くと
同じ事象が発生します。
またこのウィンドウをドッキングから外したりして弄っていたら下のエラーメッセージが出ました。

リンク先では再インストールで直ったとあるので、修復インストールや、アンインストール後に
インストールし直してみたりしたのですが改善されませんでした。
ファイルが壊れたのなら上書きで直りそうですが、何かゴミデータでも残っているのでしょうか?。
そのウィンドウの位置やサイズ情報を読み込んで変な位置に表示しようとしてエラーが出ている
ようにも思えるのですが、何かお心当たりのある方いらっしゃいますか?。

471:デフォルトの名無しさん
13/09/05 17:47:04.84 .net
レイアウトファイルぶっ壊れてるんじゃね
デスクトップレイアウトとデバッグレイアウトを上書き保存したらどうだろうか

472:デフォルトの名無しさん
13/09/05 18:18:41.61 .net
レスありがとう。
「標準」という名称でデスクトップの配置を保存してみましたがやはり上のメッセージが出ますね。
また 表示→デスクトップの配置→標準 という感じで保存した名称「標準」を選択しようとしても
同じエラーメッセージが表示されて選択できず <未指定> にチェックが付いたままになります。
この配置の読み込みでエラーが出るということはその辺に問題点があるということなのでしょうけど
一体何を読み込んでしまっているのだろう・・・。
保存すると 標準.dst というファイルが作成されましたが、同じフォルダ内にある bcb.dsk と見比べて
みればいいのかな?。 dsk ファイルも散々書き換えて試したのですが、やはりこの辺を徹底的に
調べるしかないか。

473:デフォルトの名無しさん
13/09/05 19:59:35.35 .net
URLリンク(docwiki.embarcadero.com)

このあたりはどうなん
俺のXE4でも使えたけど

URLリンク(stackoverflow.com)

こんなのも発見した

HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Session\DesktopName=Default Layout
HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Session\RuntimeDesktopName=Debug Layout

壊れてないか?

474:デフォルトの名無しさん
13/09/05 21:22:19.99 .net
C++Builder6なので同じような項目を探してみたところ以下のような箇所を見つけました。

[HKEY_CURRENT_USER\Software\Borland\C++Builder\6.0\Session]
"DesktopName"=""
"RuntimeDesktopName"=""

現状では空欄になってますけど、これに各々 Default Layout と Debug Layout って入れるということなのかな?。

475:デフォルトの名無しさん
13/09/05 21:38:11.37 .net
古いパソコンにもC++Builderを入れてたので(こちらは問題なく動く、けどパソコンが�


476:ヘ) レジストリを見てみましたがその2つの項目自体が無いですね。関係ないかもしれないです。 >>459 で「標準」という名前でデスクトップ レイアウトとデバッグ時のレイアウトを作ったので その時に追加されたのかもしれない。そして症状が変わらなかったため削除したので 空欄になってるだけみたいです。



477:デフォルトの名無しさん
13/09/05 22:05:26.23 .net
参考にならないかも知れないですがXE4ではこうなっています

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\11.0\Session]
"RuntimeDesktopName"="Debug Layout"
"DesktopName"="Default Layout"

478:デフォルトの名無しさん
13/09/05 22:26:56.87 .net
URLリンク(edn.embarcadero.com)
8.デスクトップレイアウトの設定

2009辺りからもプリセットで用意されてるみたいですね。
バージョン6の頃はまだ無いみたいです。

またアンインストールしてみるかなぁ。
多分レジストリに情報が残っていたんじゃないかと推測。
BCB6RegClean.exeをやればいいのかな?。

479:デフォルトの名無しさん
13/09/26 23:00:41.47 .net
XE2で、エントリーポイント(WinMain)があるファイルの
USEFORMマクロの上に気が付いたら空行を
どんどん追加されてるんだけど、これどうにかならないの?

480:デフォルトの名無しさん
13/09/28 19:03:52.62 .net
C++Builder2009Proを使っています。
.pas ファイルをコンパイルしようとしているんですが、Indy系のファイルが見つからないとしてエラーになってしまいます。

>[致命的エラー] F1026 ファイル 'IdBaseComponent.dcu' が見つかりません

cppのC++で書かれたフォームにIdHTTPを貼り付ける → コンパイルは通る。
pasのDelphiで書かれたフォームにdHTTPを貼り付ける → 上記のエラーが出る。

C++Builder2009に付属のdccコンパイラはお試し的なもので本格的にコンパイルできるようにするにはDelphi買えってことなんでしょうか?
それともなにか方法があるんでしょうか。
(まあC++BuilderだけでDelphiも利用できたら分ける意味が無いなとは思うのですが)

481:デフォルトの名無しさん
13/09/28 19:43:41.98 .net
>>466
Delphiユーザーですが、IdBaseComponent.dcuが存在するならば
そこへのライブラリパスが適切に設定されていないのでは?
という気がします。

482:デフォルトの名無しさん
13/10/08 16:46:16.13 .net
Delphi糞ユーザーは口をはさまないで下さい。うざいだけです。

483:デフォルトの名無しさん
13/10/08 20:14:26.21 .net
>>468
お前どこでも荒らしてるな
DelphiもC++Builderも持ってない癖に

484:デフォルトの名無しさん
13/10/08 20:45:58.37 .net
触らないほうが…

485:デフォルトの名無しさん
13/10/10 03:23:18.25 .net
エンバカってバグ取り=アップデート(要お布施)ってこと?
XE6が出ても、新規では10万するのかな

486:デフォルトの名無しさん
13/10/13 12:32:54.38 .net
リリースビルドの設定でパッケージを含んで動的リンクさせないような設定にしたいんだけど
毎回プロジェクト作るごとに設定するの面倒だからデフォルト設定にしたいんだけどそう言う設定ないの?

487:デフォルトの名無しさん
13/10/13 12:50:08.40 .net
よくわからんけど。
「プロジェクト」->「オプション」メニューから設定してない?
「ツール」->「オプション」から設定すればデフォにならない?

488:デフォルトの名無しさん
13/10/13 13:24:40.58 .net
ビルドの設定はわからなかったけど、フォーマッタって言うの見てたら
ソースの成形っていうメニューがあることを初めて知って設定して実行したらいい感じになった
VSだとある程度自動だけどこれいいな

489:デフォルトの名無しさん
13/10/14 10:02:24.58 .net
>>472
どのバージョンを使ってるのか分からないけど
プロジェクトのデフォルト設定はXEまではあったが、XE2からは廃止された
XE2からはオプションセットにプロジェクト設定を保存して、それを適用しろという事らしい

490:デフォルトの名無しさん
13/10/17 11:29:53.79 .net
Builder XE4でNMSMTPってみつからないんだけど?
なくなった?
Indy使えってこと?

491:デフォルトの名無しさん
13/10/17 19:24:33.34 .net
NM*とはずいぶん古いな。とっくに作ってた会社もなくなってる。Indyでどうぞ。

492:デフォルトの名無しさん
13/10/17 21:30:50.90 .net
入�


493:ヘ補完でキャストすれば行けるのに出てこない候補とかあるんだけど 設定とかあるの?



494:デフォルトの名無しさん
13/10/17 21:31:22.72 .net
あ、XEです

495:デフォルトの名無しさん
13/10/23 11:10:01.90 .net
XE4ってデフォでAPIがWCHARになってるんだけど
WriteFileって引数はWCHARで通るのに書き出されたファイルみると
ちゃんとなってない・・・
アスキーの"123"ってかきたかったのに"1 2 3 "ってなっちゃうんだけど
これcharでやろうとしたら逆にエラーでるし
どうしたらWCHARでちゃんとWriteFileでファイル作れますかね?

496:デフォルトの名無しさん
13/10/23 11:21:58.49 .net
あれ?
試しにサイズにsizeof(WCHAR)かけたらちゃんとかけた
lstrlenは文字数を返してるけどWriteFileのサイズってバイト数のままかこれ
でもサイズが半分しか指定してなくて何でWCHARの2バイトのままかかれるのかwからん

497:デフォルトの名無しさん
13/10/23 12:10:53.61 .net
内部は全部ユニコードだから

498:デフォルトの名無しさん
13/10/23 16:46:48.23 .net
XE4で質問
ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですが
コンストラクタでやっても消えてくれません。
Application->ShowMainForm = false;
これやっても消えてくれません。
起動時にどうやったらフォーム非表示で起動できますかね?

499:デフォルトの名無しさん
13/10/23 19:31:20.33 .net
ApplicationEvents配置して、OnActiveイベントに記述

500:デフォルトの名無しさん
13/10/23 19:35:46.81 .net
>>480-481
BOOL WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped)

HANDLE hFile; /* 書き込み先のファイルのハンドル */

LPCVOID *lpBuffer; /* ファイルに書き込むデータのアドレス */

DWORD nNumberOfBytesToWrite; /* 書き込むバイト数 */

LPDWORD lpNumberOfBytesWritten; /* 書き込まれたバイト数のアドレス */

LPOVERLAPPED lpOverlapped; /* 重複I/Oに必要な構造体のアドレス */

これでしょ?
引数は 
LPCVOID だからもとからバイト数だよ。

501:デフォルトの名無しさん
13/10/23 19:42:04.47 .net
だよな

502:デフォルトの名無しさん
13/10/24 05:28:10.04 .net
MainFormが表示されてから、表示を消さないといけない
MainFormが表示される前のタイミングで、表示を消しても無意味
ノーマルなやり方は
MainFormのOnActivate()イベントで、消すのが普通だろうな

503:デフォルトの名無しさん
13/10/24 09:10:40.83 .net
どういうのを作りたいのかよくわからんがフォーム自体いるのかね
消えたまま起動して後からまた表示させることもあるんかな
トレイに入れておくとか、あるいはバックで動かしたいのか
フォーム使わないなら最初から無いまま作ればいいんだし

504:デフォルトの名無しさん
13/10/24 09:40:11.62 .net
まあ、オプションの自動生成フォームから、MainFormを外せばいいんだけどね

505:デフォルトの名無しさん
13/10/24 11:55:35.09 .net
>>487
そこでfalseしても消えてくれない

506:デフォルトの名無しさん
13/10/24 12:39:30.47 .net
XE4とwin8で一回目にダイアログを実行してなにかファイルを選択して、
二回目にダイアログを実行したとき、フルパスで表示されます
ファイル名だけを表示させる方法を教えてください。
昔はファイル名だけが表示されたと思うんですが、、、、
URLリンク(www.dotup.org)

507:デフォルトの名無しさん
13/10/24 14:03:31.99 .net
>>489
それやると次は、「プログラムを起動しても何も起きません」ってなるんじゃね?

508:デフォルトの名無しさん
13/10/24 15:46:08.57 .net
>>483
フォームの~.cppじゃなくて、プロジェクト名.cppのRun()の前で
Application->ShowMainForm = false;
やるんじゃないの?

509:デフォルトの名無しさん
13/10/24 17:14:19.35 .net
Application->ShowMainForm = false; はコンストラクタでおk

510:デフォルトの名無しさん
13/10/24 19:26:03.98 .net
>>483で、

> ソフトを起動してからボタンを押すとメインフォームのVisible=falseにしたらフォームが消えるんですがコンストラクタでやっても消えてくれません。
> Application->ShowMainForm = false;
> これやっても消えてくれません。

って書いてあったから流れ的にコンストラクタで Application->ShowMainForm = false; やっても消えないという意味だと解釈してしまったが
質問者は コンストラクタで Visible=false しかやってないってことなのか。

>>493
自動生成のフォームのコンストラクタはもとからRun()の前だよ。

511:デフォルトの名無しさん
13/10/26 21:50:00.84 .net
コンポーネント作ってるんだけど、ファイル名を格納するStringで
オブジェクトインスペクタにファイル選択ダイアログを表示させるボタンを表示させたいんだけど
どうやったらいいのでしょうか

512:デフォルトの名無しさん
13/10/26 22:08:36.95 .net
プロパティを文字列型じゃなくてTFileName型に変えたらどう?

513:デフォルトの名無しさん
13/10/26 22:29:04.51 .net
>>497
出ませんね

514:デフォルトの名無しさん
13/10/26 22:44:08.65 .net
あら。ごめん。俺あんま経験なくてw
なんか、プロパティエディタ登録すればいいらしいんだが、
DesignIntf.pasやDesignEditors.pas,VCLEditors.pasのデフォルトや標準のエディタが
登録されてて、これで間に合わなければ自分で作るらしい。
登録にはRegisterPropertyEditorとかいう関数で。
って、俺じゃあれだから、プロの意見の待った方がいいな。

515:デフォルトの名無しさん
13/10/26 22:51:17.03 .net
VCLEditors.pasにTMPFileNamePropertyというTMediaPlayer用の
File Open Dialogを表示するプロパティエディタがあるから、これを真似れば
いいんじゃないかと思う。

516:デフォルトの名無しさん
13/10/27 15:44:18.10 .net
初歩的な質問ですみません。
for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが
必ず100回目で「sqrt domain error」が必ず出ます。
数値を色々変えてみても必ず起きます.
ssqrt domain errorはルートの中身が負のときでるエラーだと思うのですが
それ以外に出る原因はありますか?

517:デフォルトの名無しさん
13/10/27 16:20:24.52 .net
そう言う場合はまず作ってるプログラムから離れて間違っているのか確認してから
そうでは無いなと確信してから自分のプログラムを疑う物ですよ

518:デフォルトの名無しさん
13/10/29 13:52:21.53 .net
>>501
√に入れる変数にunsigned入れたらいいんじゃね?

519:デフォルトの名無しさん
13/10/29 14:24:43.48 .net
何でもassert

520:デフォルトの名無しさん
13/10/29 15:07:07.12 .net
デバッグすればいいだけじゃん
ループの100回目でブレークポントを張って
変数の値を確認すればよい

521:デフォルトの名無しさん
13/10/29 23:49:47.28 .net
スタックでも壊してたりしてな

522:デフォルトの名無しさん
13/11/05 17:38:05.77 .net
void __fastcall TForm2::ButtonWRClick(TObject *Sender)
{
char *tmp;
CamRegInfo ci;
ci.devaddr = 0xba; // dev addr

unsigned short val[3];
int addr = 0;
int data = 0;

tmp = strdup(EditAddr->Text.c_str());
sscanf(tmp,"%02x",&amp;addr);
free(tmp);

tmp = strdup(EditData->Text.c_str());
sscanf(tmp,"%02x",&amp;data);
free(tmp);

ci.devaddr = addr;
ci.data = data;
USBWriteData((unsigned char *)&amp;ci,6,0x07); // to I2C Controller
}

2010年くらいにいただいたビルダーのサンプルプログラムを今,実行しようとしていますが
[BCC32 エラー] Unit2.cpp(204): E2034 'wchar_t *' 型は 'const char *' 型に変換できない
[BCC32 エラー] Unit2.cpp(204): E2342 パラメータ '__s' は const char * 型として定義されているので wchar_t * は渡せない
というエラーがtmp = strdup(EditAddr->Text.c_str());に出ます.
調べるとこうするとエラーが取れました.tmp = strdup(AnsiString(EditData->Text).c_str());
しかし,新たに[ILINK32 エラー] Fatal: ファイル 'K.OBJ' を開けません
というエラーが出て困っています.

523:デフォルトの名無しさん
13/11/06 00:38:50.77 .net
それは困りましたね。

524:デフォルトの名無しさん
13/11/06 09:22:42.32 .net
Unicodeの意識が無さ過ぎ

525:デフォルトの名無しさん
13/11/06 10:02:11.48 .net
>>507
URLリンク(docwiki.embarcadero.com)
URLリンク(docwiki.embarcadero.com)


526:%E3%81%8A%E3%81%91%E3%82%8B_Unicode http://marupeke296.com/CPP_charUnicodeWideChar.html http://www.watercolor-city.net/ct_delphi/delphi_tiburon/



527:デフォルトの名無しさん
13/11/06 10:14:53.13 .net
>>509 スレタイ読め

528:デフォルトの名無しさん
13/11/06 10:23:07.10 .net
>>511
オマエのクソレスの方が何の役にもたってないことに気付けボケ

529:デフォルトの名無しさん
13/11/07 15:24:59.71 .net
仮想デストラクタをcppに書くと必ず、
「ここには記憶クラス"virtual"は指定できない」ってエラーが出るんだけど
どうしたらよいの?

530:デフォルトの名無しさん
13/11/07 17:28:29.26 .net
>>513
ヘッダに宣言書いているでしょ?
CPPに書くデストラクタの本体には virtual はつけない。
       ~~~~~~~~~~~~~~~~~~
もしCPPに書いているのがclass宣言で、その宣言に virtual をつけるのはOK

もしそのようにしているのに怒られると言うなら具体的にコードを書いてみて

531:デフォルトの名無しさん
13/11/07 17:32:54.63 .net
>>514
ありがとう!ヘッダに宣言書いていました

532:デフォルトの名無しさん
13/11/07 22:21:46.25 .net
System.DateUtils.hppをインクルードすると、
W8058 ヘッダーに初期化データが含まれているためプリコンパイルヘッダーを作成できない
ってエラーが出るのは、回避不可能なの?

533:デフォルトの名無しさん
13/11/07 22:38:52.41 .net
>>516
そんなのしょっちゅうだよ
インライン展開はほんとうに控えめだし

534:デフォルトの名無しさん
13/11/11 13:09:32.22 .net
継承される可能性のあるクラスは、仮想デストラクターを置けって言うけど、
ヘッダーファイルに↓の置いておくだけでよいの?
virtual __fastcall ~TSample();

535:デフォルトの名無しさん
13/11/11 13:32:23.26 .net
>>518
それでもコンパイルエラーは出ないけど、いざ実行されるとランタイムエラーが出るんだっけ
確かそんなはず

536:デフォルトの名無しさん
13/11/11 15:07:57.54 .net
>>519
特にエラーは何も出ずに実行できるのだが

537:デフォルトの名無しさん
13/11/11 16:58:02.35 .net
>>518
本体(デストラクタの実体)がないからエラーになるはずだけど

[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TSample::~TSample()' が x:\xxx\xxxx\xxxx.OBJ から参照されました

宣言したけど使っていない場合はエラーも出ないし実行に支障はない
これはメンバ関数も同じだよね

ヘッダーに書きたいなら宣言にあわせて実体も書いておくものじゃないだろうか。

virtual __fastcall ~TSample() { }

抽象クラスでの純粋仮想デストラクタを考慮するなら

virtual __fastcall ~TSample() = 0;

になるだろうし。
仮にその(>>518)宣言で問題にならないにしても、継承したクラスで問題起きるかもしれないから書いておいたほうが無難だとは思う。

538:デフォルトの名無しさん
13/11/11 16:58:31.24 .net
アプリの起動時に、しなきゃならない処理がたくさんあるんだけど
(INIファイルの読み込みとか)
メインフォームやスプラッシュフォームのコンストラクターとかに
書くと気持ち悪いから、アプリケーション初期化関連のメソッドを
並べたクラスを一つ作って、メインフォームのコンストラクターから
インスタンス作って全部やらせるのって、汚いやり方?
1つの仕事を順番にやるだけのクラスになるんだけど。

539:デフォルトの名無しさん
13/11/11 17:01:13.43 .net
>>521
これだと、"純粋関数定義の構文が正しくない"と怒られてしまうのだけど。。
virtual __fastcall ~TSample() { }

540:デフォルトの名無しさん
13/11/11 17:46:35.14 .net
>>522
別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出すだけじゃだめなの?

>>523
そのエラーがどういう状況で発生するのか良くわからないのでお役に立てない感じ。
どういうクラス宣言しているのかちょっと気になります。

541:デフォルトの名無しさん
13/11/11 17:52:53.52 .net
>>524
ありがとう。

> >>522
> 別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出すだけじゃだめなの?
メインフォームに関係ない処理を、メインフォームクラスに置くのは気が引けて。。

> >>523
> そのエラーがどういう状況で発生するのか良くわからないのでお役に立てない感じ。
> どういうクラス宣言しているのかちょっと気になります。
ごめん。IDEを再起動してみたら、普通にコンパイルできた。謎だ。

542:デフォルトの名無しさん
13/11/11 18:15:55.83 .net
共通なグローバルな初期化はメインのデータモジュール作って、データモジュールのコンスタラクタとかでやれば??
で、各フォーム特有の初期化は各フォームのコンストラクタでやる。
「プロジェクトオプション」の「フォーム」で指定する作成順序はメインデータモジュール->メインフォームの順で。
俺はだいたいそうやって作ってるけど。

大抵、データベースアプリとかで、グローバルな接続コンポはデータモジュール作って、そこに置くように、
その延長でそうしてる。

543:デフォルトの名無しさん
13/11/11 18:47:50.47 .net
>>526
TSQLDataSetとかTSQLConnection とかでなく、
自作のクラスを包含させるっていうこと?
ド素人で申し訳ない。。

544:デフォルトの名無しさん
13/11/11 18:59:36.66 .net
まず、データモジュールってコンポーネントはしってるんだよね??

グローバルな設定の初期化(終了化)するタイミングはデータモジュールのコンスタラクタ(デストラクタ)なわけで、
後は、君が書いたクラス次第でしょ。ここが何をして、どう使うクラスになってるのか全く想像できないから、
どう説明したらいいか・・

545:デフォルトの名無しさん
13/11/11 19:02:26.66 .net
えらそうに言わないでください

546:デフォルトの名無しさん
13/11/11 19:05:13.57 .net
それか、>>572はこういうことか。
もちろん、君のクラスはTComponent派生して、別にIDEに登録して使うわけじゃないと思うから、
TSQLConnectionみたく、IDEから貼り付けできないけど、そのクラスがインスタンスが
アプリの開始から終了までずっと、
存在する必要があるなら、データモジュールに、フィールド(プロパティ)を追加して、データモジュールの
コンストラクタ(デストラクタ)で作成・破棄してもいいし。そこはやっぱ、君のクラスが何してるか、どう使うか次第・・

547:デフォルトの名無しさん
13/11/11 19:14:23.95 .net
>>528
> まず、データモジュールってコンポーネントはしってるんだよね??
知らないんだ。リファレンスを見たところ、別のコンポーネントを一括管理するのかと思っているのだけど。

WinSocketの初期化、INIファイルのロード、各種スレッドの起動等を
メインフォームの表示前に終わらせてしまうのが目的。
元々やろうとしてたのは、この各処理を順々にやっていくパブリックメソッドを持った
アプリ初期化用クラスのインスタンスをメインフォームクラスで生成して、
そのメソッドをコールしようと思っていたのだけど。。

548:デフォルトの名無しさん
13/11/11 19:29:42.48 .net
>>リファレンスを見たところ、別のコンポーネントを一括管理するのかと思っているのだけど。
そう、それで、別にコンポーネントのためだけに使わなくてもいいわけで、そこに、グローバルなコンポーネント以外にも、
自作のグルーバルなクラスのインスタンスをプロパティ経由とかで、外部に公開してもいいわけで。そこはご自由にと。

>>元々やろうとしてたのは、この各処理を順々にやっていくパブリックメソッドを持った
>>アプリ初期化用クラスのインスタンスをメインフォームクラスで生成して、
>>そのメソッドをコールしようと思っていたのだけど。。
これをそのまんま使うなら、インスタンスの生成とメソッドコールを単にデータモジュールのコンストラクタに移動するだけ終わりじゃ?

549:デフォルトの名無しさん
13/11/11 19:33:15.87 .net
>>522でキミが 「メインフォームやスプラッシュフォームのコンストラクターとかに書くと気持ち悪い」と言ったコードを「データモジュール」のコンストラクタに書けばいいんだよ。

データモジュールは、C++Builderのバージョンがわからないのであれだけど、
自分のものは 新規作成→その他→C++Builderプロジェクト→C++Builderファイル にある

データモジュール自身にそれらを実行する関数を持たせて「別の関数作ってそこにたくさんの処理を書いてコンストラクタからその関数を呼び出す」ってのでもいいけど。

550:デフォルトの名無しさん
13/11/11 19:35:02.08 .net
クラス名は TDataModule ね

551:デフォルトの名無しさん
13/11/11 20:02:57.86 .net
説明不足で本当に申し訳ない。
汚いやり方とか、気持ち悪いとか言ったのは、
クラス名を動詞にするなとか、データがなくで振る舞い(メソッド)だけのクラスは良くないって
CODE COMPLETEやら、ほかのWEBサイトに書いてあったからなのです。
そういうクラスを作ること自体が、オブジェクト指向と外れているのではないかと。

552:デフォルトの名無しさん
13/11/11 20:43:39.99 .net
メソッドだけならクラスじゃなくて関数でいいしね。

データモジュールはヘルプみればわかると思うんだけど、
URLリンク(docs.code)


553:gear.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/Classes_TDataModule.html >また,データモジュールのユニットファイルにアプリケーション全体に適用されるものをすべて入れておくようにしてもよいでしょう。 っていう記述がある。 主に非ビジュアルコンポーネントを“一元管理する目的”の TDataModule なので、それはつまり複数のフォームやユニットからのアクセスを受けるということ。 そういう特性を利用して WinSocketの初期化、INIファイルのロード などのアプリケーション全体に影響する設定や処理をそこで行うということ。 ただし「各種スレッドの起動」に関してはそのスレッドが何をするものなのかにもよる気がするので。 データモジュールのユニットファイルにそれらを実行する関数を書く。 データモジュールのコンストラクタからそれを実行する。



554:535
13/11/11 21:01:01.58 .net
>>536
物凄くよく分かりました!ありがとうございます!
参考に一度実装してみようと思います!

555:デフォルトの名無しさん
13/11/12 15:12:44.63 .net
>>510
リンクありがとうございます.
一通り目を通しましたが,解決方法がわかりませんでした.
どの辺を特に見たらいいですか?

556:デフォルトの名無しさん
13/11/12 17:00:07.90 .net
シングルトンデザインパターンで実装すると、

マルチスレッド アプリケーションのコンストラクタでローカル静的変数を使うことは危険です

という警告が出るのですが、どう危険なのでしょうか。

557:デフォルトの名無しさん
13/11/12 17:40:58.25 .net
初期化コードが複数回あるいは同時に実行されることがある、という

558:デフォルトの名無しさん
13/11/12 17:42:13.78 .net
この話かな?
URLリンク(d.hatena.ne.jp)

559:539
13/11/12 18:39:32.34 .net
ありがとうございます。
マルチスレッド化する前にインスタンスが作られるのであれば、
#pragmaで消しても大丈夫な警告なのでしょうか?

560:デフォルトの名無しさん
13/11/12 19:56:40.06 .net
遅延生成をやめれば問題はない

561:539
13/11/12 20:26:11.82 .net
>>543
分かりました。ありがとうございます!

それから、関係ないのですが、クラス名の1文字目の"T"って何の略ですか?
"TApplication", "TForm", "TThread", "TCheckBox"等の"T"です。

562:デフォルトの名無しさん
13/11/12 20:44:20.00 .net
昔、OWLを作った人がTypeのTだと明言してた

563:デフォルトの名無しさん
13/11/13 16:44:57.65 .net
XE4でTChartなくなった??
発見できないんだけど

564:デフォルトの名無しさん
13/11/13 16:48:41.81 .net
あ、あったわ。
変なタブに潜んでた
まあしかしお前等ってほんと糞の役にも立たないゴミ虫だよなww

565:デフォルトの名無しさん
13/11/14 00:53:54.22 .net
TurboApplication、TurboForm、TurboThread、TurboCheckBox。

566:デフォルトの名無しさん
13/11/14 19:23:35.13 .net
XE4の品質は超クソだな
さすがにXE3から数ヶ月で出ただけのことがあるわ
で、このクソ品質を修正しただけのXE5に更新するには\40,000-って
どんだけクソな会社なんだよ…
今に分かった事じゃないんだけどさ

567:デフォルトの名無しさん
13/11/14 20:04:52.15 .net
ボーランド時代は安くて痒い所に手が届く使い勝手の良いコンパイラを提供してくれていたのだが

568:デフォルトの名無しさん
13/11/14 20:20:27.22 .net
それに無理があったからボーランドは手放したんでしょ?

569:デフォルトの名無しさん
13/11/15 01:00:43.35 .net
とりあえず今のC++ XE4 Update1で発生する不具合

・ビルド時にsaveMemのエラー?でコンパイラが起動出来無くなる事がある
・インクリメンタルリンクを有効にしているとビルド後のバイナリ起動時にDelayLoaderのエラー発生
・突然プロジェクトファイルに不正なタグが書込まれる ProjectExtensions問題 XE2から
・デバッグ実行のプロセス起動時にアプリケーションエラーでIDEごと落ちる

こんなにクソなんです
QCに入れたって日本人担当者とさんざん英語でやりとりした挙げ句、
再現出来ずだしな

570:デフォルトの名無しさん
13/11/15 01:43:24.74 .net
可哀想に。
あの「日本人担当者」はボランティアなので多くを期待するな

571:デフォルトの名無しさん
13/11/15 02:49:42.72 .net
QC 入れるときに 「高橋さんはコメントしないでください」
って一文入れとけばいいと思う。

552 のバグレポートって、何番?

572:デフォルトの名無しさん
13/11/15 18:42:10.89 .net
現象が再現しないってのはよくあることだわな
ちゃんと、再現性があるなら
その再現条件を明記しないからだろ
再現しないのは、特殊環境下でしか起きないこともあるしな
あるいは自作プログラムのバグが悪さをして不安定になってるとか
自分が遭遇したBuilderのバグは、ぐぐればまず間違いなく同じ現象が出てくるわ

573:デフォルトの名無しさん
13/11/16 02:04:02.26 .net
それは甘え。
特殊なのは高橋さんのほうかもしれないしな

574:デフォルトの名無しさん
13/11/16 10:40:50.67 .net
それは言いがかりに近いな

575:デフォルトの名無しさん
13/11/17 01:55:45.53 .net
「再現できない」ってのは「バグがない」ってことではないのだよ
「テストケースエラー」でもない。

言いがかりをつけているのはどっちかな

576:デフォルトの名無しさん
13/11/17 10:25:05.81 .net
キミだよ

577:デフォルトの名無しさん
13/11/17 10:52:17.44 .net
558 支持。

578:デフォルトの名無しさん
13/11/17 13:08:08.46 .net
言いがかりだよ

579:デフォルトの名無しさん
13/11/17 15:01:28.39 .net
BCB6で32bitアプリを作る時にはどうすれば良いんでしょうか。
16bitしか作れないんでしょうか。

580:デフォルトの名無しさん
13/11/17 15:16:10.42 .net
64bitアプリの間違いか?
BCB6ならすでに32bitアプリなんだが。

581:デフォルトの名無しさん
13/11/17 15:16:53.55 .net
何か作ったexeが16bitになってるんですが、どうしたらよいんでしょうか

582:デフォルトの名無しさん
13/11/17 15:26:14.61 .net
ああ、バージョン情報を含めるをチェックしたらバージョン情報が出てきました。

マイクロソフトのサイトに、exeファイルを右クリしてバージョン情報が出てこなかったら16bitアプリって
書いてあったんですが、右クリで出てきたので32bitなんですかね。

583:デフォルトの名無しさん
13/11/17 15:59:10.36 .net
32bitになってました。どうもありがとうございました。

584:デフォルトの名無しさん
13/11/17 16:18:23.61 .net
>>565
それはMSのアプリに限っての話だろう。
32bitアプリはバージョン情報を含める事も含めない事もできる。
16bitアプリはバージョン情報を含める事ができない。
MSは自社アプリには必ずバージョン情報を含めるからバージョン情報が出ないなら16bitアプリっていう判断なんだと思う。
あとMSでなくても市販のアプリは基本的にバージョン情報含めているから同じ。
個人開発だと必ずしも含めているとは限らないからその判定法は成立しない。

と、そういうことなんだと思う。詳しくは知らないのだけど。

585:デフォルトの名無しさん
13/11/18 10:49:06.19 .net
>>567 の素晴らしい考察に感動したっ!!
そして >>562 のあまりのお粗末さにも感動したっ!!

でさ、みんなちゃんとバージョン情報付けてる?
どうでも良いツールなんか手抜きしてバージョン情報付けなかったりするけど、
>>562に16bitあぷりでつか?って言われちゃうのか

586:デフォルトの名無しさん
13/11/18 10:53:04.82 .net
初心者版で初心者かもしれない人に何いってんだか・・

587:デフォルトの名無しさん
13/11/18 10:53:10.93 .net
XE2以降ではバージョン情報の設定機能はダメダメになってるよね
プラットフォーム別にバージョン情報を別に出来るって言うのは理解できるけど、
そのおかげで全ビルド構成で別々にバージョン情報が作られてしまう
「ビルド番号を自動更新」にすると、DebugとReleaseで別々のバージョン情報になってしまうという…

一体全体どういう連中が作ってるんだろうか

588:デフォルトの名無しさん
13/11/18 12:01:26.40 .net
XE2を使っています。
プロジェクトマネージャのウインドウで、各ユニットのフォルダ構造が
表示されていますが、この中でユニットになっていないものがあります。
(+ボタンを押すと、開くようになっていない)

プロジェクトファイルで、DependentOn


589:タグが付いていないユニットが 該当するようなのですが、このタグを直接プロジェクトファイルをいじらずに 付ける方法はございませんでしょうか。



590:デフォルトの名無しさん
13/11/18 12:23:21.74 .net
そこまで分かってるんならプロジェクトファイル直接書替えればいいじゃん?
あとは一度プロジェクトからソースを削除してもう一度追加してみるか

はっきりとは分からんけど、ヘッダファイルのインクルードガードのマクロ名で
ユニットになっているかどうかを判定しているように思えた

591:デフォルトの名無しさん
13/11/18 12:54:15.00 .net
>>572
ありがとうございます。
プロジェクトから削除~追加でユニット化されました。

インクルードガードのマクロ名で判定しているのは確かだと思います。
そのため、#pragma onceが使う機会を持てません。

592:デフォルトの名無しさん
13/11/18 18:10:46.44 .net
> 16bitアプリはバージョン情報を含める事ができない。

含める事ができないんじゃなくて、32bitWindowsからは「16bitアプリのバージョン情報」は読めない(バージョンタブが表示されない)ってだけかもしれないな。

593:デフォルトの名無しさん
13/11/20 08:54:28.16 .net
最近、XE2でコンパイルすると
[ILINK32 警告] Warning: プロジェクト名.ilc 0x00010000 / 0x08000000
[ILINK32 警告] Warning: unknown heap name : 0x08000000 / 0x08000000
[ILINK32 警告] Warning: エラーが検出されました(LME286)
[ILINK32 警告] Warning: インクリメンタル リンクを実行できません -完全リンクを実行中...
[ILINK32 エラー] Error: リンクを実行できません。

とか表示されてしまうのだけど、何故?

594:575
13/11/20 09:11:06.26 .net
ちなみに、PCを再起動するとコンパイルできるようになる。
IDE自体の再起動ではダメ。

595:デフォルトの名無しさん
13/11/20 12:13:11.66 .net
XPじゃないのか?
XE3SP1だったかSP2はそれで動かなくなってたな

596:デフォルトの名無しさん
13/11/20 13:09:50.04 .net
>>577
Win7

597:デフォルトの名無しさん
13/11/20 15:42:32.95 .net
LME286でぐぐるとなんかあるっぽいが

598:デフォルトの名無しさん
13/11/20 22:55:34.09 .net
>>575
Avastとかのアンチウィルス常駐してるなら一時的に無効にしから起動して作業しないとダメだよ
Avastが疑わしいexeとか強制でフックしちゃうから異常動作連発する

599:デフォルトの名無しさん
13/11/29 18:01:14.70 .net
DriveComboBoxでデフォルトドライブの変更方法教えて
DriveやItemIndexを弄っても全然変わってくれない

600:デフォルトの名無しさん
13/11/29 18:46:03.82 .net
>>581
Drive プロパティに代入するだけで変わるけど。
wchar_t 型だけど char 型で代入しようとしてない?
Enabled プロパティとか false になってない?

601:デフォルトの名無しさん
13/11/29 23:14:08.18 .net
何かiOSアプリの開発ができるようになるらしいが

602:デフォルトの名無しさん
13/11/30 01:50:47.22 .net
BCB6で、リッチエディットの上にマウスが乗った時のマウスカーソルを変更するのは
どうしたら良いんでしょうか 右向きの矢印が出ます

603:デフォルトの名無しさん
13/11/30 12:42:42.49 .net
リッチエディットのCursorをオブジェクトインスペクタで変更しておけばいいんじゃ?

604:デフォルトの名無しさん
13/11/30 21:32:02.58 .net
マウスカーソルの変更出来ました。ありがとうございました。

605:デフォルトの名無しさん
13/12/02 17:27:08.37 .net
TImageで質問
ストレッチがtrueで
Image1->Picture->LoadFromFileで画像を表示させて
Image1->Widthを変更して再度表示させても以前のサイズのままで
更に読み込むと指定した大きさになるんですがこれすぐ正常なサイズで表示するにはどうしたらいいんですか?
Image1->Picture=NULLにしてもすぐには変わってくれなかったです

606:デフォルトの名無しさん
13/12/02 20:23:23.70 .net
>>587
Image1->Picture->Bitmap->Height = height;
Image1->Picture->Bitmap->Width = width;

がいるんじゃないかな。

607:デフォルトの名無しさん
13/12/03 14:45:38.60 .net
>>588
ありがとうy、やってみる。

608:デフォルトの名無しさん
13/12/03 14:56:18.60 .net
ダメでした(´・ω・`)

609:デフォルトの名無しさん
13/12/03 18:12:27.49 .net
できますた( ´∀`)

610:デフォルトの名無しさん
13/12/06 13:37:24.07 .net
TJPEGImageでjpgを早く読む方法教えて
何かVBとか画像データの検証をオフにしてロードしたら早くできるみたいなんで
これにそういうのあったら教えてほしいですです

611:デフォルトの名無しさん
13/12/08 14:49:43.62 .net
Form1.cpp の中で
自分で作った関数や変数の宣言をするのと、

Form1.h の中のprivate: や public: の所で
自分で作った関数や変数の宣言をするのでは、

メモリ使用量やプログラムの大きさ等が何か変わってくるのでしょうか。

612:デフォルトの名無しさん
13/12/08 17:09:11.28 .net
オブジェクト指向プログラミング勉強してこい

613:デフォルトの名無しさん
13/12/09 09:23:14.60 .net
>>593
ヘッダに書くと小さいコードだとインライン関数になるか
メモリー使用量やプログラムの大きさは大きくなるけど速度は速くなる傾向。

>>594
オブジェクト指向プログラミングはあまり関係ないような気がする。
スモールトークにもJavaにもC#にもヘッダーファイルの概念は無いから。

614:594
13/12/09 10:32:01.94 .net
>>593の前者は非メンバで後者はメンバ、という読みだが >>595

615:デフォルトの名無しさん
13/12/09 11:28:50.09 .net
エスパー検定勉強してこい

616:デフォルトの名無しさん
13/12/09 13:21:54.02 .net
>>596
そういう意味か!!
てっきり、インライン関数かそうで無いかだと思ったよ。
すまん。

617:デフォルトの名無しさん
13/12/09 14:18:39.89 .net
オブジェクト指向はメモリやプログラムの大きさの事を考えて設計する方法では無い
そもそもオブジェクト指向勉強してこいとか、質問の答えにさえなってない

618:594
13/12/09 14:42:09.84 .net
じゃ質問に答えてやれよ

619:デフォルトの名無しさん
13/12/12 13:51:00.24 .net
スレッドのExecute()内で、StringGridを動的生成しようと
以下の様にしました。

TStringGrid *SG = new TStringGrid(this);

[BCC32 エラー] Get.cpp(103): E2285 'TStringGrid::TStringGrid(Get * const)' に一致するものが見つからない

エラーの意味が分からないのですが、
スレッド内で動的に生成してはいけないのでしょうか?
アドバイス頂けると助かります。

620:デフォルトの名無しさん
13/12/12 14:19:34.01 .net
スレッドのクラス内でthisでいいの?

621:デフォルトの名無しさん
13/12/12 14:34:32.90 .net
>>602

this はおまじないだと思っていました。
調べても良く分からないのですが、
空の StringGrid を作るには this の代わりに何を指定すれば良いのでしょうか?

作成したStringGridを貼り付けるGridFormを指定しましたが、
コンパイル時にエラーは出なくなりましたが実行時エラーが発生します。

TStringGrid *SG = new TStringGrid( GridForm );

622:デフォルトの名無しさん
13/12/12 15:18:04.94 .net
Execute内でStringGridの動的生成って、ダメじゃないけど豪快だな
Synchronize()とか使ってメイン側で更新する必要があるので、あまり意味がないことが多々ある

スレッド側で必要なのはStringGridではなく文字列の配列だったり、
スレッド生成時にStringGridも生成すれば十分だったりしないかな?

623:601
13/12/12 15:34:49.14 .net
有り難うございます。

やっぱり余りやらない方法なんですね。
経緯を話しますと現時点では、スレッド内からSynchronize()を使って
StringGridのテーブルを更新しています。
このSynchronize()を使った更新処理が重くてなんとかならないかと考え試行錯誤しています。
Queue()を使った方法も試したのですがStringGridがたまにちらつくのでイマイチでした。
(DoubleBufferedはtrueにしてあります。)

次に、StringGridの更新はスレッド内からしか行わないので、
StringGridをスレッド内で生成すれば、StringGridの所有権がスレッドになり、
Synchronize()しなくて済むので、
早く(並列)なるのでは無いかと考えて今に至ります。

勘違いしている点やアドバイスがあればお願い致します。

624:デフォルトの名無しさん
13/12/12 16:06:26.75 .net
TStringGrid(Get * const) 

なんだから、テキストファイルとかを渡すんだろ

625:デフォルトの名無しさん
13/12/12 16:34:01.69 .net
更新処理が重いなら間引くべきだと思うよ
毎回更新する必要があるなら、それは並列化できない、つまりスレッド化の意味がない

626:601
13/12/12 17:13:53.53 .net
有り難うございます。

間引く方向�


627:ナ検討したいと思います。 有り難うございました。



628:デフォルトの名無しさん
13/12/12 17:48:46.90 .net
スレ違いだけどこの仕様、C#でも受け継いでいて本当クソだと思うわ
ヘジたんこういう所はダメなのね

629:デフォルトの名無しさん
13/12/12 18:55:59.95 .net
>>605
アプリケーション内で使うStringGridはそのひとつなんでしょ?
ただ更新はスレッド側からのみ、メインでやると重くなる、という理由ってことだよね?

重くなるというのが、更新処理中に他のメッセージを処理しなくなりGUIが応答しなくなることを言っているのだろうか?
それとも単純に更新処理に時間がかかるという意味だろうか。

前者でCPUバウンドな更新処理なら TStringGridには Cols プロパティ(TStrings*)や Rowsプロパティ(TStrings*)というのがあるので、
スレッドに TStringList を用意しておき必要な更新処理をすべてこのTStringList に対して行う。
TStringGrid への反映は Synchronize()で Cols プロパティや Rowsプロパティでスレッドの TStringList をAssign してあげればいいんじゃないだろうか。
極力 Synchronize() での処理はデータのコピーにとどめておけばいいと思う。

前者で演算よりもGUIの更新自体(例えば大量の Cells プロパティを更新するなど)が多いなら、
更新処理の合間に適度に TApplication::ProcessMessages を入れてあげればいいと思う。

後者で、単純に更新処理に時間がかかるというなら、更新処理を見直せとしか。

あとStringGridの所有権が誰だろうと、可視コンポーネントはWindowsメッセージによって(つまりメインスレッドで)制御されているのでSynchronize()しなくて済むということはないよ。

630:デフォルトの名無しさん
13/12/12 19:09:59.46 .net
Application->ExeName が化けてるんだけど
Win32のフォルダんとこが.\\.とかなってるし
これちゃんと取る方法おしえてくださ
C++BuilderXE4

631:デフォルトの名無しさん
13/12/12 20:07:55.27 .net
C++11から本格的にマルチスレッドと同期サポートが入ったから、案外行けるかも
あ、VCLはObject Pascalで書かれてるんだっけorz

.NETも4.5からAsync入ったしうかうかしてると横取りされちゃうぞ

632:デフォルトの名無しさん
13/12/16 15:00:24.58 .net
BCB6でデバッグの時にF12キー押したら出てくるCPUウインドウを出さないように出来ますか

633:デフォルトの名無しさん
13/12/16 15:24:03.19 .net
CPUを外してください
そうすれば出なくなりますから

634:デフォルトの名無しさん
13/12/17 18:35:10.82 .net
CPU外してもF12押したら出ました・・
嘘言うのはやめてくださいしんでください

635:デフォルトの名無しさん
13/12/18 02:12:28.70 .net
>>615
可哀想に幻覚が見えるのか
精神科をすぐに受診してください

636:デフォルトの名無しさん
13/12/18 11:20:06.65 .net
wmain だったら BCB6 では無理かも。

637:デフォルトの名無しさん
13/12/21 15:16:38.70 .net
BuilderXE4で実行時にPanelのColorを変更するとキャプションが消えるバグがあるのですが
これを回避する方法を教えてください

638:デフォルトの名無しさん
13/12/21 15:28:12.77 .net
できた

お前等ってほんと糞の役にも立たないゴミだな^^

639:デフォルトの名無しさん
14/01/09 16:59:04.02 .net
TPopupメニューをOwnerDrawする時に
表示されるメニューの幅と高さを任意に指定する方法をおしえて

640:デフォルトの名無しさん
14/01/09 22:03:01.66 .net
OnMeasureItemでWidthとHeightを変更する

641:デフォルトの名無しさん
14/01/24 11:57:52.15 .net
C++Builder2010でSQLConfigDataSourceがリンカエラーになるんだけど
odbccp32.libを追加してるのに。
ちなみに、XPでは正常にリンクできたのにWin7だとリンカエラーになるのですが
Win7でもちゃんとリンクする方法を教えてくださ

642:デフォルトの名無しさん
14/01/31 11:46:42.51 .net
印刷するのにお勧め�


643:フコンポーネント教えて



644:デフォルトの名無しさん
14/01/31 15:43:16.58 .net
FastReport

645:デフォルトの名無しさん
14/02/01 16:32:08.39 .net
Delphi XE4 Professionalを持ってるんですが、
C++BuilderXE5 Starter
のアップグレード版は使えますか?

646:デフォルトの名無しさん
14/02/01 18:54:26.64 .net
問題ありません。

647:デフォルトの名無しさん
14/02/01 18:57:33.18 .net
あー、
> Delphi StarterとC++Builder Starterの両方を購入して1つのマシンにインストールして「Mini RAD Studio」のように使うことはできますか?
> いいえ、1つのコンピュータには、1つのStarterエディションしかインストールすることができません。

なので、VMでも何でもいいので別のWindowsがいるので注意してね。

648:デフォルトの名無しさん
14/02/01 18:59:06.09 .net
いやもうデルファイ使わないんでC++さえ使えればいいですw

649:デフォルトの名無しさん
14/02/01 21:01:02.00 .net
コンパイラはx86でC++11対応じゃないので、そこも気をつけて。

650:デフォルトの名無しさん
14/02/04 11:46:48.55 .net
>>624
FastReportどこのタブにありますか?
言い忘れてましたがC++Builder2010ですう

651:デフォルトの名無しさん
14/02/04 11:51:13.48 .net
EX4にはFastReportのタブあったけど
2010には無いから2010ではFastReport使えないっぽいですねこれ
QuickReportも無いっぽいしどうしたらいいのこれ

652:デフォルトの名無しさん
14/02/04 15:07:59.35 .net
残念だけどRave Reports

653:デフォルトの名無しさん
14/02/04 16:32:54.59 .net
Rabeタブはありますが、Reportsがありませんえん

654:デフォルトの名無しさん
14/02/04 16:33:28.11 .net
Raveです、かみまみた

655:デフォルトの名無しさん
14/02/04 16:37:20.60 .net
あ、でも、RaveProjectで何か印刷のアレをビジュアルでできそうです
どうせ糞だろうけど頑張ってやってみますありがとうございました糞野郎共

656:デフォルトの名無しさん
14/02/06 16:46:38.48 .net
SOAP通信できるコンポーネント教えて

657:デフォルトの名無しさん
14/02/06 16:56:59.54 .net
TSoapConnectionを発見した!!XE4
んで、送受信はどうやってやるの?

658:デフォルトの名無しさん
14/02/10 13:52:08.67 .net
"44Op44O044Kn44Or44OK"みたいなUTF-8でアレされてるのを戻す方法を教えてください
C++BuilderXE4です。

659:デフォルトの名無しさん
14/02/14 14:01:54.52 .net
>"44Op44O044Kn44Or44OK"みたいなUTF-8でアレ
よくわからん。日本g

660:デフォルトの名無しさん
14/02/20 11:40:21.94 .net
TOpenDialogでInitialDirを指定しても直前に開いたとこを開くんだけど
ちゃんと指定したフォルダを開く方法を教えてください

661:デフォルトの名無しさん
14/02/20 11:58:06.80 .net
URLリンク(hpcgi1.nifty.com)

662:デフォルトの名無しさん
14/02/20 15:39:58.88 .net
>>641
サンクス、確かにOSはWin7でXPではちゃんといってたけど

しかし、C++BuilderXE4のバグなのかわからないんだけど
ExtractFileDir( Application->ExeName )で取得したexeのパスがバグってる
exe作るとWin32フォルダにdebugフォルダが作成されてそこで実行してるけど
取得したパスが必ずWin32フォルダの前に\.\が入ってる
これのせいでDialogのInitialDirやFileNameに指定してもうまくいかなかったんだけど
これちゃんとパスとる方法ありますかね?

663:デフォルトの名無しさん
14/02/20 15:47:14.24 .net
正規化

664:デフォルトの名無しさん
14/02/20 16:03:01.36 .net
いや意味わかんないです

665:デフォルトの名無しさん
14/02/20 17:45:06.74 .net
つ ExpandFileName

666:デフォルトの名無しさん
14/02/20 19:12:22.42 .net
>>645
ありがとう、感動した。
ExpandFileNameをかましてやったらちゃんとパスがアレしてくれました

しかし今までちゃんとできてたのに急に腐った仕様に変えないでほしいなあ園馬鹿ってやっぱ馬鹿なんだな

667:デフォルトの名無しさん
14/02/20 19:54:49.15 .net
勝手に相対になっちゃうの?

668:デフォルトの名無しさん
14/02/21 10:19:05.00 .net
パスを見るとフルパスになってるんだけど
何故かWin32フォルダの前に必ず\.\が付加されてる。
ちなみに、Win32フォルダが無い別フォルダで実行するとちゃんとしたパスがゲットできてる

669:デフォルトの名無しさん
14/02/21 10:34:00.47 .net
OSの仕様が絡んでいそうな・・・ よくわからんけど

670:デフォルトの名無しさん
14/02/21 15:19:09.05 .net
設定ファイルか何かでそう書いてるだけじゃないの
今まで気�


671:テいてないだけとか



672:デフォルトの名無しさん
14/02/21 15:57:13.01 .net
リンカのファイル出力先がそうなってるから、
デバッガに渡される実行ファイルのパスもそうなる

リンカの出力先指定:.\$(platform)\$(config)

673:デフォルトの名無しさん
14/02/22 02:07:21.82 .net
プロジェクトオプションでC++(共有オプション)の中間出力と最終出力ディレクトリにある.\を削除すればOK

674:デフォルトの名無しさん
14/02/22 02:11:20.47 .net
追記 参照ボタン押すとフルパスになるから文字列からダイレクトに削除してね

675:デフォルトの名無しさん
14/03/04 10:32:24.33 .net
>>651-653
それやっちゃうと違うPCやフォルダ変えてコンパイルする時はまたその設定が必要なのでは?

676:デフォルトの名無しさん
14/03/06 11:19:51.13 .net
XE4のTMediaPlayerで現在再生中かどうかを調べる方法を教えてください

677:デフォルトの名無しさん
14/03/06 12:08:12.17 .net
Modeプロパティで分かるよ

678:デフォルトの名無しさん
14/03/06 14:07:45.92 .net
ゴメン、Modeじゃ分からんかったわ
Notify = trueにして再生開始して、OnNotifyイベントで成功が通知されたら再生終了だ
現在再生中という情報を直接取ることは出来ないみたい
俺がやったのはOnNotifyでMode==Playingで処理結果が成功なら再生終了と判定したよ

679:デフォルトの名無しさん
14/03/06 14:11:17.42 .net
>>657
ありがとうございます。
OnNotifyは終了だけを検知したかったのでNotify=falseで使いたいんですが
自分で再生したのはわかるのでOnNotifyが来たら終了って判断できるのですが・・・
そういうのがあったらアレかなとおもって聞いてみましたがアレでしたね

680:デフォルトの名無しさん
14/03/06 14:29:56.39 .net
ほんとアレっすよね

681:デフォルトの名無しさん
14/03/06 15:11:36.52 .net
言うほどアレでもなかったわ

682:デフォルトの名無しさん
14/03/06 15:18:52.18 .net
つーか、今改めて試してみたけど>>656でおkかも
Notify=falseならModeで再生中とそれ以外の区別がついてる感じ

683:デフォルトの名無しさん
14/03/06 15:32:48.53 .net
フォーム非表示の状態で作成されたフォームのListViewがクリアできない
一旦表示させないとListView->Items->Clear( )受け付けてくれないんだけど
これ非表示のままならどやってリストビュークリアしたらいいの??

684:デフォルトの名無しさん
14/03/06 15:42:40.54 .net
Update() やってみるとか(適当・未確認)

685:デフォルトの名無しさん
14/03/06 17:18:43.59 .net
>>663
ダメでしたよ。

686:デフォルトの名無しさん
14/03/07 00:06:06.17 .net
Handleを取得してみる

687:デフォルトの名無しさん
14/03/07 10:22:10.84 .net
>>665
それから?

688:デフォルトの名無しさん
14/03/07 20:28:14.79 .net
>>662
どういう状況かよく分からない
その症状が出る最小のコードでも晒してくれればと思うが。

少なくともこちらでは「フォーム非表示の状態で作成されたフォーム」での
ListView->Items->Clear( )は正常に出来ている。

689:デフォルトの名無しさん
14/03/08 00:04:52.41 .net
>>666
処理の前にHandleNeededを呼ぶってこと

690:デフォルトの名無しさん
14/03/11 16:18:17.81 .net
>>667-668
返信遅れて申し訳ない
C++Builder5の時からそうだったんだけど
普通にフォームにListView貼り付けて設計時にデータ入れときます
んで、そのフォームのコンストラクタでListView->Items->Clear( )すると消えてくれない

ちなみに>>662で非表示でクリアできないうんぬんは消すタイミングの問題で
別フォームのボタンを押したらListViewのあるフォームのListView->Items->Clear( )したら消えますよ

691:デフォルトの名無しさん
14/03/11 16:21:09.46 .net
>>668
ちなみに、フォームのコンストラクタで
HandleNeeded();
ListView->Items->Clear( );
やっても消えませんでした。

692:デフォルトの名無しさん
14/03/11 16:22:49.04 .net
あ、すみません。
間違いました。
↓ですよね。
ListView->HandleNeeded();
ListView->Items->Clear( );
これやったらちゃんと消えましたすみまsん

693:デフォルトの名無しさん
14/03/11 18:16:53.03 .net
おめでとさん

694:デフォルトの名無しさん
14/03/11 19:58:50.41 .net
久々に引っ張りだしてBCB6使いましよ。
未だに便利だな。

695:デフォルトの名無しさん
14/03/11 20:56:45.64 .net
故Winny作者も使ってたBCB6


696:



697:デフォルトの名無しさん
14/03/12 10:09:18.17 gNDuFwAY.net
>>672
ありがとゆ

しかし、長年CBuilder使っててHandleNeededって初めて知ったぽ・・・

698:デフォルトの名無しさん
14/03/12 12:04:47.65 QsWejUh6.net
XE4までは使ってたんだけど64bitがClang使ってて怪しいし、C#の方が便利なんで
最近こちらばかり使っている

699:デフォルトの名無しさん
14/03/12 12:56:32.95 9wY/JUzG.net
正解

700:デフォルトの名無しさん
14/03/12 14:14:10.21 gNDuFwAY.net
C++BuilderでC#って出てる?

てか、ここID出るよういんあったのね。

701:デフォルトの名無しさん
14/03/12 15:03:45.80 n+Y+ZrF5.net
以前は.NET向けの何かがあったが今は無いよ
>>676 はVS使ってるって事でしょう

702:デフォルトの名無しさん
14/03/13 21:22:18.12 2KMiQ96l.net
ちなみにBCB6からはどれに移行するのが便利かな?
最新の安いの買えば古いのは落とせるんだよね?

703:デフォルトの名無しさん
14/03/14 00:00:21.88 Ar+khIgg.net
まず2007。次はXE5で。古いのが使えるのはPro以上で、Arcだろうがアカデミックは除外。

704:デフォルトの名無しさん
14/03/14 09:49:14.65 OyQukPKW.net
Unicode以前に移行するくらいなら6のままで良いんじゃないの?
ちなみにC++はXE以降で何も変わってないよ
それどころかXE2以降では訳の分からん不具合が結構ある
2009から使ってるけど、Win32VCLならXEが一番まともだと思う

705:デフォルトの名無しさん
14/03/14 10:22:00.41 E4e1CSrP.net
>>681
>>682
ありがとう。最新版への移行は試してみたんだけど、確かにUnicode周り
が大変な感じだった。コンパイラは変わってないのね。
2007借りて試してみてダメだったら6のまま現役で作ります。

706:デフォルトの名無しさん
14/03/14 13:28:13.98 1agqAwAb.net
2007はバグ多いからお勧めできんけど。

707:デフォルトの名無しさん
14/03/14 15:14:33.31 OyQukPKW.net
仕事で6使ってるの?
まだまだ結構いそうだけど

708:デフォルトの名無しさん
14/03/15 10:16:32.35 2N6ROkeB.net
6も最初バグだらけだった気がした

709:デフォルトの名無しさん
14/03/15 11:08:01.76 bzLcn0oj.net
6+Upd4だっけ

710:デフォルトの名無しさん
14/03/16 05:58:29.84 nUsKxNa+.net
6はデバッガに問題がある

711:デフォルトの名無しさん
14/03/17 05:40:28.03 r15lmn2t.net
いまだに5を使っている

712:デフォルトの名無しさん
14/03/17 10:12:10.52 STcoURnP.net
5って一番よかったわ。
俺もまだ5を使ったりするけど最近はXE4が多いかな64ビットアレできるし

713:デフォルトの名無しさん
14/03/18 15:09:16.49 qmOr3Dts.net
TListViewはどやって動的に作成するの?
ListView1 = new TListView( this );
で作成してもAddすると落ちるんですが

714:デフォルトの名無しさん
14/03/18 16:01:40.93 giRVVYry.net
thisはどこ指してる

715:デフォルトの名無しさん
14/03/18 17:56:10.93 rfN06h31.net
>>692
クラス自身。だからクラスのメソッド内でしか使わない。

class hoge{
private:
class hoge *this;
};
こういうこと
多少の差異はあるものの

716:デフォルトの名無しさん
14/03/18 17:57:13.04 rfN06h31.net
>>690
1使ってる俺に謝れ

717:デフォルトの名無しさん
14/03/18 19:22:32.30 nfn1DUZV.net
>>693
>>692が聞いてるのはそういうことじゃなくて、thisとして何を渡してるのかなんだと思うが。
この場合のコンストラクタのパラメータには既に表示済の(hwndが有効な)TWinControlか
その派生クラスのインスタンスを渡すのがいいと思う。普通はTListViewを乗せるフォームかな。

718:デフォルトの名無しさん
14/03/18 19:26:19.29 +03dJUij.net
1も使ったことある
超昔に会社で
Delphi2 相当で
後に連番が繰り上がって 2 がなくて
3,4,5 になっていったのを克明に覚えている

719:デフォルトの名無しさん
14/03/18 21:07:14.3


720:7 ID:cZ3kjopq.net



721:デフォルトの名無しさん
14/03/18 23:12:28.25 VHoYM8as.net
>>693
横着せずにまずは新しいプロジェクト作って簡単なコードで TListView を動的作成したほうが原因つかみやすいだろ。
ちゃんとParent設定してるかとか。

722:デフォルトの名無しさん
14/03/20 15:53:38.30 ZOtvmQUF.net
XE5ってXE4から何が変わったの?何か追加された?

723:デフォルトの名無しさん
14/03/20 15:59:12.78 oBNShYHt.net
全く何も変わってない
不具合もそのまま

724:デフォルトの名無しさん
14/03/24 17:16:54.97 jkhS/0AK.net
よし!じゃあ今から注文するわ

725:デフォルトの名無しさん
14/03/25 17:19:10.70 6CkDQtbn.net
XE4が腐った。
ソースをコピペしたら意味不明なエラーが出てコンパイルするとリンクエラーが出るようになる。
再起動したらまたちゃんとコンパイルもリンクもできるけどめんどい
エロい人助けてエロい人

726:デフォルトの名無しさん
14/03/25 17:25:29.82 8L+P/Z2e.net
もうちょっと具体的に書いたら

727:デフォルトの名無しさん
14/03/25 17:26:38.41 CSTEObew.net
XE5を買いなさいと言うエンバカからのお告げじゃない?
まったく直ってないと思うけど
意味不明なエラーってどんなんだよ

728:デフォルトの名無しさん
14/03/25 17:28:34.86 TO7HBHku.net
>>702
エラー内容も書かないとかw

再インストールしろ

729:デフォルトの名無しさん
14/03/25 17:33:33.93 lCjhtacd.net
ユーザーに致命的なエラーが発生しました

730:デフォルトの名無しさん
14/03/25 17:53:04.92 6CkDQtbn.net
だって、エラー内容書いたってお前等馬鹿だからどうせ解決しないし
>>703-706みたいなゴミレスは不要なんですよ。
知らないならレスしないで下さい。ウザいだけです。

731:デフォルトの名無しさん
14/03/25 18:05:36.46 lCjhtacd.net
既にNGに入ってます

732:デフォルトの名無しさん
14/03/25 18:21:57.56 TO7HBHku.net
解決するかどうかは別として開発者ならエラー内容なしにエスパーするのは難しいって知っていると思うが。
専ブラの初心者ユーザ並みの能力だな。

733:デフォルトの名無しさん
14/03/25 18:38:09.70 8L+P/Z2e.net
ゴミ箱に放り込みました

734:デフォルトの名無しさん
14/04/02 16:12:11.76 t1Fz8vI4.net
C++Builderで作ったっぽいプログラム資源がある
ただしC++Builderのバージョンや、
どんなカスタマイズ(コンポーネントやパッケージ)を用いているのか
さっぱり不明

プログラムの修正依頼をされたけど
最新版のXE5を使えば、開発できるもんなの?
やってみたが、コンパイルエラーが腐るほど出る

735:デフォルトの名無しさん
14/04/02 16:28:11.27 XXXtG5bC.net
首吊る準備した方が早いな

736:デフォルトの名無しさん
14/04/02 17:42:58.20 4mJ5OkVZ.net
コンポーネントの行方次第だな

737:デフォルトの名無しさん
14/04/02 19:06:32.00 fe4YAVY6.net
行方(ゆくえ)

738:デフォルトの名無しさん
14/04/02 20:42:56.15 jXqwXVYI.net
ActiveXとか使われてると最悪

739:デフォルトの名無しさん
14/04/02 20:50:12.64 dFeJg3uF.net
>>711
コンパイルエラーの始めの辺りを貼れ

740:711
14/04/03 09:16:33.75 c6M8SUjY.net
>>all
サンクス

>>716
本当にこれでいいのかよくわからん資源を集めて
PGを修正しまくって
コンパイルはどうにか通した
ただ、リンクでエラーになる

[ilink32 エラー] Fatal: シンボル @$xp$25Endigrph@TDibGraphicClass の
サイズがゼロか、オフセットが大きすぎます
(モジュール 'C:\PROGRAM FILES\EMBARCADERO\
20786_EN


741:VISION_IMAGE_LIBRARY\ENV201\TRIAL\CB6\ENDIGRPH.OBJ' 内) EnDiGrph.hpp obj dcu は無かったのでダウンロードした資源



742:711
14/04/03 15:06:39.14 c6M8SUjY.net
Envision Image Library とかいうのを
取り込んでいるっぽい
それが古い版だったのでXE5対応のやつをパッケージで
取り込んだ

しかしdcuファイルはあるが、hppファイルが無いため
クラス定義なしのエラーになる

743:デフォルトの名無しさん
14/04/03 19:37:58.06 03j6Q/GA.net
ああなんかそのエラーとかって requires セッションになんか加えるんだっけな?

744:デフォルトの名無しさん
14/04/10 11:41:05.83 hCZjGgXU.net
EX4のTProgressBarで質問です
ProgressBar->Max = 100;
ProgressBar->Position = 0;
for( int i = 0; i < 100; i ++ ){
 ProgressBar->Position ++;
}
ProgressBar->Position = 0;
こうした時にProgressBarの表示が半分くらいのとこで終わるのですが
最後にPosition=0をしないと最後まで表示はされますが
処理が終わってからProgressBarが最後まで行くまでに時間がかかってます。
これ以前のようにPosition++した瞬間にProgressBarの描画がされるようにする方法を教えてください

745:デフォルトの名無しさん
14/04/10 13:27:41.43 MBnprmD9.net
Repaint

746:デフォルトの名無しさん
14/04/10 13:58:03.40 BMsuBXEr.net
Invalid Update Repaintについてはここ見るよろし
URLリンク(kwikwi.cocolog-nifty.com)

747:デフォルトの名無しさん
14/04/10 15:53:27.45 cHkBS6BK.net
僕が提出したノートは2冊だっけな?

748:デフォルトの名無しさん
14/04/10 17:36:41.17 hCZjGgXU.net
>>721-722
いえいえ、そういうことを言ってるのではなくてですね
TProgressBarが意図的に推移バーを遅延させてるんですよこれ
XE4で>>720やってみてもらうとわかるとおもいますが
そして>>723は視ね

749:デフォルトの名無しさん
14/04/10 18:06:04.55 CRnY9LL7.net
Application->ProgressMessage() じゃないの?
最後まで言ったのに描画更新が行われず前回の更新時の画面で止まるってのはたまによくまれにある。

あとプロパティ値に対して ++ ってOKだっけ?

>__property int Position = {read=GetPosition, write=SetPosition, default=0};

展開すると GetPosition()++ 見たいになる的な糞な仕様があったけど、
当然改善されているのかな?

ProgressBar->Position = i+1;

に変えるか

ProgressBar->Position = ProgressBar->Position +1;

にするかとか。
EX4なんて新しいもの持ってないんで最近のことはよくわかんね。

750:デフォルトの名無しさん
14/04/10 19:00:03.95 coZ4bcw7.net
ProgressMessage()
ってはじめてみた

751:デフォルトの名無しさん
14/04/10 19:17:35.95 UFqHLSfk.net
Application->ProcessMessages()か

C#で言うとApplication.DoEvents()みたいな
XPマシン電源消したからわからん

752:デフォルトの名無しさん
14/04/10 19:58:45.76 ZTfayk7W.net
×ProgressMessage()
○ProcessMessages()

ループ処理させる時とかでイベント割り込ませるのによく使うよな
掴んだままだと応答なしとか出て行儀の悪いプログラムになるし

753:デフォルトの名無しさん
14/04/10 20:06:46.33 CRnY9LL7.net
あーそれそれ。

754:デフォルトの名無しさん
14/04/10 20:32:29.24 J0ZVG4eI.net
ProcessMessagesで、手動でメッセージループを回すケースが必要になるなんて
どっちかというと、プログラムの設計が行儀悪いからだと思うけど。
プログレスを表示するってことはそもそも、ある程度時間のかかる処理なわけで、
そんな処理をUIスレッドで行なおうとするからProcessMessagesせざるを得なくなるわけで、
サブスレッドでそもそもやれと思う。

755:デフォルトの名無しさん
14/04/10 20:35:06.53 coZ4bcw7.net

またスレタイ読めない人


756:が出現



757:デフォルトの名無しさん
14/04/10 20:42:37.46 /AIMsHz9.net
HandleMessage() もさほど変わらん

758:デフォルトの名無しさん
14/04/10 20:58:17.17 J0ZVG4eI.net
>>720
つか、そもそも、Windowsシステムにおいて描画の処理って優先度低くて、暇な時やるってスタンスだから、
for( int i = 0; i < 100; i ++ ){
 ProgressBar->Position ++;
}
でループで頻繁に回しても、描画まとめられちゃうからね・・

759:デフォルトの名無しさん
14/04/11 13:13:27.96 bepIv9hm.net
>>733
いえいえ、違います>>720は例です
以前はちゃんと描画されてた(Builder5)ので
いつからかはわかりませんが、勝手に遅延描画されてるんですよ

760:デフォルトの名無しさん
14/04/11 18:05:40.10 73QXDgv6.net
>>734
自分(>>725)もBuilder5持ってる、試してみたけど確かになるね。
2009で試したけど、こっちもなる。

MarqueeInterval というプロパティ値は?
>アニメーション表示の更新間隔(ミリ秒)。これにより、強調表示部分が動く速度を設定します。デフォルトは 10 ミリ秒です。値を大きくするほど、速度は遅くなります。
2009でのデフォルトだと10(ミリ秒)
Builder5にはなかったプロパティ。

確認してもダメと言うことならたぶんコントロールとしての動作仕様が変わったとかじゃない?
とりあえず ProgressBar->Positionを更新した後にProcessMessages()を呼び出せばちゃんと更新されるようになる。
もしそれでも更新されないならコードがおかしい(最適化のせい)とかかも知れない。

761:デフォルトの名無しさん
14/04/11 21:41:50.01 G2hHL9t4.net
VisualStyleの影響とか、VCL Styleの影響って事はない?

762:デフォルトの名無しさん
14/04/13 02:21:43.71 An7WAIh1.net
> ProgressBar->Position ++;
この書き方はしたこと無かったな、自分は
ProgressBar->StepIt();
いつもこう書いている
あるいはStepBy(1);
違いがあるのか、無いのかは知らないが

763:デフォルトの名無しさん
14/04/13 12:31:07.74 HXOgCYL2.net
最近XE4 C++ Builderを使い始めた初心者ですが、次のような
コードでエラーが出ないのは何故でしょうか?

char *ptr = "ABCD";
*ptr = 'X';

普通Visual Studio 2010等ではコンパイル・エラーとなりますが、
XE4ではコンパイルが通ってしまいます。。。。(´・ω・`)
XE4の場合は上記のようにポインタを文字列リテラルのアドレスで
初期化する際に、明示的にconst修飾子を付けない限り、文字列
はconst領域のデータ・セグメントには格納されないのでしょうか?
それともコンパイラの警告オプションの設定の問題でしょうか?

初歩的な質問ですみません。

764:デフォルトの名無しさん
14/04/13 14:55:05.57 PtXBUBAS.net
URLを貼ろうとしたら「さくらが咲いてますよ」と言われるんだが

-dcオプション

無視されるみたいだけど

765:デフォルトの名無しさん
14/04/30 18:44:48.10 lAKrL3qN.net
ボタンのAnchorsで設計時にLeftとBottomして
実行すると配置より上にボタンが表示されちゃいます。
フォームはMDI子フォームでBorderStyle=bsSizeable
何が原因ですかね?
ちなみに他の画面でも同じ事やってるフォームありますがそっちは正常です。
Builder5


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