tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: MSCommの動作実態と多重On Error文に関して教えて下さい。
投稿日: 2008/03/15(Sat) 09:29
投稿者K.J.K.
> 因みに、このPrint文では csv形式の1レコード(CR.LF付き)を書き込んでいますが、
> そのレコードの途中で、前のレコードを潰して、次のレコードの先頭が書き込まれている」
> というトラブルを招いています。

それは、単に前のレコードが書き込まれずに次へ行っただけなのでしょう。
巻き戻して書き込むなんて「高尚」な機能を備えていませんし。

> この「無難」という単語に思わず斬り込みたくなるのが、「組み込み屋」のサガでして、
> 「なんでや?」となる訳です。

それは"Windows"だからです。"Windows"は"Window"の複数形ですし、"Window"
は"Message"を"Queue"に置き、それを置かれた時刻とは「無関係」に処理して
いくものだからです。
# 中にはQueueに置かずに直接送られるMessageもありますが、スレッドを
# 跨ぐ際にはそれでもQueueチェックが入ります。

簡単な例として、
1,Form1にTimer1を貼り付けて、Timer1.Intervalを250(ms)程度に設定しておく。
2,Timer1_Timerイベントプロシージャ中で
  Caption = CStr(Now)
  と記述し、コンパイルする。(P-CodeでもNative-CodeでもどちらでもOK)
3,コンパイルしたEXEを実行し、そのタイトルバー(Captionが出るところ)の
  上にカーソルを合わせて、右ボタンを押しっぱなしにする。
これだけで、Timerイベントが抑制されることが確認できます。
# Timerイベントの元は、WM_TIMERメッセージ。

リアルタイムに反応することをアプリに要求するのならば、少なくとも
その反応するスレッドは負担のかかるUserInterface(以降UIと略します)
を保持するスレッドとは別のスレッドにするべきですよね。で、そういう
アプリだと、VB6の機能のみでは作りにくいのが現状です。UIを持たない
ActiveX EXEとして作るという手もありますが、それでもUIを持つEXEとの
通信がネックになります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。