-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Embarcadero C++ Builder, функция FileOpen, время открытия файла

Понедельник, 28 Декабря 2020 г. 14:30 + в цитатник
Grigav: Написал программу, связанную с каталогизацией файлов на жестком диске. Файлы ищутся с помощью функций FindFirst и FindNext. Затем я открываю каждый найденный файл, читаю из него маленький фрагмент (1024 байта) и аккуратно закрываю файл. Так вот, обнаружилось, что большинство файлов открываются нормально, но некоторые (замечено за некоторыми файлами EXE и PDF) открываются по нескольку секунд! Фрагмент текста, которым это было установлено:

    t1=GetTime(); //Опрашиваю "системные часы"
    MyTmp=FileOpen(FN,fmOpenRead | fmShareDenyNone); //Открываю файл с именем FN для чтения (имя FN формируется в соответствии с FindNext)
    t2=GetTime(); //Повторно опрашиваю системные часы
    __int64 t3;
    t3=MilliSecondsBetween(t2,t1); //Оцениваю время в миллисекундах, ушедшее на открытие файла
    if (t3>10000) //Если это время превосходит 10 секунд
    {
    UnicodeString ZZ;
    ZZ=t3;
    Memo2->Lines->Add(ZZ+FN); //помещаю значение времени и имя файла в табличку-отчет
    }


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

Вопрос: может быть, при открытии файла следует устанавливать какие-то другие атрибуты? Сталкивался ли кто-нибудь еще с подобной проблемой?

https://forum.sources.ru/index.php?showtopic=421053&view=findpost&p=3843201

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку