ИМХО, у boevik'а быстрее код. Так как у него не создается временной переменной типа String. И вообще проверять string на пустоту лучше через len, нежели через пустую переменную "".
NeForm@t , извини, но у тебя ГРУБЕЙШАЯ ошибка в коде.
давай разберем, что пройсходит в кнопке 1, если Dir впзвращает что либо, то Len(Dir(p$)) > 0 возвращает True и происходит действие Me.Caption = "file is exists"
что пройсходит в кнопке 2, если Dir впзвращает что либо, то Dir(p$) = "" возвращает False и НЕ происходит действие Me.Caption = "file is exists".
Остается добавить что Dir(p$), когда p$ пусто, возвращает первый попавшийся файл.
Твой тест не был сделан на равных условиях.
Измени строку условия во второй кнопке на
If Dir(p$) <> "" Then Me.Caption = "file is exists", и замерь время.
Нет, 1-й код он даже по самой идее - быстрее, а для измерений не следует применять Timer... она неверно бывает отображает время... Пользуем - GetTickCount
Len не должен быть быстрее, ведь это только лишний вызов функции, а там везде используется variant, как я понял, поэтому и из-за проверки целого прироста производительности не происходит. Да и вообще, Dir - не есть хорошо - существует много более быстрых способов, SHFileExist (кажется так) или CreateFile...
Да это все в большей степени от оптимитзации зависит... Вот что мы видим...
Не изменяя код: 1. 6440 2. 0751 3. 982
А теперь возьмем не существующую папку... Я брал F:\NewFolder. Результаты уже не так сильно различаются: 1. 2133 2. 1022 3. 1322
Теперь берем папку существующую, но не очевидную, как "с:\": 1. 8873 2. 0841 3. 1132
При этом не стоит забывать что в первом случае используется функция не одна функция и что Dir не просто возвращает 1/0, в зависимости от существования файла, она еще и возвращает имя первого файла в папке, да и к тому же "запоминает" путь... т.к. получение последующих файлов осуществляется простым ее вызовом, без параметров... Да, и еще Dir - работает с атрибутами файлов... Отсюда и результаты...
Не смотря на выводы, я все равно останусь приверженцем АПИ, т.к. на мой взгляд это более удобно, правильно, не требуется доп. подключения библиотек...