トップページ⇒tech
1001コメント337KB

C++Builder相談室 Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/08/21(日) 17:48:30
C++Builderに関する質問・回答や議論等を行う相談室スレッド。


過去スレ・関連サイトは>>2-7あたり。
0655デフォルトの名無しさん2005/12/09(金) 19:49:14
imamamdegakuso
0656デフォルトの名無しさん2005/12/09(金) 19:50:46
コンパイラをdcc32.exeに換えたらもっと早くなったwwwwうぇ
0657デフォルトの名無しさん2005/12/09(金) 19:58:12
delphiより速い。感動した
0658デフォルトの名無しさん2005/12/09(金) 19:59:24
何の時間?
0659デフォルトの名無しさん2005/12/09(金) 20:14:02
ttp://andy.jgknet.de/cpp/index.php?page=idecompilerspeedfix
これを入れるとコンパイル時間が超速くなる。
0660デフォルトの名無しさん2005/12/09(金) 20:38:15
キタキタキタキタ━━━(゚∀゚≡(゚∀゚≡゚∀゚)≡゚∀゚)━━━━!!!!!!!!!!
0661デフォルトの名無しさん2005/12/09(金) 22:31:02
なんじゃこりゃあああああああああああああ
0662デフォルトの名無しさん2005/12/09(金) 22:32:19
これウイルスじゃん
0663デフォルトの名無しさん2005/12/10(土) 02:30:21
すげえ
0664デフォルトの名無しさん2005/12/10(土) 05:31:16
キター
0665デフォルトの名無しさん2005/12/10(土) 06:31:28
関係ない雑談は他でやれ
0666デフォルトの名無しさん2005/12/10(土) 06:52:40
>>665
関係あるよ。入れてみ。正直びっくりした。
ウィルスの可能性を疑うなら、付属のソースを自分でビルドして
インストールすればいいし。
0667デフォルトの名無しさん2005/12/10(土) 06:54:33
ちなみにここな。
http://tinyurl.com/chcr9
0668デフォルトの名無しさん2005/12/10(土) 08:42:47
うはっコード補完はえええええ
0669デフォルトの名無しさん2005/12/10(土) 12:06:35
バージョンアップのご案内キテター

相変わらずJCBカード使えネー
0670デフォルトの名無しさん2005/12/10(土) 12:28:57
確かに3倍位速くなったがdelphiには遠いな。
0671デフォルトの名無しさん2005/12/10(土) 12:32:16
ウィルスの可能性を疑うなら、付属のソースを自分でビルドして
インストールすればいいし。

