C++Builder相談室 Par ..
[2ch|▼Menu]
412:デフォルトの名無しさん
09/03/20 01:39:34
>>408
先に古い方からインスコ

413:デフォルトの名無しさん
09/03/20 20:52:33
別スレッドを動かしている時、スレッドが終了したかどうかを確認する方法を教えて下さい
お願いします。


414:デフォルトの名無しさん
09/03/20 21:06:00
TThread とかだったらHandleやThreadIDプロパティをチェックするとか

415:デフォルトの名無しさん
09/03/20 22:33:27
処理が終了したのか、スレッド自体が終了して消え去ったのかでだいぶ違うけど
後者なのかな。


416:デフォルトの名無しさん
09/03/20 22:56:41
>>396
遅レスだが、会社で組んだソフトがその現象になって困ったことがあったよ。
確か、プロジェクトファイル(.bprファイル)をテキストエディタで開いて、
<LIBRARIES value=だか<SPARELIBS value=の最初のlib
を最後に移動して保存して、BCB5で開いてリコンパイルしたら直ったと思うよ。

417:デフォルトの名無しさん
09/03/20 23:03:41
URLリンク(page4.auctions.yahoo.co.jp)

418:413
09/03/21 11:28:05
初心者なもので

>>414
HandleやThreadIDプロパティってどのように記述するのですか?

>>415
後者です


419:デフォルトの名無しさん
09/03/21 14:13:18
WaitForSingleObjectでTThread.Handleを待機。

420:デフォルトの名無しさん
09/03/21 17:55:06
>>418
TThread *Thread として(実際はTThreadの派生系)

方法は2種類あると思う。

1)待機関数、Handleを使う
if(WaitForSingleObject((HANDLE)Thread->Handle,0)==WAIT_TIMEOUT) { /* スレッドは実行中 */}
else { /* スレッドは終了している */}

2)OnTerminate イベントを使う
void __fastcall ThreadTerminated(TObject*){ /* スレッド終了時に処理をさせる。処理はメインスレッド内で実行される。*/}
Thread->OnTerminate=ThreadTerminated;

421:デフォルトの名無しさん
09/03/22 15:43:47
>>413
TThread.Finished プロパティを調べる。trueなら終了。

422:デフォルトの名無しさん
09/03/22 18:52:50
ちょっと質問。
C++Builder2009Pro。
アプリケーション作成時のデフォルトアイコンあるでしょ。
あれって変えられない?
デフォルトがヘッドギアってダサすぎです

423:デフォルトの名無しさん
09/03/22 20:23:44
C++Builder6だとプロジェクトのオプションとかで変えられたけど
2009は持ってない。

424:デフォルトの名無しさん
09/03/22 21:27:37
C++Builder2009でもプロジェクトオプションで変更できる

425:デフォルトの名無しさん
09/03/22 21:49:45
あーえっと。
新規プロジェクト→アイコン変える
のようにプロジェクトの作成のたびにアイコンを変えるのがめんどくさい。

アイコンを変えておく→新規プロジェクトうんぬん。

プロジェクトが作成されるたびにデフォルトで指定したアイコンになっていてほしい。

426:デフォルトの名無しさん
09/03/22 21:52:03
_

427:デフォルトの名無しさん
09/03/22 21:59:58
アイコンファイル自体を置換してしまえ

428:デフォルトの名無しさん
09/03/22 22:05:04
そそうか
デフォルトのオプション設定でアプリケーションの項目がないからあきらめてた
あまりにもダサいから必ず変えるように仕向けたいのか
残念だ
ありがとう

置換?できるのか?

429:デフォルトの名無しさん
09/03/24 20:16:41
どこかにアイコンのリソースはある筈だからそれを変えられればいいだよな

430:デフォルトの名無しさん
09/03/24 20:46:21
どこか知らないならレスするなよクズ

431:デフォルトの名無しさん
09/03/24 20:48:03
ヘタな釣りw

432:デフォルトの名無しさん
09/03/24 21:00:09
ちょっと探してみたけど.resや.icoの形ではないみたいだなあ
どこに組み込まれてるんだろ

まあ、そもそもそんな必要があるとは思えないけどね

433:デフォルトの名無しさん
09/03/24 22:22:18
DLLじゃね

434:デフォルトの名無しさん
09/03/24 22:35:27
そんな必死になることなのか

435:デフォルトの名無しさん
09/03/24 22:47:56
アイコンなんてクリック数回で変えられるじゃん。
だいたい、作るプログラムは全部デフォルトのままかよ。


436:デフォルトの名無しさん
09/03/24 23:11:22
別にいいじゃん
ネタとして話をしても

437:デフォルトの名無しさん
09/03/25 00:07:54
自分だけで使うものとかさ、アイコンを変更するまでもないんだけどあのアイコンはいやだから毎回変えているんだ。
WindowsフォルダのTASKMAN.EXEみたいなアイコンにしている。

438:デフォルトの名無しさん
09/03/25 14:15:53
グローバル変数の評価式だけ???やデタラメな数字になってしまうたすけてください

439:デフォルトの名無しさん
09/03/25 14:19:47
グローバル変数はなくすべきだろ、常考。

440:デフォルトの名無しさん
09/03/25 14:23:49
最適化が有効になってるんじゃねえのか。


441:デフォルトの名無しさん
09/03/25 15:42:08
もっかいBuild allしてみ

442:デフォルトの名無しさん
09/03/25 17:10:11
1行エディットして改行したただけで
それ以降のブレークポイントがみんなズレるんだけど
なんかいい方法ないかな

443:デフォルトの名無しさん
09/03/25 21:17:02
WSACreateEvent とか WSAEnumNetworkEvents あたりの関数が外部シンボルが未解決とリンカエラーでるのは何でなんだぜ?

444:443
09/03/25 21:54:34
自己解決。
Ws2_32.libをプロジェクトに追加したらリンクできた。

445:デフォルトの名無しさん
09/03/27 13:19:40
>>442
プログラムのフォルダをコピーしたりしなかったか?

446:デフォルトの名無しさん
09/03/27 21:33:32
起動時にオープンダイアログ開こうとしたらエラーになるんで
間にShowMessage入れて見たらオープンダイアログ開くようになったんだけど
これどういう事?

447:デフォルトの名無しさん
09/03/27 22:09:11
起動時ってどのタイミング?
エラーって何?

448:デフォルトの名無しさん
09/03/27 23:01:41
フォームのインスタンス?作成時
オープンダイアログが失敗した時やキャンセルした時に返るfalse

449:デフォルトの名無しさん
09/03/27 23:03:17
×インスタンス
○コンストラクタでしたw
1年ぶりに手を付けてますw

450:デフォルトの名無しさん
09/03/28 03:30:19
>>446
途中に関数挟むとスタックの状態が変わるので、それまで出ていたバグが
出なくなったように見える事があるよ。

OpenDialogが内部で利用するGetOpenFileName()は過去に何度か拡張されて、
関数が使用する構造体のサイズも変わった。それがエラーの原因じゃないかなあ。
_WIN32_WINNTとOPENFILENAME::lStructSizeがうまく対応取れていないような気がする。
解決しないなら、直接GetOpenFileName()呼んで回避してください。

もし単にXPスタイルのダイアログ開きたいだけならマニフェスト埋め込めば楽かと。

451:デフォルトの名無しさん
09/03/28 04:20:49
フォームのconstructor、特にメインフォームの場合は、色々な初期化が終わってないから、その辺りじゃないの?
ダイアログの親ウインドウがまだ使える状態じゃないとか。オープンダイアログがコンポーネントの事だったら、それ
の初期化完了も確認しないとまずいし。

OnCreateとか、OnIdleとか使った方がよさげ。

452:デフォルトの名無しさん
09/03/28 11:26:45
コンストラクタでやるのはせいぜいユーザ定義メンバの初期化
__publishedに触るのはOnCreateから

453:デフォルトの名無しさん
09/03/28 11:29:22
なんか昔マニュアルにOnCreateとコンストラクタに処理を書くと
不都合が生じるからコンストラクタに書いてくれって載ってた気がする

454:デフォルトの名無しさん
09/03/28 13:08:01
でもコンストラクタ内ではフォームの初期化が完了してないから
VCLをいじるような記述をすると高い確率で動作が変になる。

変数への代入程度で留めておくべきだろう。

455:デフォルトの名無しさん
09/03/28 13:20:53
メインフォームのコンストラクタであまりいろんな処理をするのはお勧めできない。呼び出し時点がApplication.Runより
前なんだから。

456:デフォルトの名無しさん
09/03/28 20:37:20
通信は独自の方法でしたい
HTMLの表示はコンポーネントを使いたい
なんてコンポーネントを使えばいいのかな?

C++Builder 2009

457:デフォルトの名無しさん
09/03/29 14:22:30
C++Builder2009買ったんだけど、
ユーザー登録カードのユーザーIDって
Developer Networkに登録したやつを書けばいいの?


458:デフォルトの名無しさん
09/03/29 17:36:23
いや、過去に買ったことがなければ空欄でいいと思う。過去に買ったことがあればDMとかに書いてあるやつ。

459:デフォルトの名無しさん
09/04/07 10:23:17
ワイド文字列定数を標準にできませんか?

460:デフォルトの名無しさん
09/04/07 13:29:53
C++Builder2007でwsprintf等のAPIを呼ぶと未定義のシンボルエラーがでるのですが
これはどこをいじくると正常にコンパイルできるようになりますか?

461:デフォルトの名無しさん
09/04/07 13:34:49
ちなみにWindows.hをインクルードしても同じエラーが出るのですが
他のプロジェクトだと普通にコンパイルが通ってます。。
他のプロジェクトとオプションを見比べてみたのですが同じでした。。。
何が原因なのでしょうか

462:デフォルトの名無しさん
09/04/07 22:52:45
user32.lib

463:デフォルトの名無しさん
09/04/08 09:56:10
あ、すんません。
>>460ですが、エラーの出るプロジェクトでも
記述するソースによってエラーが出たりでなかったりします。
5つcppファイルがあるのですが、そのうち1つのソースにwsprintfを記述するとエラーはでません・・・
その他の4つのソースに書くとコンパイルエラーがでます。もうわけがわかりません

464:デフォルトの名無しさん
09/04/08 10:23:57
まず間違いなく、単純ミス。
それ以上は、エスパーじゃないからわからん。


465:デフォルトの名無しさん
09/04/08 11:10:10
やっぱそう思いますよね・・・
単純なミスならシンボルエラーは出ないんだけど・・・
同じコードをコピペしてるからスペルミスは無いし・・・

466:デフォルトの名無しさん
09/04/08 12:20:26
プログラミング歴は長いのですが,正式に習っていないので,恐らく簡単と
思われることでつまずきました。最近 C++Builder 6 に代えて
Turbo C++ Explorer を使い始めたのですが,

[リンカ エラー] Error: ファイル 'UNIT1.DFM' を開けません

が発生したとき,これを解決する方法が分りません。お教え下されば幸です。
宜しくお願いします。

467:デフォルトの名無しさん
09/04/08 12:22:47
> 'UNIT1.DFM'

を用意する。
ってか、ファイル間違って消しちゃったんじゃないの?
そうなら、フォーム作り直しw

