[リストへもどる]
一括表示

投稿時間:2002/08/30(Fri) 12:02
投稿者名:MANA
URL :
タイトル:
自動更新方法
このプログラムはコマンドをクリックして
ファイルを読み込むようにしてますが、これ
をフォルダ内を自動更新(5分置き)するよ
うにしたいのです。
 どうやれば良いか教えてください。

Option Explicit

Private Const Mpath = "C:\DATA\"
Private kakutyosi   As String
Private Nowdate As String
'***** テキストファイルを読み込む *****
Private Sub Command1_Click()
    Dim strMyFile() As String
    Dim strtextFile As String
    Dim filekensaku As Integer
    Dim i           As Integer
      
    Nowdate = Format$(Date, "yyyy-mm-dd") 'ファイルの名前は日付
    kakutyosi = "TxT"
    strtextFile = Dir$(Mpath & Nowdate & "\*.*")
      
    Do While strtextFile <> ""
        If StrComp(Right$(strtextFile, 3), kakutyosi, 1) = 0 Then
            filekensaku = filekensaku + 1
            ReDim Preserve strMyFile(filekensaku)
            strMyFile(filekensaku) = strtextFile
        End If
        strtextFile = Dir$
    Loop
    For i = 1 To filekensaku
        If FileLen(Mpath & Nowdate & "\" & strMyFile(i)) = 0 Then 'フ
ァイルサイズが1or0で判

        Else
            List1.AddItem strMyFile(i)
        End If
    Next i
End Sub
'***** テキストファイル読込み終了 *****

投稿時間:2002/08/30(Fri) 13:33
投稿者名:A221
Eメール:
URL :
タイトル:
Re: 自動更新方法
> このプログラムはコマンドをクリックして
> ファイルを読み込むようにしてますが、これ
> をフォルダ内を自動更新(5分置き)するよ
> うにしたいのです。
>  どうやれば良いか教えてください。

タイマーコントロールを貼り付けて5分でイベント起動してみては?
左のプロパティ関連にタイマーコントロールの使い方がありますよ。

投稿時間:2002/08/30(Fri) 14:30
投稿者名:MANA
URL :
タイトル:
Re^2: 自動更新方法
> タイマーコントロールを貼り付けて5分でイベント起動してみては?
> 左のプロパティ関連にタイマーコントロールの使い方がありますよ。

考えてみたんですが、どうやって書けば良いか分かりません。
ちょっと、助言お願いします!

投稿時間:2002/08/30(Fri) 16:54
投稿者名:A221
Eメール:
URL :
タイトル:
Re^3: 自動更新方法
タイマーコントロールをフォームに貼り付けてみてください。
インターバルはミリ秒です。

----------------------------------------------
Option Explicit

Private Counter As Long

Private Sub Form_Load()
'タイマの割り込み発生時間
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
Dim r As Long
Counter = Counter + 1

If Counter < 300 Then Exit Sub
r = MsgBox("5分たちました。")
'カウンタリセット
Counter = 0

End Sub

投稿時間:2002/08/30(Fri) 16:56
投稿者名:Say
Eメール:
URL :
タイトル:
タイマと精度
プロパティ関連はごらんになりましたか?
1秒タイマの例ですね?
残念ながらIntervalを5分には設定できません。
でも、例ではカウントアップしてますね?
1秒で1回カウントアップしますから、300カウントで5分ですね。
ということは、カウンタが300になったら、やりたい操作をやって、
カウンタを0に戻してやれば、5分毎の処理ができます。

ただし、Timerはそれほど正確ではありませんし、累積のずれが
だんだん大きくなる可能性があります。
誤差1秒前後で処理したいなら、Timerのなかで時刻を取得、保持して、
「前回の処理から5分たったか?」をチェックしてください。

=======================================================
これから下はタイマの精度を要求されるときに限り読んでください。
=======================================================

1秒以下の精度が必要な場合、
また、Timerの精度自体はOSにより10msec〜55msec程度ですから、
その程度の精度なら、Interval値を10〜55にセットし、
Timerの中でtimeGetTimeまたはGetTicCount(どちらもAPI)をよんで
経過時間をしらべます。
その際、timeGetTimeの精度は1msecですが、GetTicCountの精度は
OSにより5〜12msec程度ですので、GetTicCountを用いた場合、
Timerの精度とあわせて最悪67msecほど誤差が生じる可能性があります。

さらにそれ以上の精度が必要な場合、マルチメディアタイマAPI
(SetTimeEvent)を用いるか、ループ内でtimeGetTimeを調べることに
なります。これなら、1msec程度の誤差が期待できます。
が、前者はコールバック関数が必要ですから、APIとしてはちょっとむずかしいですし、
後者はCPU負荷が大きくなります。

参考までに、タイマを使う方法として、ほかに
サブクラス化してWM_TIMERメッセージを拾う方法と、
SetTimer(API)を使う方法がありますが、
苦労の割に精度が出ませんので割愛しました。

投稿時間:2002/08/30(Fri) 17:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: タイマと精度
私は、一度実際に測定して、その時間にあったカウント数を設定しています。
この例ですと 多分270カウント前後で5分ではないでしょうか
これですと簡単でそこそこ正確な時間に設定できるかと思います。

投稿時間:2002/08/30(Fri) 18:45
投稿者名:MANA
URL :
タイトル:
ありがとうございますっ
やってみた所、ほぼ出来ました!
どうもありがとうございましたっ♪

投稿時間:2002/08/30(Fri) 18:54
投稿者名:MANA
URL :
タイトル:
最後にもう一つ
カウント0になった後に、リスト内を一度クリアしたいのですが、
List1.Clearだと出来ません。どうすればよろしいでしょうか?