↑こういう香具師って付属のソースがウイルスのソースだったらまんまとひっかかるんだろうか?
0672デフォルトの名無しさん2005/12/10(土) 12:40:28
これメモリ喰いまくるじゃん。
0673デフォルトの名無しさん2005/12/10(土) 12:51:07
この程度で足りなくなるほどしかメモリ積んでないマシンは
窓から投げ捨てるべき
0674デフォルトの名無しさん2005/12/10(土) 13:13:35
>>656
bcc32にdelphiコンパイラ内蔵なのは知ってたが、
dcc32にもC++コンパイラ内蔵だったのか…
0675デフォルトの名無しさん2005/12/10(土) 13:16:20
つーかこれやばくね?
今の時期にこんなの出たらBDS2006売れなくなっちゃうよ(wwwwwwwwwwwww
0676デフォルトの名無しさん2005/12/10(土) 13:22:23
>>675
んなこたぁーない。
もう振り込んできてしまったよorz
0677デフォルトの名無しさん2005/12/10(土) 13:37:25
133秒-105秒になった。大体*0.3秒だな
>>654
それマジかよw
0678デフォルトの名無しさん2005/12/10(土) 13:46:14
36秒->9秒
まじでヤバイ。
0679デフォルトの名無しさん2005/12/10(土) 13:52:42
これ使ってboostのヘッダとかもpchに押し込むと、
vc++6並に速くなるね。
0680デフォルトの名無しさん2005/12/10(土) 13:53:28
>>671
ソースに一通り目を通さないとでも思ってるのだろうかこのバカは。
0681デフォルトの名無しさん2005/12/10(土) 14:22:34
秒だけじゃなく行数も書こうよ
0682デフォルトの名無しさん2005/12/10(土) 16:25:49
こんにちは C++ builder 6 を使っています。Image のクリア仕方を教えてください
0683デフォルトの名無しさん2005/12/10(土) 16:49:12
Picture プロパティに NULL を代入とかだったような
0684デフォルトの名無しさん2005/12/10(土) 17:08:36
ハッキリ分からない人はレスしないでください
0685デフォルトの名無しさん2005/12/10(土) 18:15:03
>669
某のネットショップからならJCB使えたよ。
0686デフォルトの名無しさん2005/12/10(土) 21:08:52
>>669
俺もキター
0687デフォルトの名無しさん2005/12/10(土) 21:47:26
v5→v6 バージョンアップの時より 4,000円ちょい高いね。
Delphi無くていいから4,000円安くしてちょ。
0688デフォルトの名無しさん2005/12/10(土) 23:35:22
Delphi外す改造に6,000円かかります
0689デフォルトの名無しさん2005/12/10(土) 23:37:58
コマンドラインから
del phi とすれば外れます
0690デフォルトの名無しさん2005/12/10(土) 23:50:14
>>689

最高にド低脳な発言してください in ム板(X)
http://pc8.2ch.net/test/read.cgi/tech/1133485684
0691デフォルトの名無しさん2005/12/11(日) 05:29:24
コンパイル速すぎフォーーーーーーーーーーーーー!!!!!!!!!   
 ,、i`ヽ                        ,r‐'ァ 
 `ヽ::                      ::´
   ヽ ヽ        , -‐--、         / /
    ヽ \      I:::::::I_      _ / /
     ヽ  ヽ    i,(;;;ノI、;;;)l    ,,/  , '
      ヽ  ` ー 、.,,ゝ´ヮ`,ノュ_, - '   r'
        ` 、_ /::: `山':::::    /
         ヽ:::::::::::|::::::::"",r‐'
          〉::::::::|::::::::::¨/
         /;;;;;;;/;;;;;;;;;;/
        /;;;;;;;/:::::::::::《
        <;;;;;;;《:::::::::::::ヽ
      /   ヽI,r''"""^~ヽ
     /   ,/ ヽ    ヽ
0692デフォルトの名無しさん2005/12/11(日) 11:14:19
DBGridである検索結果を表示してます
このとき全てのデータを選択したいときってどうすればいいんですか?
dgRowSelect、dgMultiSelectはtrueにしてます
0693デフォルトの名無しさん2005/12/11(日) 13:08:04
BCBで作成したアプリケーションの起動時、以下のようなメッセージダイアログを
見た事がある方がいらっしゃいましたら、その時何が原因で発生したか情報提供を
お願い致します。

 『××の初期化に失敗しました』

   ××の例:Button->Color
     〃 Button->Font->Name

上記現象が極たまに発生する為、再現方法を特定したいのですが…。

開発環境:
OS    :WindowsXP Professional 日本語版 SP2
コンパイラ:Borland C++ Builder 6.0 日本語版 SP4
0694デフォルトの名無しさん2005/12/11(日) 14:15:40
そのエラーメッセージ文字列で検索かけろや!
そしたら、そのメッセージを出している箇所がわかるだろ。
0695デフォルトの名無しさん2005/12/11(日) 23:02:14
えーと、TThread以外の方法で作成されたスレッドと
VCLスレッドで同期を取りたいのですが、
うまい、というか標準的な方法みたいなのはありますか?

具体的には、VCLスレッド以外は非同期にアクションが起きて、
それをVCLスレッドに知らせ、それによってGUI画面を更新したい。

で、単純に別スレッドから「何かが起きた」ことを知らせるには
SendMessageとPostMessageが使える(と思う)ので
適当なコントロールなりを非表示で作って
そこのイベントハンドラで何かすれば良いのかとも思いますが
こんなやり方で良いのかどうか。
それ(別スレッドなりからの通知)専用のメッセージとかがあれば
喜んで使うのですが。
06966932005/12/11(日) 23:14:52
コメント頂くのはありがたいですが…ガラ悪いですねぇ…。> 694

恐らく現象をご存知の方でしたら、検索しろという話にはならないとは思いますが、
念の為に追記させて頂きます。

エラーメッセージは自前で出力しているわけではありません。
また、本問題の発生したプロジェクトのオプション設定についてですが、
デフォルトのままです。
但し、スタックサイズはかなり多めに増やしております。

有識者の方、コメントを宜しくお願い致します。
0697デフォルトの名無しさん2005/12/11(日) 23:16:27
とりあえず何が吐いてるのかデバッガで追ったら?
0698デフォルトの名無しさん2005/12/11(日) 23:21:26
スレッドの生成方法に関わらず、スレッドIDさえ判れば
PostThreadMessage及びPeekMessageによる送受信にて通信可能です。
他にも方法はありますが、これが一般的ではないでしょうか?
06996932005/12/11(日) 23:27:08
コメントありがとうございます。>697さん

発生頻度がかなり低く、且つ開発環境下では全く再現しない為、
追うに終えない状況です。
(現状、客先に納入するPCでしか発生しないんです)

ある程度目星を付けれれば、無理矢理にでも置きやすい状況にして
解析を進める事が出来るのですが…。
0700デフォルトの名無しさん2005/12/11(日) 23:27:23
>>693
釣りとしたらめっさ巧妙やな。
VCLのソース・リソース中に用意された文字列に「失敗」は沢山あるが
「初期化に失敗」は一言も無い。
grepかけてみたらいい。
Delphi7のVCLで確認したが、6系持ってる人も探してみてくれ。
OSのメッセージであればプロパティ名とか出るわきゃないしな。
なので、そのアプリケーションが独自にVCLのストリーミング機構弄って何かやってて独自のメッセージを出してるか、
でなければ釣りと思う。
07016952005/12/11(日) 23:32:59
>>698
うーんと、すごいワガママで申し訳ないんですけど
単に同期を取れば良いだけなら、普通にEventやWaitForが使えるし
そっちを使うつもりなのですが
GUIスレッドに通知したいんですよね。
要はメッセージループを回しているスレッドに。

で、自分で全部やるならWM_USER+xとかを指定して
BEGIN_MESSAGE_MAPとかを使うのが筋なのかもしれませんが
そこまで大げさにしなくても
ポトペタでなんとかならないかな、と思いまして。
0702デフォルトの名無しさん2005/12/11(日) 23:42:02
>>700
>6系
ない

ってか、んなもんそのアプリを動かして検証しなきゃどうにもならん
0703デフォルトの名無しさん2005/12/11(日) 23:42:04
TActionのOnUpdateやらApplication.OnIdleやら状況の変化を拾えそうなタイミングを提供してくれるイベントは幾つかあるけれど…。

PostMessageが一番スマートで効率もいいと思う。
07046932005/12/11(日) 23:55:26
コメントありがとうございます。> 700さん、702さん

未grepですし証拠も無いので説得力無しですが、釣りではありません。
700さんの仰る通り、プロパティ名がそのまま出る事自体、不思議で仕方ありません。
699に書きました通り、Builder上も特殊な設定は行っておりません。

とりあえず本メッセージが出力されたコンポーネントのソースをgrepして
みましたが、そのような文言は存在しませんでした。

単純解決出来る問題であれば書き込みは致しません。
ググれば大概の事は判りますし。

とりあえず全ソース、grepかけてみます。
07056932005/12/12(月) 00:09:58
grepかけてみました。
無いですね…。> BCB 6.0

開発環境(計3台)下では発生せず、何故か納入PCでのみ発生している為、
環境設定上の問題の可能性も…?

納入PCにもBCBはインストールしている為、環境は同様のはずなのですが…。
手詰まりです。ホントに…。
0706デフォルトの名無しさん2005/12/12(月) 00:20:07
糞して寝ろ。
07076932005/12/12(月) 00:34:41
低俗なレス無く、優良なスレッドとして存続させたいですねぇ…。> 706

700さんの仰る通り、プロパティ名がそのまま出る事自体がおかしいですし、
その辺りをキーに再解析してみたいと思います。
0708デフォルトの名無しさん2005/12/12(月) 01:07:52
> 『××の初期化に失敗しました』
>  ××の例:Button->Color
>    〃 Button->Font->Name
この例の部分の文字列はプログラムで文字列生成してるだろう。だからgrepしてもヒットしないだろ。
「初期化」とか「失敗」でgrepすれば出てくるだろ。
っていうか、Button->Font->Nameこんな文字列を表示している時点で、
システム側ではなく、自前のコード内だってことが一目でわかるだろ。普通。
てか俺も完全に釣られたのかな。

0709デフォルトの名無しさん2005/12/12(月) 02:37:36
あー、それソフト関係ないよ。
memtest86とかかけてみ。エラーになってるから。
07106932005/12/12(月) 09:16:05
コメント頂くのは非常にありがたいのですが…
当然、grepは『初期化』『失敗しました』等で行っております。
エラーとなるVCL名が固定ではないですし。

また、自前のコードで、プロパティ1つ1つをエラーチェックするような
無駄な処理(面倒な処理)も致しません…。
07116932005/12/12(月) 10:23:41
本日、出力されたメッセージダイアログを再確認致しました。

コメント頂いた方には非常に申し訳ないのですが、以下のメッセージの
間違いだったようです。

 『×× の読み込み中のエラー:無効なポイント操作』
  ××の例:Button->Color
    〃  Button->Font->Name

VCLのソースを見てみましたが、プロパティの読み込みに失敗した時に
このメッセージが出力されるようですね。
 ※ちなみにExceptionによる出力です。
  プロパティ名がそのまま表示されるようです。
  自前のコードでの出力と思い込んでいる方々は参照なさって下さい。

おかげで解析を進めれそうです。
ありがとうございました。
0712デフォルトの名無しさん2005/12/12(月) 11:43:38
>>711
エラーメッセージをそのまま貼らないのが悪い、
と言ういい見本だな。
0713デフォルトの名無しさん2005/12/12(月) 14:39:09
だな
0714デフォルトの名無しさん2005/12/12(月) 16:38:55
>自前のコードでの出力と思い込んでいる方々は参照なさって下さい。

自分で間違ったメッセージ書きこんで人を混乱させておきながら
何? この口のきき方。
0715デフォルトの名無しさん2005/12/12(月) 16:54:37
そのエラーメッセージ見てなんのエラーかを考えろ。
バカでも解るだろ。
ポインタが無効なんだよ!ぼろPCなんて使ってるからそんなのが出るんだ。
目盛り新しいのに好感しなよ。ほうけ。
0716デフォルトの名無しさん2005/12/12(月) 16:55:34
中学生かあるいは神様なんだろ
0717デフォルトの名無しさん2005/12/12(月) 17:57:02
こんな人が作ったものが納入されてるところがカワイソス.......
0718デフォルトの名無しさん2005/12/12(月) 18:17:44
エラーメッセージさえまともに確認しないで原因調査している阿呆もいるのだな。
0719デフォルトの名無しさん2005/12/12(月) 18:29:52
>>717
禿同
0720デフォルトの名無しさん2005/12/12(月) 19:42:18
MLでプリコンパイルヘッダの話が出てるけど、
ヘッダの中でstatic変数とか定義されてたらどうなるの?
実行時にメモリとか余計に喰っちゃうの?
0721デフォルトの名無しさん2005/12/12(月) 21:09:23
>>720
まず、staticの勉強が先だろう。
0722デフォルトの名無しさん2005/12/12(月) 21:28:26
>>721
ファイルスコープでのstaicの挙動は知ってるけどだからどうなるのかが知りたいって事なんだけど?
0723デフォルトの名無しさん2005/12/12(月) 22:18:50
>>722
コンパイル単位で領域が確保されるから、、、それをインクルードする.Cや.CPPの
コンパイル結果の.OBJそれぞれにstatic変数が確保されるんだろうな。
0724デフォルトの名無しさん2005/12/12(月) 22:53:04
>>722
本当に理解していれば、>>720の様な疑問は生まれない。
07256952005/12/13(火) 00:42:54
結局、ボタンをVisible=falseで貼り付けて、
FormのコンストラクタでButton->Handleを保存、
通知したいときにWM_LBUTTONUPをPostすることにしました。
OnMouseUpのハンドラでちゃんと動いてくれているみたいです。
>>698さん>>703さん他、どうもありがとうございました。
0726デフォルトの名無しさん2005/12/13(火) 01:11:57
>>723
プリコンパイルヘッダでも特別扱いはされないのね。
じゃあMLみたいにライブラリのヘッダは何でもかんでもプリコンパイルヘッダ詰め込んだらまずそうだね。
0727デフォルトの名無しさん2005/12/13(火) 03:23:05
変数の宣言はヘッダファイルに置かずソース本体に置くことだ。
static変数でもグローバル変数と同じ様に気をつければOK。

まともなSI企業での職務プログラミングでは基本原則の一つなんで、
違反して言い訳すると、、、たぶん干されますな。
0728デフォルトの名無しさん2005/12/13(火) 11:48:23
定数はヘッダに書いていいの?一般的な規則として。
それとも、externするのですか?
0729デフォルトの名無しさん2005/12/13(火) 12:22:12
共通的に使用する定数であればヘッダ、そうでなければソースに定義します。
(共通的定数を、使用するソース毎にexternする人は少ないと思います)
0730デフォルトの名無しさん2005/12/13(火) 12:40:15
「定数」はextern出来ないだろ
07317292005/12/13(火) 17:57:50
それもそーだ。すまぬ。
0732デフォルトの名無しさん2005/12/13(火) 19:38:20
これは古い手で蛇足かも知れないけど、

〜 数人で組むプロジェクトでよくある対策 〜
機能ごとに多数のソースに分割している場合で、共通なグローバル変数の
置き場を決めかねる事って結構あるんだよな。あちこちのソースで分散して
宣言していると、後でサーチが大変でデバッグも面倒だ。
そんな時はグローバル変数のみ宣言するソースを作ってしまう手がある。
commvalues.cやらCommValues.cppでまとめて宣言、ヘッダを工夫して使う。
#defineな共通定数や共通型宣言もcommdef.hやcommtypes.hなどに記述。

IDEの管理や埋め込みコードに縛られないC言語が主流のプロジェクト時代では
有効な統治ルールだったが、今でも使えるカイゼン技法かも。
0733デフォルトの名無しさん2005/12/13(火) 19:49:58
定数に#defineなんていまどきつかわないでしょ、C++なら。
0734デフォルトの名無しさん2005/12/13(火) 20:01:58
Cから脱却出来ず、未だに使ってる…。
そろそろ改めないとなぁ…。
0735デフォルトの名無しさん2005/12/13(火) 21:46:03
ここ数年、define使ってないな。
大抵、enumにしてしまう。
0736デフォルトの名無しさん2005/12/14(水) 01:50:43
#defineって、#pragma並にプリプロセッサやコンパイラ指令用途になったのか。
時代がenum標準になってたとは・・・浦島だ orz
0737デフォルトの名無しさん2005/12/14(水) 01:53:14
enumつーかconstじゃね?
0738デフォルトの名無しさん2005/12/14(水) 02:33:04
c++ では constだよねー
0739デフォルトの名無しさん2005/12/14(水) 02:46:19
おまいら、const と #define は全然意味が違うだろ。
定数に意味のある名前を付けて可読性をよくするには、どうやってんだよ。
0740デフォルトの名無しさん2005/12/14(水) 04:18:48
違ってようが、ガイドラインで#defineではなくconstを使うべし ってなってるんで
0741デフォルトの名無しさん2005/12/14(水) 04:27:23
>>740
それ、何て言うガイドライン?
0742デフォルトの名無しさん2005/12/14(水) 04:43:26
C++ Coding Standards:101 Rules, Guidelines > 社内ガイドライン > 部門ガイドライン > 俺様ガイドライン
0743デフォルトの名無しさん2005/12/14(水) 11:54:58
static constは定数として一般的に認知されてるよな?
0744デフォルトの名無しさん2005/12/14(水) 14:02:50
うほっ
0745デフォルトの名無しさん2005/12/14(水) 22:03:01
>>743
クラス内では。
0746デフォルトの名無しさん2005/12/15(木) 01:21:40
普段は#define使うの?マジで?なんで?
0747デフォルトの名無しさん2005/12/15(木) 01:52:38
ボウヤだからさ
0748デフォルトの名無しさん2005/12/15(木) 02:05:01
そんなん人の勝手やん
0749デフォルトの名無しさん2005/12/15(木) 16:22:50
確かに糞コード書くのも本人の自由。
0750デフォルトの名無しさん2005/12/16(金) 16:52:25
AnsiStringのSubStringですが、
日本語文字列の部分文字列を作るときって、何文字目からかに依って
文字化けしませんか?

文字列をスクロールさせようとしたんですが、始め一・二文字がわけわからん文字に化けでます。
どうしたらこの問題を回避できますか?
0751デフォルトの名無しさん2005/12/16(金) 16:56:32
>>750
TStringMbcsByteType ByteType(int index)

index 番目のバイトが2バイト文字の1バイト目のときは mbLeadByte を返し、
2バイト文字の2バイト目のときは mbTrailByte を返す。2バイト文字の一部
でない場合は mbSingleByte を返す。

0752デフォルトの名無しさん2005/12/16(金) 17:40:12
WideStringで出来る気がする気がした
0753デフォルトの名無しさん2005/12/16(金) 21:47:24
>>751
>>752
ありがとうございました^^
0754デフォルトの名無しさん2005/12/16(金) 22:03:38
VCLオブジェクトいっぱい使った200回ぐらいまでの再帰関数を実装したら
メモリ使用量(*´∀`)
■ このスレッドは過去ログ倉庫に格納されています