Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: подвела функция
 
 автор: час   (12.12.2008 в 16:50)   личное сообщение
 
 

Function CheckDir(MyPath As String) As Boolean
'Функция проверки на наличие файла по указанному пути
CheckDir = False
On Error Resume Next
If Dir(MyPath) <> "" Then CheckDir = True

End Function

Может есть получшее?

  Ответить  
 
 автор: Кабан   (12.12.2008 в 16:57)   личное сообщение
 
 


Public Function fnFileExists(strFilePath As String) As Boolean
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    fnFileExists = objFSO.FileExists(strFilePath)
    Set objFSO = Nothing
End Function

Public Function fnGetSpecFolder(btSpec As Byte) As String
    Dim objFSO As Object
    fnGetSpecFolder = ""
    If btSpec >= 0 And btSpec < 3 Then
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        fnGetSpecFolder = objFSO.GetSpecialFolder(btSpec)
        Set objFSO = Nothing
    End If
End Function




Function CheckDir(MyPath$) As Boolean
    CheckDir = Len(Dir(MyPath))
End Function

  Ответить  
 
 автор: час   (12.12.2008 в 16:58)   личное сообщение
 
 

Спасибо, Силыч!!!!!!
С тяпницей тебя

  Ответить  
 
 автор: час   (12.12.2008 в 16:59)   личное сообщение
 
 

Но тута FSO надо подключаь........

  Ответить  
 
 автор: Кабан   (12.12.2008 в 17:01)   личное сообщение
 
 

а какие проблемы? ;)

но вообщето в данном случае - не надо :)

  Ответить  
 
 автор: час   (12.12.2008 в 17:08)   личное сообщение
 
 

Прмблемы в отправке к заказчику.
Надо как то автомаически подцеплять, коли у нёга нема етого........

  Ответить  
 
 автор: Кабан   (12.12.2008 в 17:15)   личное сообщение
 
 

ты недочитал, наверное :) есть раннее связывание, а есть - позднее.. в позднем не надо связывать через Референс :)

мне кажецца, что этат системфайлобжект живет в винде
хотя может я и не прав
щяс поправят знатоки

на всякий случай : по крайней мере у моих клиентов с 2002ого года этот код не давал сбои

  Ответить  
 
 автор: час   (12.12.2008 в 21:09)   личное сообщение
 
 

  Ответить  
 
 автор: Bellerofont   (13.12.2008 в 10:10)   личное сообщение
 
 

Получал я от пользователей сообщение об ошибке
Error 429: ActiveX component can't create object
на строку
CreateObject("Scripting.FileSystemObject")

Ведь библиотека действительно может быть не зарегистрирована.

Но это бывает очень редко, не чаще чем 1 раз на 1000

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 16:57)   личное сообщение
 
 

использую это:

'Проверка наличия указанного файла
Public Function FileExists(ByVal strFileFullPath As String) As Boolean
    Dim lSize As Long
    On Error GoTo Err_

    lSize = -1
    If GetAttr(strFileFullPath) And vbDirectory Then GoTo Err_
    lSize = FileLen(strFileFullPath)
    FileExists = lSize > -1

Exit Function
Err_:
End Function

  Ответить  
 
 автор: час   (12.12.2008 в 17:01)   личное сообщение
 
 

Если труе - то всё в порядке..... ...

А это куда идти GoTo HandleExit

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 17:05)   личное сообщение
 
 

это я не оттуда скопироваллл :)
сейчас подправил

  Ответить  
 
 автор: час   (12.12.2008 в 17:09)   личное сообщение
 
 

Да, спасибо, всунул.........

  Ответить  
 
 автор: час   (12.12.2008 в 21:32)   личное сообщение
 
 

Эффект тот жа.
Они (функции) все проверяют не пустое ли значение, а не наличие ффайла по указанному пути.....
И если значение тока имя файла без пути , функции говорят - всё в норме - есть такой файл.............
А нет ли такой , которая действительно весь путь прощупает и ответит правду?

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 21:45)   личное сообщение
 
 

помедленнее пожалуйста....
Час, в чем возникла проблема? не пойму что-то

  Ответить  
 
 автор: час   (12.12.2008 в 21:51)   личное сообщение
 
 

