[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/04 19:56 / Filesize : 216 KB / Number-of Response : 976
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 09:06:16 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

Embarcadero Home Page
www.codegear.com/jp/

<過去スレ>
くだすれC++Builder(超初心者用)
pc8.2ch.net/test/read.cgi/tech/1117225464/l50

くだすれC++Builder(超初心者用)その2
pc10.2ch.net/test/read.cgi/tech/1144308804/l50

くだすれC++Builder(超初心者用)その3
pc11.2ch.net/test/read.cgi/tech/1171219191/

<兄妹スレ>
くだすれDelphi(超初心者用)その50
pc12.2ch.net/test/read.cgi/tech/1246340765/l50


776 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 01:22:34.90 ]
さーよくわかんないけど、フォームデザイナのオブジェクトインスペクタでそれぞれのイベントを
ダブルクリックして作ったらいいんじゃないかな。

777 名前:772 mailto:sage [2011/07/25(月) 08:51:46.03 ]
つ d >>774
キャッチできないエラーって不便ですよねぇ。

778 名前:772 mailto:sage [2011/07/25(月) 13:10:32.01 ]
ついでですが、何でキャッチできないんでしょう?
キャッチする方法あるのかなぁ?

matherr.cを見たけど、良く分からない(><)

779 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 13:11:39.66 ]
>>776
ありがとうございます!
できました

780 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 13:22:52.77 ]
>>778
msdn.microsoft.com/ja-jp/library/k3backsw.aspx

781 名前:772 mailto:sage [2011/07/25(月) 13:32:49.36 ]
つ d >>780

つまり、キャッチしようにも、例外じゃなくて、Cランタイム系で動作が規定されている関数なのね。

782 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 13:56:35.50 ]
C++Builder XEで
ShellExecute(Application->Handle,
"open",
appname.c_str(),
NULL,
NULL,
SW_SHOW);

というコードで 'char const[5]' 型は 'const wchar_t *' 型に変換できない というエラーが出ます
これはUnicodeStringをAnsiStringに変換する事で直るのでしょうか?
もしそうならどう修正すればいいのでしょうか?

783 名前:デフォルトの名無しさん mailto:sage [2011/07/25(月) 14:12:24.62 ]
"open"
->
L"open"


784 名前:782 mailto:sage [2011/07/25(月) 23:23:52.37 ]
>>783
遅れました
すみませんまだエラーが出ます…
'char *' 型は 'const wchar_t *' 型に変換できない とエラー内容が多少変わったのですが…



785 名前:デフォルトの名無しさん mailto:sage [2011/07/26(火) 01:02:34.32 ]
>>784
appname が AnsiString なら UnicodeString にする

786 名前:782 mailto:sage [2011/07/26(火) 01:16:13.41 ]
>>785
ありがとうございます!
できました

787 名前:デフォルトの名無しさん [2011/07/26(火) 13:47:30.33 ]
C++Builder2010でADOTableについて教えてください
既存のmdbファイルがあって指定テーブルのフィールドの説明を取得する方法を教えてください
ADOTableでダメならSQL文でも構いません

788 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 01:22:03.91 ]
>>787
ttp://support.microsoft.com/kb/210314

789 名前:デフォルトの名無しさん [2011/07/27(水) 09:43:06.09 ]
>>788
ありがとう
これADOTableで表現するならどうやってやりますかね?

790 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 10:44:49.98 ]
RecordsetのProperties

791 名前:デフォルトの名無しさん [2011/07/27(水) 10:54:01.29 ]
>>790
更にありがとうございます
しかしこれどうやって記述したらいいのかわかりません

792 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 11:42:28.29 ]
丸投げイクナイ
少しは自分で考えな

793 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 11:57:43.94 ]
うるせー。
だまって教えろ。ゴラァ

794 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 12:38:03.73 ]
スレタイ読めない奴はレスしないで下さい



795 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 12:42:30.18 ]
そして誰も居なくなるというループ


796 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 12:47:03.76 ]
もう、終わりにしようよ。