468:デフォルトの名無しさん
09/04/08 13:05:42
>>467
<466>です。早速コメント有難うございます。
'Unit1.dfm' は存在します。該エラーは,例えば作成した project を収めた
フォルダーを移動したり,別の場所にコピーして開いたときなどに発生します
が,そのような場合に必ず起きる訳でもなく,原因が分りません。
小生とは別の方の同様の質問が,
URLリンク(gimite.net)
にありますが,アドバイスは寄せられていません。


469:467
09/04/08 13:08:32
>最近 C++Builder 6 に代えて Turbo C++ Explorer を使い始めたのですが,

あ、BCB6なら使ってるけど、TCEは使ってないので分かりません。。。

470:デフォルトの名無しさん
09/04/08 13:25:16
>>469
<466>です。再々のレスポンス有難うございました。小生も当面,BCB6 に戻ろう
かと思います。


471:デフォルトの名無しさん
09/04/08 14:16:37
>>468
作成したプロジェクトを「別の名前を付けて保存」を選んで移動させた?
それともエクスプローラーで移動?
フルパスが書かれてるかも知れないからチェックした方が良い。
プロジェクトファイルをテキストエディタで開いてみ。

472:デフォルトの名無しさん
09/04/08 14:17:30
>>460
違うかも知れないけど

#include <tchar.h>

って書いてみて。
違ってたらゴメン。

473:デフォルトの名無しさん
09/04/08 14:34:20
>>472
情報ありがとうございます。
それをインクルードしてみましたが未定義のシンボルエラーがでます。。。

うーん、何で同じプロジェクトでコンパイルが通るソースと通らないソースがあるのだろうか・・・

474:デフォルトの名無しさん
09/04/08 14:58:34
コンパイルエラーなのかリンカエラーなのかちゃんと書きな。

475:デフォルトの名無しさん
09/04/08 15:07:25
>>474
ログもちゃんと読めない馬鹿はレスしないで下さいね。
お前みたいな奴のレスなんて期待してませんから^^

476:デフォルトの名無しさん
09/04/08 15:20:33
>>473
何か変わったことはやってますか?
たとえば、古いバージョンと共存させたりしているとか、
ダイレクトXを使っているとか。

477:デフォルトの名無しさん
09/04/08 15:39:00
バックグラウンドコンパイルって無くなったのか?

478:デフォルトの名無しさん
09/04/08 15:53:20
ヒント:高速コンパイルユニットに差し替え

479:デフォルトの名無しさん
09/04/08 16:03:36
>>476
あ、するどいですね!
DirectShow使ってます。

>>475
フォローありがとん

480:デフォルトの名無しさん
09/04/08 16:13:20
<466, 470>です。
>>471のヒント有難うございました。解決しました。
Project1.bdsproj をクリーンにするには,新たに簡単な
VCLアプリケーションを作って別のフォルダーに保存し,
そこにある unit1.cpp, unit1.dfm, unit1.h に前のものを
上書きして再コンパイルすればよいことも分りました。
数週間来の憂鬱から開放されました。
再度お礼申上げます。



481:デフォルトの名無しさん
09/04/08 16:30:24
bdsprojの中フルパスなんかな?
いやな仕様だね。

482:デフォルトの名無しさん
09/04/08 16:57:39
>>479
strsafe.h をインクルードしてるかどうかチェックしてみて。
多分それじゃないかなぁ?
そのヘッダの中を覗いてみ。

483:デフォルトの名無しさん
09/04/08 17:16:22
>>482
確かにDShow.hにstrsafe.hがインクルードされてました!
んでその中を見るとなにやらwsprintf等のAPIを
#undefしたり#defineしたり怪しい事やってますね・・・


484:デフォルトの名無しさん
09/04/08 17:23:50
>>483
それはセキュリティ的に非推奨のメソッドを削除しちゃってくれてる。
使わないか、ヘッダを変更するかはあなた次第。


485:デフォルトの名無しさん
09/04/08 17:29:48
>>484
なるほど原因がわかってスッキリしました!
ありがとうございます。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5404日前に更新/123 KB
担当:undef