powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с файлом
3 сообщений из 3, страница 1 из 1
Работа с файлом
    #32465523
Highlander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникает ситуация - в программе есть объект, методы которого позволяют данные из этого объекта записать в файл. Причем сам объект не показывает, когда запись в файл завершилась. А эти данные из файла потом хочется считать и запихнуть в базу - ну извратный метод, но ничего другого нет... Так вот проблема в том, что иногда объект не успевает сохранить данные, а я уже успеваю зачитать этот файл :(
Так вот можно ли проверить, что данный файл кто то открыл на запись?? Скорее всего это должно получится через API, но я ненашел каким образом...
Может кто уже сталкивался с подобным??
...
Рейтинг: 0 / 0
Работа с файлом
    #32466008
Дмитрий Валуев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и без АПИ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
' This function checks to see if a file is open or not. If the file is
' already open, it returns True. If the file is not open, it returns
' False. Otherwise, a run-time error occurs because there is
' some other problem accessing the file.

Public Function IsFileOpen(FileName As String) As Boolean
    Dim filenum As Integer, errnum As Integer

    On Error Resume Next   ' Turn error checking off.
    filenum = FreeFile()   ' Get a free file number.
    ' Attempt to open the file and lock it.
    Open FileName For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.

    ' Check to see which error occurred.
    Select Case errnum

        ' No error occurred.
        ' File is NOT already open by another user.
        Case 0
         IsFileOpen = False
        'File doesn't exists
        Case 53
            IsFileOpen = False
        ' Error number for  "Permission Denied." 
        ' File is already opened by another user.
        Case 70
            IsFileOpen = True
        'Path not found
        Case  76 
            IsFileOpen = False
        ' Another error occurred.
        Case Else
            Error errnum
    End Select

End Function

Работает не всегда. Например, если текстовый файл открыт в блокноте, то он не считается занятым.
...
Рейтинг: 0 / 0
Работа с файлом
    #32466602
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот можно ли проверить, что данный файл кто то открыл на запись?
- такая проверка возможна только при монопольном доступе к файлу.
Попробуй сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
объект.записать_файл( "C:\файл1.tmp" )
объект.записать_файл( "C:\файл2.tmp" )
Do While  Dir( "C:\файл2.tmp" ) = ""
    'ждём 1сек.
    PauseTime = 1
    Start = Timer
    Do While Timer < Start + PauseTime
        DoEvents
    Loop
Loop
'C:\файл2.tmp появился, значит C:\файл1.tmp записан.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работа с файлом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]