Вот попробуй спроси
if FileExists("kukih") = true then msgbox "Всё в норме!!!"
CheckDir - тоже самое и все они врут

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:00)   личное сообщение
 
 

ну спросил... молчит
на msgbox "Всё в норме!!!" не выходит
Час, у тебя компилятор от чего?
***
голову дуришь наверное

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:06)   личное сообщение
 
 

аааа. доперло кажись
если путь не указан, то эти хвункции по умолчанию смотрят в 'мои документы'
и если там есть файл 'kukih', то 'все в норме'

  Ответить  
 
 автор: Bellerofont   (13.12.2008 в 09:57)   личное сообщение
 
 

>если путь не указан, то эти хвункции по умолчанию смотрят в 'мои документы'
Смотрит в текущий каталог, который может быть определен с помощью функции CurDir, а задан с помощью ChDir Statement (поэтому это не обязательно 'мои документы')

Так что поведение функции FileExists совершенно корректное. И не стоит ее изменять.
Лучше проверить что в нее передается в другом месте.

  Ответить  
 
 автор: час   (12.12.2008 в 22:06)   личное сообщение
 
 

Public Function CheckFile(strName As String) As Boolean
'Функция проверки на наличие файла по указанному пути
'
'Аргументы: strName - полный путь к требуемому файлу.
'Назначение: Проверка существования файла по указанному пути.
'Возвращает: true - существует

Dim strTemp As String
On Error Resume Next

strTemp = Dir(strName, vbHidden Or vbSystem Or vbArchive Or vbReadOnly)
CheckFile = ((Len(strTemp) > 0) And (Err.Number = 0))
Err.Clear
End Function


ни одна не работает

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:10)   личное сообщение
 
 

а если добавить это:
If InStr(1, strFileFullPath, "\") = 0 Then Exit Function

  Ответить  
 
 автор: час   (12.12.2008 в 22:11)   личное сообщение
 
 

Я уж об етом подумал...................
и ещё ":" двоеточие

  Ответить  
 
 автор: час   (12.12.2008 в 22:12)   личное сообщение
 
 

А как же люди с етим злом - что не сталкивалися что ли..................

  Ответить  
 
 автор: Bellerofont   (13.12.2008 в 09:59)   личное сообщение
 
 

>А как же люди с етим злом - что не сталкивалися что ли
Какое ж это зло?
Это правильное поведение.

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:13)   личное сообщение
 
 

у сетевых адресов двоеточий может не быть

  Ответить  
 
 автор: час   (12.12.2008 в 22:19)   личное сообщение
 
 

точно..............
а слэши они завсегда имеются

  Ответить  
 
 автор: час   (12.12.2008 в 22:20)   личное сообщение
 
 

Function CheckDir(MyPath$) As Boolean 
If InStr(1, MyPath$, "\") = 0 Then 
msgbox "Что за хрень?"
CheckDir = false
exit  Function
end if
    CheckDir = Len(Dir(MyPath)) 
End Function

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:36)   личное сообщение
 
 

ну вот и чудненько
а то думаю что за трабл на ровном месте...

  Ответить  
 
 автор: час   (12.12.2008 в 22:37)   личное сообщение
 
 


Наша функцая - самая праведная!!!!!!!!!!

  Ответить  
 
 автор: KrukVN   (12.12.2008 в 22:39)   личное сообщение
 
 

в мире

  Ответить  
 
 автор: час   (13.12.2008 в 10:54)   личное сообщение
 
 

она слэши ищет!!!!
Согласись это не то, что от неё требуется.

  Ответить  
 
 автор: час   (13.12.2008 в 10:57)   личное сообщение
 
 

надо, что ба функция действительно слева направо проверила по указанной строке - наличие папок и файла на конце, с нужным расширением.
Тода она да!!!

  Ответить  
 
 автор: час   (13.12.2008 в 13:54)   личное сообщение
 
 

примерно так вот:


Public Function File_Presence(strPathFile As String) As Boolean
'проверки наличия файла по указанному пути
Dim strTemp As String
Dim i As Integer
Dim x As Integer
Dim Check_Fiel As String 'Искомый файл
File_Presence = False ' пока предположим нету файло по пути

If Nz(strPathFile) = "" Then Exit Function
Check_Fiel = Dir(strPathFile) ' если путь верен - Выводит Искомый файл

    strTemp = ""
    x = Len(strPathFile) ' Вычленяем файл из пути
    For i = x To 1 Step -1
    If Mid(strPathFile, i, 1) = "\" Then
    strTemp = Mid(strPathFile, i + 1)
    Exit For
    End If
    Next i ' Вычленяем файл из пути

' проверяем две переменные на равность
If Nz(Check_Fiel) = Nz(strTemp) Then
File_Presence = True
'MsgBox "Имеется файл"
End If

End Function

  Ответить  
 
 автор: KrukVN   (13.12.2008 в 14:24)   личное сообщение
 
 

сдается ты уже увлекся, Час
имхо: хватит и первоначальной проверки на слэш (ты же все равно потом по нему ориентируешься)
еще имхо: мне кажется что собо париться с тем что файл определяется без наличия пути (в 'моих документах') не нужно - это не ошибка
просто старайся всегда задавать полный путь файла вот и все

  Ответить  
 
 автор: час   (13.12.2008 в 15:35)   личное сообщение
 
 

  Ответить  
 
 автор: час   (13.12.2008 в 15:51)   личное сообщение
 
 

Или вот так вот:


Public Function File_Presence(strPathFile As String) As Boolean
'проверки наличия файла по указанному пути
Dim strTemp As String
Dim i As Integer
Dim x As Integer
Dim Check_Fiel As String 'Искомый файл
File_Presence = False ' пока предположим нету файло по пути

If Nz(strPathFile) = "" Then Exit Function
Check_Fiel = Dir(strPathFile) ' если путь верен - Выводит Искомый файл
If Check_Fiel = "" Then Exit Function
    strTemp = ""
    x = Len(strPathFile) ' Проверяем папки пути
    For i = 1 To x
        If Mid(strPathFile, i, 1) = "\" Then
            strTemp = Mid(strPathFile, 1, i - 1)
            If Dir(strPathFile, vbDirectory) = "" Then
            Exit Function
            End If
        End If
    Next i                 ' Проверяем папки пути

    strTemp = ""
    x = Len(strPathFile) ' Вычленяем файл из пути
    For i = x To 1 Step -1
    If Mid(strPathFile, i, 1) = "\" Then
    strTemp = Mid(strPathFile, i + 1)
    Exit For
    End If
    Next i ' Вычленяем файл из пути

' проверяем две переменные на равность
If Nz(Check_Fiel) = Nz(strTemp) Then
File_Presence = True
'MsgBox "Имеется файл"
End If

End Function


  Ответить  
 
 автор: час   (15.12.2008 в 20:37)   личное сообщение
 
 

Фсё равно подводит.
Этот Dir - такой коварный.
В отладчике смотрю на его работу, а он - скотина
на этой строке Check_Fiel = Dir(strPathFile)
вываливает всё в ошибку, хотя путь вижу - тютелька в тютельку - верный???

Я уже в потустороннее веровать начинаю

и nz лепил Check_Fiel = nz(Dir(strPathFile) )

А через минуту иду по этому коду и фсё чудесно,
а через две минуты посылают меня на три буквы DIR.

  Ответить  
 
 автор: час   (15.12.2008 в 20:43)   личное сообщение
 
 

Так не должно, не должно быть,
Нет, нет, никогда,
Чтобы любовь захватила нас,
Ждать нужно года.
От внезапной любви,
Что приходит мгновенно,
Жди, непременно
Какая-то будет беда.

Так не должно быть,
Но снова я взгляд твой ловлю,
И понимаю, что всё это глупо и странно.
Так не должно быть,
Но сердце стучит неустанно:
"Я люблю! Я люблю!"

  Ответить  
 
 автор: Lukas   (15.12.2008 в 20:49)   личное сообщение
 
 

Так значит не функция виновата.
Это "любовь" сводит с ума.
Выход, варианты:
1. Забросить программирование. (Хотя бы до "выздоровления").
2. Срочно "разлюбить", что бы голова просветлела.

  Ответить  
 
 автор: час   (15.12.2008 в 20:51)   личное сообщение
 
 


А я вот тута
http://am.rusimport.ru/MsAccess/f2.aspx?type=1&id=1131&find=1%F1&page=-1

  Ответить  
 
 автор: Lukas   (15.12.2008 в 21:00)   личное сообщение
 
 

Теперь понятно, куда "улетела крыша".

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList