くだすれ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/
2013/12/02(月) 20:23:23.70
>>587
Image1->Picture->Bitmap->Height = height;
Image1->Picture->Bitmap->Width = width;

がいるんじゃないかな。
589デフォルトの名無しさん
垢版 |
2013/12/03(火) 14:45:38.60
>>588
ありがとうy、やってみる。
590デフォルトの名無しさん
垢版 |
2013/12/03(火) 14:56:18.60
ダメでした(´・ω・`)
591デフォルトの名無しさん
垢版 |
2013/12/03(火) 18:12:27.49
できますた( ´∀`)
592デフォルトの名無しさん
垢版 |
2013/12/06(金) 13:37:24.07
TJPEGImageでjpgを早く読む方法教えて
何かVBとか画像データの検証をオフにしてロードしたら早くできるみたいなんで
これにそういうのあったら教えてほしいですです
2013/12/08(日) 14:49:43.62
Form1.cpp の中で
自分で作った関数や変数の宣言をするのと、

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

メモリ使用量やプログラムの大きさ等が何か変わってくるのでしょうか。
2013/12/08(日) 17:09:11.28
オブジェクト指向プログラミング勉強してこい
595デフォルトの名無しさん
垢版 |
2013/12/09(月) 09:23:14.60
>>593
ヘッダに書くと小さいコードだとインライン関数になるか
メモリー使用量やプログラムの大きさは大きくなるけど速度は速くなる傾向。

>>594
オブジェクト指向プログラミングはあまり関係ないような気がする。
スモールトークにもJavaにもC#にもヘッダーファイルの概念は無いから。
596594
垢版 |
2013/12/09(月) 10:32:01.94
>>593の前者は非メンバで後者はメンバ、という読みだが >>595
2013/12/09(月) 11:28:50.09
エスパー検定勉強してこい
598デフォルトの名無しさん
垢版 |
2013/12/09(月) 13:21:54.02
>>596
そういう意味か!!
てっきり、インライン関数かそうで無いかだと思ったよ。
すまん。
2013/12/09(月) 14:18:39.89
オブジェクト指向はメモリやプログラムの大きさの事を考えて設計する方法では無い
そもそもオブジェクト指向勉強してこいとか、質問の答えにさえなってない
600594
垢版 |
2013/12/09(月) 14:42:09.84
じゃ質問に答えてやれよ
2013/12/12(木) 13:51:00.24
スレッドのExecute()内で、StringGridを動的生成しようと
以下の様にしました。

TStringGrid *SG = new TStringGrid(this);

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

エラーの意味が分からないのですが、
スレッド内で動的に生成してはいけないのでしょうか?
アドバイス頂けると助かります。
2013/12/12(木) 14:19:34.01
スレッドのクラス内でthisでいいの?
2013/12/12(木) 14:34:32.90
>>602

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

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

TStringGrid *SG = new TStringGrid( GridForm );
2013/12/12(木) 15:18:04.94
Execute内でStringGridの動的生成って、ダメじゃないけど豪快だな
Synchronize()とか使ってメイン側で更新する必要があるので、あまり意味がないことが多々ある

スレッド側で必要なのはStringGridではなく文字列の配列だったり、
スレッド生成時にStringGridも生成すれば十分だったりしないかな?
605601
垢版 |
2013/12/12(木) 15:34:49.14
有り難うございます。

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

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

勘違いしている点やアドバイスがあればお願い致します。
2013/12/12(木) 16:06:26.75
TStringGrid(Get * const) 

なんだから、テキストファイルとかを渡すんだろ
2013/12/12(木) 16:34:01.69
更新処理が重いなら間引くべきだと思うよ
毎回更新する必要があるなら、それは並列化できない、つまりスレッド化の意味がない
608601
垢版 |
2013/12/12(木) 17:13:53.53
有り難うございます。

間引く方向で検討したいと思います。
有り難うございました。
2013/12/12(木) 17:48:46.90
スレ違いだけどこの仕様、C#でも受け継いでいて本当クソだと思うわ
ヘジたんこういう所はダメなのね
2013/12/12(木) 18:55:59.95
>>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()しなくて済むということはないよ。
611デフォルトの名無しさん
垢版 |
2013/12/12(木) 19:09:59.46
Application->ExeName が化けてるんだけど
Win32のフォルダんとこが.\\.とかなってるし
これちゃんと取る方法おしえてくださ
C++BuilderXE4
2013/12/12(木) 20:07:55.27
C++11から本格的にマルチスレッドと同期サポートが入ったから、案外行けるかも
あ、VCLはObject Pascalで書かれてるんだっけorz

.NETも4.5からAsync入ったしうかうかしてると横取りされちゃうぞ
2013/12/16(月) 15:00:24.58
BCB6でデバッグの時にF12キー押したら出てくるCPUウインドウを出さないように出来ますか
2013/12/16(月) 15:24:03.19
CPUを外してください
そうすれば出なくなりますから
2013/12/17(火) 18:35:10.82
CPU外してもF12押したら出ました・・
嘘言うのはやめてくださいしんでください
2013/12/18(水) 02:12:28.70
>>615
可哀想に幻覚が見えるのか
精神科をすぐに受診してください
2013/12/18(水) 11:20:06.65
wmain だったら BCB6 では無理かも。
618デフォルトの名無しさん
垢版 |
2013/12/21(土) 15:16:38.70
BuilderXE4で実行時にPanelのColorを変更するとキャプションが消えるバグがあるのですが
これを回避する方法を教えてください
619デフォルトの名無しさん
垢版 |
2013/12/21(土) 15:28:12.77
できた

お前等ってほんと糞の役にも立たないゴミだな^^
620デフォルトの名無しさん
垢版 |
2014/01/09(木) 16:59:04.02
TPopupメニューをOwnerDrawする時に
表示されるメニューの幅と高さを任意に指定する方法をおしえて
2014/01/09(木) 22:03:01.66
OnMeasureItemでWidthとHeightを変更する
622デフォルトの名無しさん
垢版 |
2014/01/24(金) 11:57:52.15
C++Builder2010でSQLConfigDataSourceがリンカエラーになるんだけど
odbccp32.libを追加してるのに。
ちなみに、XPでは正常にリンクできたのにWin7だとリンカエラーになるのですが
Win7でもちゃんとリンクする方法を教えてくださ
623デフォルトの名無しさん
垢版 |
2014/01/31(金) 11:46:42.51
印刷するのにお勧めのコンポーネント教えて
2014/01/31(金) 15:43:16.58
FastReport
2014/02/01(土) 16:32:08.39
Delphi XE4 Professionalを持ってるんですが、
C++BuilderXE5 Starter
のアップグレード版は使えますか?
2014/02/01(土) 18:54:26.64
問題ありません。
2014/02/01(土) 18:57:33.18
あー、
> Delphi StarterとC++Builder Starterの両方を購入して1つのマシンにインストールして「Mini RAD Studio」のように使うことはできますか?
> いいえ、1つのコンピュータには、1つのStarterエディションしかインストールすることができません。

なので、VMでも何でもいいので別のWindowsがいるので注意してね。
2014/02/01(土) 18:59:06.09
いやもうデルファイ使わないんでC++さえ使えればいいですw
2014/02/01(土) 21:01:02.00
コンパイラはx86でC++11対応じゃないので、そこも気をつけて。
630デフォルトの名無しさん
垢版 |
2014/02/04(火) 11:46:48.55
>>624
FastReportどこのタブにありますか?
言い忘れてましたがC++Builder2010ですう
631デフォルトの名無しさん
垢版 |
2014/02/04(火) 11:51:13.48
EX4にはFastReportのタブあったけど
2010には無いから2010ではFastReport使えないっぽいですねこれ
QuickReportも無いっぽいしどうしたらいいのこれ
2014/02/04(火) 15:07:59.35
残念だけどRave Reports
633デフォルトの名無しさん
垢版 |
2014/02/04(火) 16:32:54.59
Rabeタブはありますが、Reportsがありませんえん
634デフォルトの名無しさん
垢版 |
2014/02/04(火) 16:33:28.11
Raveです、かみまみた
635デフォルトの名無しさん
垢版 |
2014/02/04(火) 16:37:20.60
あ、でも、RaveProjectで何か印刷のアレをビジュアルでできそうです
どうせ糞だろうけど頑張ってやってみますありがとうございました糞野郎共
2014/02/06(木) 16:46:38.48
SOAP通信できるコンポーネント教えて
2014/02/06(木) 16:56:59.54
TSoapConnectionを発見した!!XE4
んで、送受信はどうやってやるの?
638デフォルトの名無しさん
垢版 |
2014/02/10(月) 13:52:08.67
"44Op44O044Kn44Or44OK"みたいなUTF-8でアレされてるのを戻す方法を教えてください
C++BuilderXE4です。
2014/02/14(金) 14:01:54.52
>"44Op44O044Kn44Or44OK"みたいなUTF-8でアレ
よくわからん。日本g
640デフォルトの名無しさん
垢版 |
2014/02/20(木) 11:40:21.94
TOpenDialogでInitialDirを指定しても直前に開いたとこを開くんだけど
ちゃんと指定したフォルダを開く方法を教えてください
2014/02/20(木) 11:58:06.80
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201211/12110018.txt
642デフォルトの名無しさん
垢版 |
2014/02/20(木) 15:39:58.88
>>641
サンクス、確かにOSはWin7でXPではちゃんといってたけど

しかし、C++BuilderXE4のバグなのかわからないんだけど
ExtractFileDir( Application->ExeName )で取得したexeのパスがバグってる
exe作るとWin32フォルダにdebugフォルダが作成されてそこで実行してるけど
取得したパスが必ずWin32フォルダの前に\.\が入ってる
これのせいでDialogのInitialDirやFileNameに指定してもうまくいかなかったんだけど
これちゃんとパスとる方法ありますかね?
2014/02/20(木) 15:47:14.24
正規化
644デフォルトの名無しさん
垢版 |
2014/02/20(木) 16:03:01.36
いや意味わかんないです
2014/02/20(木) 17:45:06.74
つ ExpandFileName
646デフォルトの名無しさん
垢版 |
2014/02/20(木) 19:12:22.42
>>645
ありがとう、感動した。
ExpandFileNameをかましてやったらちゃんとパスがアレしてくれました

しかし今までちゃんとできてたのに急に腐った仕様に変えないでほしいなあ園馬鹿ってやっぱ馬鹿なんだな
2014/02/20(木) 19:54:49.15
勝手に相対になっちゃうの?
648デフォルトの名無しさん
垢版 |
2014/02/21(金) 10:19:05.00
パスを見るとフルパスになってるんだけど
何故かWin32フォルダの前に必ず\.\が付加されてる。
ちなみに、Win32フォルダが無い別フォルダで実行するとちゃんとしたパスがゲットできてる
2014/02/21(金) 10:34:00.47
OSの仕様が絡んでいそうな・・・ よくわからんけど
2014/02/21(金) 15:19:09.05
設定ファイルか何かでそう書いてるだけじゃないの
今まで気づいてないだけとか
2014/02/21(金) 15:57:13.01
リンカのファイル出力先がそうなってるから、
デバッガに渡される実行ファイルのパスもそうなる

リンカの出力先指定:.\$(platform)\$(config)
2014/02/22(土) 02:07:21.82
プロジェクトオプションでC++(共有オプション)の中間出力と最終出力ディレクトリにある.\を削除すればOK
2014/02/22(土) 02:11:20.47
追記 参照ボタン押すとフルパスになるから文字列からダイレクトに削除してね
654デフォルトの名無しさん
垢版 |
2014/03/04(火) 10:32:24.33
>>651-653
それやっちゃうと違うPCやフォルダ変えてコンパイルする時はまたその設定が必要なのでは?
655デフォルトの名無しさん
垢版 |
2014/03/06(木) 11:19:51.13
XE4のTMediaPlayerで現在再生中かどうかを調べる方法を教えてください
2014/03/06(木) 12:08:12.17
Modeプロパティで分かるよ
2014/03/06(木) 14:07:45.92
ゴメン、Modeじゃ分からんかったわ
Notify = trueにして再生開始して、OnNotifyイベントで成功が通知されたら再生終了だ
現在再生中という情報を直接取ることは出来ないみたい
俺がやったのはOnNotifyでMode==Playingで処理結果が成功なら再生終了と判定したよ
658デフォルトの名無しさん
垢版 |
2014/03/06(木) 14:11:17.42
>>657
ありがとうございます。
OnNotifyは終了だけを検知したかったのでNotify=falseで使いたいんですが
自分で再生したのはわかるのでOnNotifyが来たら終了って判断できるのですが・・・
そういうのがあったらアレかなとおもって聞いてみましたがアレでしたね
2014/03/06(木) 14:29:56.39
ほんとアレっすよね
660デフォルトの名無しさん
垢版 |
2014/03/06(木) 15:11:36.52
言うほどアレでもなかったわ
661デフォルトの名無しさん
垢版 |
2014/03/06(木) 15:18:52.18
つーか、今改めて試してみたけど>>656でおkかも
Notify=falseならModeで再生中とそれ以外の区別がついてる感じ
662デフォルトの名無しさん
垢版 |
2014/03/06(木) 15:32:48.53
フォーム非表示の状態で作成されたフォームのListViewがクリアできない
一旦表示させないとListView->Items->Clear( )受け付けてくれないんだけど
これ非表示のままならどやってリストビュークリアしたらいいの??
2014/03/06(木) 15:42:40.54
Update() やってみるとか(適当・未確認)
664デフォルトの名無しさん
垢版 |
2014/03/06(木) 17:18:43.59
>>663
ダメでしたよ。
2014/03/07(金) 00:06:06.17
Handleを取得してみる
666デフォルトの名無しさん
垢版 |
2014/03/07(金) 10:22:10.84
>>665
それから?
2014/03/07(金) 20:28:14.79
>>662
どういう状況かよく分からない
その症状が出る最小のコードでも晒してくれればと思うが。

