ファイルの使用を独占する

<戻る

ここに載せてあるソースコードは、参考のために載せてあります

サンプルコードは、一番下にLZHとしてあります




Option Explicit


'下記の表記でもロックが可能です
'Open "" For Input Lock Read As #1
'Open "" For Input Lock Write As #1
'
'Open "" For Output Lock Read As #1
'Open "" For Output Lock Write As #1
'
'Open "" For Append Lock Read As #1
'Open "" For Append Lock Write As #1
'
'Open "" For Binary Lock Read As #1
'Open "" For Binary Lock Write As #1



'ファイル番号を関数が共有するために
'モジュール変数にしておきます
Dim m_fNumber(1 To 2)   As Integer
Dim m_fPath             As String



'--------------------------------------
' 関数集
'--------------------------------------

'ファイルを開きます
Sub SingleFileOpen(ByVal lngNumber As Integer)
    On Error GoTo ErrProcess
    
    'ファイル番号を生成します
    m_fNumber(lngNumber) = FreeFile
    'ファイルを開きます
    '(binaryモードに限り、
    ' 開いたままでプロシージャを出てもOK)
    Open m_fPath For Binary As #m_fNumber(lngNumber)
    
    Exit Sub
    
ErrProcess:
    MsgBox Err.Description, vbExclamation
End Sub

'ファイルにロックをかけます
Sub SingleFileLock(ByVal lngNumber As Integer)
    On Error GoTo ErrProcess
    
    'ファイルをロックします
    Lock #m_fNumber(lngNumber)
    
    Exit Sub
    
ErrProcess:
    MsgBox Err.Description, vbExclamation
End Sub

'ファイルにデータを書き込みます
Sub SingleFileWrite(ByVal lngNumber As Integer)
    On Error GoTo ErrProcess
    
    '日付データを書き込みます
    Put #m_fNumber(lngNumber), , Now
    
    Exit Sub
    
ErrProcess:
    MsgBox Err.Description, vbExclamation
End Sub

'ファイルのロックを解除します
Sub SingleFileUnLock(ByVal lngNumber As Integer)
    
    'ファイルのロックを解除します
    Unlock #m_fNumber(lngNumber)
    
End Sub

'ファイルを閉じます
Sub SingleFileClose(ByVal lngNumber As Integer)
    
    'ファイルを閉じます
    Close #m_fNumber(lngNumber)
    
End Sub



'--------------------------------------
' ファイル操作1
'--------------------------------------

'ファイルを開くボタンを押しました
Private Sub Command1_Click()
    Command1.Enabled = False
    SingleFileOpen 1
End Sub

'ロックボタンを押しました
Private Sub Command2_Click()
    Command2.Enabled = False
    SingleFileLock 1
End Sub

'データの書き込みボタンを押しました
Private Sub Command3_Click()
    Command3.Enabled = False
    SingleFileWrite 1
End Sub

'ロック解除ボタンを押しました
Private Sub Command4_Click()
    Command4.Enabled = False
    SingleFileUnLock 1
End Sub

'ファイルを閉じるボタンを押しました
Private Sub Command5_Click()
    Command5.Enabled = False
    SingleFileClose 1
End Sub



'--------------------------------------
' ファイル操作2
'--------------------------------------
Private Sub Command6_Click()
    SingleFileOpen 2
End Sub

Private Sub Command7_Click()
    SingleFileLock 2
End Sub

Private Sub Command8_Click()
    SingleFileWrite 2
End Sub

Private Sub Command9_Click()
    SingleFileUnLock 2
End Sub

Private Sub Command10_Click()
    SingleFileClose 2
End Sub



'--------------------------------------
' フォームイベント
'--------------------------------------

'フォームをロードしました
Private Sub Form_Load()
    
    'ファイルパスを設定します
    m_fPath = "c:\windows\デスクトップ\test.txt"
    
    'desktopにtest.txtを生成して
    '日付と時刻を書き込みます
    FileWrite m_fPath, Now
    
    'ファイル操作2でロックしなくても
    'エラーの確認ができるため
    '無効にしておきます
    '(有効にしても問題ありません)
    Command7.Enabled = False
    Command9.Enabled = False
    
End Sub

'フォームの終了が呼び出されました
Private Sub Form_Unload(Cancel As Integer)
    '開いているファイルをすべて閉じます
    Reset
End Sub


<戻る

Sample90.lzh


http://hp.vector.co.jp/authors/VA015521/