797 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 13:33:29.25 ]
もう〜終わりだね

798 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 13:38:07.70 ]
君が

799 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 15:38:43.55 ]
マジコード教えてくださいよろしくです

800 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 16:19:22.92 ]
小さく見える

801 名前:デフォルトの名無しさん [2011/07/27(水) 17:24:20.80 ]
GetFieldDesc_ADO = MyTable.Columns(MyFieldName).Properties("Description")

これをどうやってADOTableの書式で表現するかわかりません


802 名前:デフォルトの名無しさん mailto:sage [2011/07/27(水) 20:56:29.33 ]
>>801
まず、
1時間で正確に燃え尽きる蚊取り線香を3つ使って、1時間15分を計ってみてください。

803 名前:デフォルトの名無しさん mailto:sage [2011/07/28(木) 01:36:46.64 ]
蚊取り線香ってなかなか着火しないから
火を同時に何ヶ所にもつけるのって難しいよね

804 名前:デフォルトの名無しさん mailto:sage [2011/07/28(木) 06:05:49.85 ]
3人がかりだな



805 名前:デフォルトの名無しさん [2011/07/28(木) 23:45:07.35 ]
>>801を教えてくださいよ

806 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 00:59:27.92 ]
ADOTable,ADODataSetにRecordset_といかうプロパティがあって、内部の
オブジェクト公開されてるからそれから、辿っていってみて。

807 名前:デフォルトの名無しさん [2011/07/29(金) 11:44:01.13 ]
Builder2007でUTF-8にURLエンコードする方法を教えてください。
HTTPEncodeを使っても正常にUTF-8になってないみたいなので

808 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 13:44:29.96 ]
俺がアホだけかもしれないけど
UTF-8にURLエンコード
の意味が分からない

809 名前:デフォルトの名無しさん mailto:sage [2011/07/29(金) 20:12:08.80 ]
アホはレスしないでください。
ウザいだけです。

810 名前:デフォルトの名無しさん mailto:sage [2011/07/30(土) 17:38:44.67 ]
超初心者用なんだから分かるんなら説明してくれてもいいじゃん

811 名前:デフォルトの名無しさん [2011/08/01(月) 17:24:56.85 ]
>>806
辿ってみましたがフィールドのコメントを取得するようなのを発見できませんでした。
ぶっちゃけコードを教えてください

812 名前:801 [2011/08/03(水) 20:43:32.92 ]
まじでさっさと教えてください。


813 名前:デフォルトの名無しさん mailto:sage [2011/08/03(水) 21:07:55.33 ]
______  ___________
         V
    _____
   /::::::::::::::::::::::::::\                  _
  /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
  |:::::::::::::::::|_|_|_|_|           /、          ヽ はぁ?黙ってろデブw
  |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |
  |::( 6  ー─◎─◎ )          q -´ 二 ヽ      |
  |ノ  (∵∴ ( o o)∴)          ノ_ ー  |     |