少なくともこちらでは「フォーム非表示の状態で作成されたフォーム」での
ListView->Items->Clear( )は正常に出来ている。
2014/03/08(土) 00:04:52.41
>>666
処理の前にHandleNeededを呼ぶってこと
669デフォルトの名無しさん
垢版 |
2014/03/11(火) 16:18:17.81
>>667-668
返信遅れて申し訳ない
C++Builder5の時からそうだったんだけど
普通にフォームにListView貼り付けて設計時にデータ入れときます
んで、そのフォームのコンストラクタでListView->Items->Clear( )すると消えてくれない

ちなみに>>662で非表示でクリアできないうんぬんは消すタイミングの問題で
別フォームのボタンを押したらListViewのあるフォームのListView->Items->Clear( )したら消えますよ
670デフォルトの名無しさん
垢版 |
2014/03/11(火) 16:21:09.46
>>668
ちなみに、フォームのコンストラクタで
HandleNeeded();
ListView->Items->Clear( );
やっても消えませんでした。
671デフォルトの名無しさん
垢版 |
2014/03/11(火) 16:22:49.04
あ、すみません。
間違いました。
↓ですよね。
ListView->HandleNeeded();
ListView->Items->Clear( );
これやったらちゃんと消えましたすみまsん
2014/03/11(火) 18:16:53.03
おめでとさん
2014/03/11(火) 19:58:50.41
久々に引っ張りだしてBCB6使いましよ。
未だに便利だな。
2014/03/11(火) 20:56:45.64
故Winny作者も使ってたBCB6
2014/03/12(水) 10:09:18.17ID:gNDuFwAY
>>672
ありがとゆ

しかし、長年CBuilder使っててHandleNeededって初めて知ったぽ・・・
2014/03/12(水) 12:04:47.65ID:QsWejUh6
XE4までは使ってたんだけど64bitがClang使ってて怪しいし、C#の方が便利なんで
最近こちらばかり使っている
2014/03/12(水) 12:56:32.95ID:9wY/JUzG
正解
2014/03/12(水) 14:14:10.21ID:gNDuFwAY
C++BuilderでC#って出てる?

てか、ここID出るよういんあったのね。
2014/03/12(水) 15:03:45.80ID:n+Y+ZrF5
以前は.NET向けの何かがあったが今は無いよ
>>676 はVS使ってるって事でしょう
2014/03/13(木) 21:22:18.12ID:2KMiQ96l
ちなみにBCB6からはどれに移行するのが便利かな?
最新の安いの買えば古いのは落とせるんだよね?
2014/03/14(金) 00:00:21.88ID:Ar+khIgg
まず2007。次はXE5で。古いのが使えるのはPro以上で、Arcだろうがアカデミックは除外。
2014/03/14(金) 09:49:14.65ID:OyQukPKW
Unicode以前に移行するくらいなら6のままで良いんじゃないの?
ちなみにC++はXE以降で何も変わってないよ
それどころかXE2以降では訳の分からん不具合が結構ある
2009から使ってるけど、Win32VCLならXEが一番まともだと思う
2014/03/14(金) 10:22:00.41ID:E4e1CSrP
>>681
>>682
ありがとう。最新版への移行は試してみたんだけど、確かにUnicode周り
が大変な感じだった。コンパイラは変わってないのね。
2007借りて試してみてダメだったら6のまま現役で作ります。
2014/03/14(金) 13:28:13.98ID:1agqAwAb
2007はバグ多いからお勧めできんけど。
2014/03/14(金) 15:14:33.31ID:OyQukPKW
仕事で6使ってるの?
まだまだ結構いそうだけど
686デフォルトの名無しさん
垢版 |
2014/03/15(土) 10:16:32.35ID:2N6ROkeB
6も最初バグだらけだった気がした
2014/03/15(土) 11:08:01.76ID:bzLcn0oj
6+Upd4だっけ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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