Доступ к файлам в скрытой папке

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kardinalli
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 01.04.2009 (Ср) 1:34

Доступ к файлам в скрытой папке

Сообщение Kardinalli » 04.04.2009 (Сб) 21:37

Столкнулся с такой проблемой, нужно обеспечить доступ к файлам, находящимся в скрытой папке.
Получается так, запись в файл идет без проблем, а вот чтение - ни в какую. Как решить проблему?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Доступ к файлам в скрытой папке

Сообщение iGrok » 05.04.2009 (Вс) 0:07

Kardinalli писал(а):Столкнулся с такой проблемой, нужно обеспечить доступ к файлам, находящимся в скрытой папке.
Получается так, запись в файл идет без проблем, а вот чтение - ни в какую. Как решить проблему?

Что значит "ни в какую"?
Ошибку какую-то выдаёт? Тогда текст ошибки в студию. Или что ещё происходит?

У меня всё работает.
Код: Выделить всё
Option Explicit

Private mFilePath As String
Private mFolderPath As String
Private tb As Control

Private Sub Load()
Dim hF As Long, tS As String
    hF = FreeFile
    Open mFilePath For Binary As hF
        tS = Space$(LOF(hF))
        Get #hF, , tS
        tb.Caption = tS
    Close hF
End Sub

Private Sub Save()
Dim hF As Long
    hF = FreeFile
    Open mFilePath For Append As hF
        Print #hF, , tb.Caption
    Close hF
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If Shift = vbCtrlMask Then
        If KeyCode = vbKeyS Then
            Save
        ElseIf KeyCode = vbKeyL Then
            Load
        End If
    End If
End Sub

Private Sub Form_Load()
    mFolderPath = App.Path
    mFolderPath = mFolderPath & IIf(Right$(mFolderPath, 1) = "\", "", "\") & "testfolder"
    On Error Resume Next
    MkDir mFolderPath
    SetAttr mFolderPath, vbHidden
    On Error GoTo 0
    mFilePath = mFolderPath & "\testfile.txt"

    Set tb = Me.Controls.Add("VB.Label", "txtContent")
    tb.Left = Me.ScaleLeft + 60
    tb.Top = Me.ScaleTop + 60
    tb.Width = Me.ScaleWidth - 120
    tb.Height = Me.ScaleHeight - 120
    tb.BorderStyle = 1
    tb.Visible = True

    tb.Caption = "Проверка записи и чтения файла, находящегося в скрытой папке" & vbCrLf & "Запись в файл - Ctrl-S, чтение - Ctrl-L"
End Sub

Private Sub Form_Resize()
    If Not tb Is Nothing Then
        tb.Left = Me.ScaleLeft + 60
        tb.Top = Me.ScaleTop + 60
        tb.Width = Me.ScaleWidth - 120
        tb.Height = Me.ScaleHeight - 120
    End If
End Sub
label:
cli
jmp label

Kardinalli
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 01.04.2009 (Ср) 1:34

Re: Доступ к файлам в скрытой папке

Сообщение Kardinalli » 05.04.2009 (Вс) 0:23

Сорри, нашел в чем была проблема, большое спасибо! :oops: :oops:

Кстати, чтобы работать со скрытыми файлами (не папками), приходится сначала менять атрибуты файла на видимый, затем читать/записывать, затем снова менять атрибут. А есть вариант, не менять атрибуты?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Доступ к файлам в скрытой папке

Сообщение Хакер » 05.04.2009 (Вс) 1:17

Нет необходимости менять атрибут, не выдумывай.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Доступ к файлам в скрытой папке

Сообщение VBTerminator » 05.04.2009 (Вс) 8:37

Kardinalli писал(а):Ошибку какую-то выдаёт? Тогда текст ошибки в студию. Или что ещё происходит?

Вероятно, у папки что-то с правами на чтение.

Kardinalli
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 01.04.2009 (Ср) 1:34

Re: Доступ к файлам в скрытой папке

Сообщение Kardinalli » 05.04.2009 (Вс) 10:43

Хакер писал(а):Нет необходимости менять атрибут, не выдумывай.


Читается из скрытого файла без проблем, запись выдает ошибку выполнения "75".

На запись используется примерно вот такой код:
fnum = FreeFile
SetAttr Pt & "\file.ini", 0 'открыть файл для чтения,атрибут "архивный"
Open Pt & "\file.ini" For Output As #fnum
Write #fnum, ms1 '
Close #fnum
SetAttr Pt & "\file.ini", 2 'открыть файл для чтения,атрибут "скрытый"

Если исключить операции по изменению атрибута, то и выходит указанная ошибка.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Доступ к файлам в скрытой папке

Сообщение iGrok » 05.04.2009 (Вс) 12:28

Kardinalli писал(а):Если исключить операции по изменению атрибута, то и выходит указанная ошибка.

Используй For Binary вместо For Output.
Ну и соответственно, работай с файлом через Get/Put, а не Input/Write(Print).
label:
cli
jmp label

Kardinalli
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 01.04.2009 (Ср) 1:34

Re: Доступ к файлам в скрытой папке

Сообщение Kardinalli » 05.04.2009 (Вс) 22:14

iGrok писал(а):Используй For Binary вместо For Output.
Ну и соответственно, работай с файлом через Get/Put, а не Input/Write(Print).

Точно, этот вариант не требует предварительного изменения атрибутов, спасибо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 45

    TopList  
cron