/|   <  ∵   3 ∵>          \. ̄`  |      /
::::::\  ヽ        ノ\           O===== |
:::::::::::::\_____ノ:::::::::::\        /          |

814 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 06:27:21.25 ]
C++Builder2007で、Access2000形式のDBにアクセスしたいんですが、簡単に実現できるクラスライブラリありますでしょうか?



815 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 09:48:01.54 ]
dbGo(ADO)

816 名前:デフォルトの名無しさん mailto:sage [2011/08/04(木) 10:47:18.89 ]
簡単すぎてうんこが漏れそうになった

817 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 19:06:57.41 ]
C++Builder5を使っています。

#include "ABCDEFGH.h" ←空のファイル
#include "ABCDEFGHI.h" ←存在しないファイル

上のようなCPPをコンパイルするとエラーもなく通るんですが、
これって基本先頭8文字しか確認していないってことでしょうか?
また、C++の仕様上では正しいのでしょうか?


818 名前:デフォルトの名無しさん mailto:sage [2011/08/08(月) 23:18:23.60 ]
ファイルシステムのせい
仕様上問題ない

819 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 12:28:32.91 ]
>>818
8文字ってことでDOS形式のファイル名か何かが
絡んでいるだろうとは思っていましたが、仕様上
問題ないというのは驚きです。
となると、ヘッダーファイル名は先頭8文字をユニ
ークにしなければいけないんですね。


820 名前:デフォルトの名無しさん mailto:sage [2011/08/09(火) 14:01:34.81 ]
仕様がMS-DOSも前提にしてるからさ

821 名前:801 [2011/08/11(木) 17:05:51.55 ]
さっさと教えてくださいよ

822 名前:デフォルトの名無しさん mailto:sage [2011/08/11(木) 20:26:49.25 ]
______  ___________
         V
    _____
   /::::::::::::::::::::::::::\                  _
  /::::::::::::::::::::::::::::::::::::::\             /  ̄   ̄ \
  |:::::::::::::::::|_|_|_|_|           /、          ヽ はぁ?黙ってろデブw
  |;;;;;;;;;;ノ   \,, ,,/ ヽ          |・ |―-、       |
  |::( 6  ー─◎─◎ )          q -´ 二 ヽ      |
  |ノ  (∵∴ ( o o)∴)          ノ_ ー  |     |
/|   <  ∵   3 ∵>          \. ̄`  |      /
::::::\  ヽ        ノ\           O===== |
:::::::::::::\_____ノ:::::::::::\        /          |

823 名前: 忍法帖【Lv=16,xxxPT】 mailto:sage [2011/08/14(日) 15:48:26.79 ]
日本語版で開発したアプリケーションを英語版Windowsに持って行くと、エラーメッセージが日本語で表示されるのですが、
エラーを英語で表示するにはどうしたらいいのでしょうか?独島は日本の領土

824 名前:デフォルトの名無しさん mailto:sage [2011/08/16(火) 03:24:59.36 ]
ヘルプの「国際化対応アプリケーションの作成」を読むといいよ
BCB5の場合だけど




825 名前:801 [2011/08/16(火) 16:26:08.12 ]
とっとと教えてくださいよ

826 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 15:20:16.08 ]
BCB2010を使用しています。
pragmaでインクルードファイルのパスは指定できるのでしょうか?



827 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 15:57:39.79 ]
おそらくできない。
つ ttp://docwiki.embarcadero.com/RADStudio/ja/Pragma

828 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 16:03:16.21 ]
docwiki.embarcadero.com/RADStudio/ja/Pragma_option
#pragma option で使用できないオプションは以下のとおりです。
のところに
-Ifilename

829 名前:デフォルトの名無しさん mailto:sage [2011/08/24(水) 16:22:12.53 ]
>>827,828

有り難うございます。
すっぱり諦めます。

830 名前:デフォルトの名無しさん mailto:sage [2011/08/27(土) 14:02:57.71 ]
ビルダーで、計算した計算結果を
データ入力値や計算結果・図示などの
印刷を行いたいのですが、
ページは数ページから数十ページ程度の出力となりうるもので
ビルダーでするにはどのコンポーネントをつかう必要が
あるのでしょうか?
QuickReportを検索したのですが、
フリーであればよいのですが、
有償問わず教えてもらえたらと。

831 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 00:13:46.14 ]
csvファイルにしてOpenOfficeで読み込んじゃったり

832 名前:デフォルトの名無しさん mailto:sage [2011/08/28(日) 00:52:22.10 ]
FastReportsかQuickReportsだろ

833 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 16:50:07.99 ]
いまさら、BCB5update1 つかってます。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString str1 = "test1";
AnsiString str2 = Caption;

AnsiString dummy1;
AnsiString dummy2;
AnsiString dummy3;
AnsiString dummy4;

#if 1
AnsiString tmp = (str1.Length() ? str1:Caption );//EAccessViolation
#else
AnsiString tmp = (str1.Length() ? str1:str2 );//OK
#endif
}

↑で、EAccessViolation が発生するのは、なぜなんだろ?
コンパイラが腐ってるという噂もありつつ...

834 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 18:57:56.44 ]
確かに、その辺のバージョンで、?:演算子で
?の右(どちらか)にデストラクタが必要なオブジェクトを置いたとき
変なコードを吐いたのを覚えてる。

危険と認識したので、俺的には
?の右に置くものは組み込み型のみで、かつ2つの型を統一にするようにしている。



835 名前:デフォルトの名無しさん mailto:sage [2011/09/09(金) 19:01:09.08 ]
一応。
暗黙の型変換とデストラクタとで
どちらが原因でバグにぶつかるのか深く追求しなかったから、
両方を避けるようにしてる、ってこと。
特にコンストラクタを介する暗黙の型変換は確実にとぶだろうと。

836 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 05:22:23.39 ]
BCB6 でも再現するがな
さすがに XE2 では正しく動いた。テンポラリのオブジェクトを適切に破棄しておる

>コンパイラが腐ってるという噂もありつつ...
それが正解

837 名前:833 mailto:sage [2011/09/10(土) 19:35:16.92 ]
はぅ、やはりそうなのか...

マシン語がよめれば、確信がもてたんだろけど、
よめないので、吐かれたコードが怪しいとおもいつつ、確信がもてなかただ
やっぱ、最後はマシン語よめないとなぁ...勉強しろよ>自分

if文に書き換えりゃいいだけだから、まぁ、大した話ではないんだけど、
失った時間が...

↑のは、dummy をはさんでるから、当該文で、例外がおきるけど、
スタックの状況によっては、全然離れたところが壊されて、
意味不明の動作になるから、けっこうたちがわるい...


838 名前:デフォルトの名無しさん mailto:sage [2011/09/10(土) 19:55:35.09 ]
機械語読めないならCとかC++とか使わないほうがいいよ。MSのドットネットとか使ったほうが安全だと思う。その例だとどうみたってコンパイラのバグだとしか
思えない。ただ、バグを回避するコーディングもテクだとは思うが。

839 名前:デフォルトの名無しさん mailto:sage [2011/09/11(日) 10:18:11.84 ]
いまどき機械語読める奴なんていねえよ。
8086の時代じゃあるまいし、バカかよ。
32bitのあのやたら長いバイナリを読める奴なんいるんかよ。
アセンブラ読めれば十分だろ、阿呆。


840 名前:デフォルトの名無しさん mailto:sage [2011/09/11(日) 10:31:35.14 ]
ナニを切れてるんだか。デバッガの逆アセを読めるかどうかを言ってるんだろ、たぶん。
「C3がRETだ」とかそういうレベルで機械語が読めるとでも思ったのか??コンパイラが
吐くコードがイメージできないと辛いってことだと思うが。

841 名前:デフォルトの名無しさん mailto:sage [2011/09/11(日) 13:34:30.72 ]
機械語
e-words.jp/w/E6A99FE6A2B0E8AA9E.html
マイクロプロセッサが直接解釈・実行できる言語。数字の列で表現され、人間が簡単に理解できるような形式にはなっていない。


842 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 06:25:03.34 ]
bpをpush/popする意味はなんですか?

843 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 12:23:43.92 ]
bpをポイントとして使ってんじゃね

844 名前:デフォルトの名無しさん mailto:sage [2011/09/12(月) 20:42:14.38 ]
(E)BPは普通その関数の仮引数とローカル変数のスタック上の基準位置を示すのに使う。



845 名前:833 mailto:sage [2011/09/17(土) 21:24:46.26 ]
ありゃ?私のがもとでなんか険悪?
ちなみに私も、アセンブラのつもりでマシン語とつかてた


846 名前:デフォルトの名無しさん mailto:sage [2011/09/17(土) 21:27:26.21 ]
という話はおいておいて。本題

また、BCB5update1 でのお話
//---------------------------------------------------------------------------
class TTest1
{
protected:
#if 1
AnsiString __fastcall GetTest(){return GetTest(1);}//<== E2247 アクセスできない
#else
AnsiString __fastcall GetTest(){return "1";}//<== OK
#endif
public:
__property AnsiString Test ={read=GetTest};
AnsiString __fastcall GetTest(int x){return AnsiString(x);}
};
//---------------------------------------------------------------------------
class TTest2
{
private:
TTest1 * Test1;

protected:
AnsiString __fastcall GetTest(){return Test1->Test;}
public:
__property AnsiString Test ={read=GetTest};
};
//---------------------------------------------------------------------------

これで、コンパイルエラーが出るのはなぜなんでしょ?

847 名前:デフォルトの名無しさん [2011/10/10(月) 15:44:24.19 ]
C++builderってdelphiみたいにポインタ使わずにプログラミングできる?

848 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 15:48:15.92 ]
コンポーネント(TObjectからの派生)がポインタをフル活用しているから難しいんじゃないか?

849 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 16:30:47.92 ]
Delphiはクラス型変数が実際にはポインタであって、それを構文上ポインタとして見せないというだけだからなぁ。

850 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 19:51:01.56 ]
string ^ b = a; みたいのだったけか…一応 pascal でもポインタ使えたような記憶がある…
あまり使わないからよく覚えてないし

851 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 15:22:19.51 ]
Delphiがベースなせいで
C++なら参照で済むところまでポインタ使ってる

852 名前:デフォルトの名無しさん [2011/10/20(木) 17:27:05.35 ]
WM_MOUSEWHEELイベントでマウスホイールを取ってるんだけど
StringGridにフォーカスがあるとWM_MOUSEWHEELが入ってこなくなるので
StringGridのMouseWheelを無視してWM_MOUSEWHEELにイベントが入ってくるようにする方法を教えてください

853 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 17:36:51.16 ]
StringGridをいじってメッセージを転送するのじゃ

854 名前:デフォルトの名無しさん [2011/10/20(木) 17:50:10.42 ]
いやそもそもStringGridが受け取らないようにしたい
Enabledをfalseにする如くに。
しかし、グリッド操作もするのでそれはできない



855 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 18:06:40.77 ]
ホイールを破壊する

856 名前:デフォルトの名無しさん [2011/10/20(木) 18:26:34.41 ]
きえろぶっとばされんうちにな

857 名前:デフォルトの名無しさん mailto:sage [2011/10/20(木) 20:55:25.38 ]
うん

858 名前:デフォルトの名無しさん mailto:sage [2011/10/22(土) 19:07:24.72 ]
プログラムがWM_MOUSEWHEELを受け取ったら
マウス位置がStringGrid内かを判断して
StringGrid内だったら、処理したい関数にメッセージを転送すればいい。
これはわりと普通に行われている処理で
ぐぐれば、いくらでも例が出てくる。


859 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 06:37:15.09 ]
VCLのTObjectListってC++でテンプレートで使えないんでしょうか?
std::vector使えばテンプレートでキャストしなくてもいいですが、
VCLで統一したくて、でもTObjectListだとキャストいぱーいでいやーんです。。。

860 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 14:16:12.70 ]
マルチスレッドでクリティカルセクションの使い方がわかりません。

グローバルでcs1,cs2を,Form1のpublicにchar buf[20]を宣言して、
Form1にEdit1,Edit2,Button1を貼って実行すると、競合させたbufの内容が
Edit2側にゴミとして表示されてしまいます。

 ttp://ideone.com/Tk5g9

下の2つがスレッド側です。
使い方が根本的に違うのでしょうか。

861 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 14:49:16.04 ]
まじめに見てないけど。
家(buf)には鍵(cs)が1つだけあって、それを先に取ったものが家に入れる。
「家とは関係のない鍵(cs1,cs2)」をそれぞれが持っててるだけでは意味ない。


862 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 01:07:21.50 ]
CriticalSectionは1個だけ作成する。
作成するタイミングも間違い。コンストラクタか、FormCreate()でnewすべき。
競合するオブジェクトにアクセスしたいときにAcquire()する。


863 名前:860 mailto:sage [2011/10/27(木) 13:24:14.00 ]
>>861-862
やってみたのですが、上手くいきません。

スレッド側のSleepがロックを解除してしまうとかはなさそうだし。
Sleepがないと、クリティカルセクションを使わなくても見た目では
競合していなかったので入れてみたのですが。

本来のやりたい事は、buf[]を介してUSB-I/O基板を繋いで、
メインスレッド側:
 ・Timer1で定期アクセス
 ・特定の処理で単発アクセス
サブスレッド側:
 ・特定の処理で連続アクセス
だったので、実験的に競合させるサンプルプログラムを作って動作を
試したかったのです。
(ググっても、見た目で効果がわかるようなサンプルプログラムはなかったので)

タイマイベントの中でフラグを立てて、それを監視して競合を避ける方法も試してみます。

864 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 13:45:51.12 ]
その上手くいかないソースは上げられませんか?

タイマイベントの中でフラグ云々は、クリティカルセクションそのもののような気が。



865 名前:デフォルトの名無しさん [2011/10/27(木) 13:59:33.25 ]
上げられません

866 名前:860 mailto:sage [2011/10/27(木) 15:16:25.87 ]
>>864
こんなんです
ttp://ideone.com/l7PYW

フラグでの処理は、まだは試していません

867 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 17:23:54.69 ]
Synchronizeってメインスレッドで動くから競合しないんじゃ…。
丸ごとSynchronizeするならスレッドの意味ないんじゃ…。

868 名前:デフォルトの名無しさん mailto:sage [2011/10/27(木) 20:22:24.18 ]
これ、クリティカルセクション保持したままメインスレッドに処理渡すと
デッドロックしそうなんだけど。

基本は競合するところに最小限のロックをかけるだから、テストといえどもまずい。



869 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 06:54:34.72 ]
>>866
Timer1Timer はメインスレッドのメッセージループ内で動作するよ。
Synchronizeを使って呼び出されたSyncDebugはメインスレッドのメッセージループ内で動作するよ。

TCriticalSectionやMutexみたいなことをメッセージループで実現するのがTThreadのSynchronizeなのでどちらかにしたほうがいいよ。


870 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 11:41:44.21 ]
訂正

Mutexは違うな

871 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 13:00:04.95 ]
違わなくね?

872 名前:デフォルトの名無しさん mailto:sage [2011/10/28(金) 16:31:44.78 ]
いや、同じことは出来るけど、排他制御を関数内で完結させる(局所的な排他制御機構)という点でMutexはいれないほうがいいかなと後で思った
用途の違いというかそんな感じ

873 名前:デフォルトの名無しさん [2011/10/28(金) 22:25:37.51 ]
TCriticalSection でぐぐれば、具体例がいろいろ出てくるよ。
実際に正しく動作する例を見れば、理解できるんじゃないかな。


874 名前:860 mailto:sage [2011/10/29(土) 10:27:45.71 ]
>>967-868
最初はUnit2.cppのExecute()の中で競合させようと、
あれこれ試したのが、上手く競合した状態を作れなくて
Synchronizeを使い出してしまったんですが、本末転倒ですね。

Synchronizeがメインスレッドで実行されるということは、
全く意識していませんでした。

>>869-872
Mutexはプログラム自体の二重起動防止では使っていますが、スレッドに対しても
使えるということでしょうかね。

>>873
TCriticalSectionはググってDelphiの例も読んでみたのですが、局所的な部分の
例しか見つけられませんでした。

クリテクカルセクションは、私には効果を確認する能力がないので諦めて、
フラグで処理しようと思います。

長々と付き合ってもらい、ありがとうございました。



875 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:15:49.57 ]
>フラグで処理しようと思います
いや、・・・TCriticalSectionは、そのフラグだから。
マルチスレッドでもちゃんと調停してくれることを保証するフラグ。


876 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 11:54:06.06 ]
>>875
それは解りましたが、”私の能力では”効果が確認できないので
TCriticalSectionで書くのを止めるということです。

Synchronizeでも使ってメインスレッド側で調停させる
ことにします。








[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<216KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef