Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.02.2017, 12:51
Аватар для Klyaksa
Klyaksa Klyaksa вне форума
Новичок
 
Регистрация: 07.01.2012
Сообщения: 90
Репутация: 10
По умолчанию Глюк с Blockwrite

Всем привет! Работая на днях с файлами наткнулся на такой глюк с процедурой Blockwrite. Если я начинаю записывать этой процедурой файл, у меня он почему-то записывается куда-то в оперативную память а потом только на флешку. В итоге программа показывает что файл до копировался, а на самом деле еще копируется. Этот вывод я сделал через прогу Procmon. Как мне обойти этот буфер?
Ответить с цитированием
  #2  
Старый 16.02.2017, 16:24
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

И CloseFile делается?
Если что, политика в диспетчере устройств. Скриншот сейчас сделать не в силах, с телефона я.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 16.02.2017, 20:59
Аватар для Klyaksa
Klyaksa Klyaksa вне форума
Новичок
 
Регистрация: 07.01.2012
Сообщения: 90
Репутация: 10
По умолчанию

В политике отключал кеширование, не помогло.
Цитата:
Сообщение от NumLock
И CloseFile делается?
Меня больше всего удивило что файл закрылся, но продолжает записыватся.
Изображения
Тип файла: png 1.png (11.1 Кбайт, 4 просмотров)
Тип файла: png 2.png (9.7 Кбайт, 4 просмотров)

Последний раз редактировалось Klyaksa, 16.02.2017 в 21:04.
Ответить с цитированием
  #4  
Старый 16.02.2017, 21:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Т.е все в порядке, все данные на флешке сохранены?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 16.02.2017, 21:54
Аватар для Klyaksa
Klyaksa Klyaksa вне форума
Новичок
 
Регистрация: 07.01.2012
Сообщения: 90
Репутация: 10
По умолчанию

Данные все нормально сохраняются. Он только сначала показывает скорость в районе 300 Мбайт/сек потом приложение в конце висит. Пытаюсь закрыть приложение оно закрывается и в диспетчере задач висит один поток от моего приложения.

Последний раз редактировалось Klyaksa, 16.02.2017 в 21:56.
Ответить с цитированием
  #6  
Старый 16.02.2017, 21:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Klyaksa
В политике отключал кеширование, не помогло.
Меня больше всего удивило что файл закрылся, но продолжает записыватся.

Это нормально для флешек. Там есть аппаратное/низкоуровневое кеширование. При активации безопасного отключения USB накопителя, ОС принудительно форсирует сохранение этого кеша. А пока флешка активна данные могут лежать в буфере сколь угодно долго. только это должно быть прозрачно для прикладных программ. Т.е. даже есть ФИЗИЧЕСКИ данные еше не записаны, но (другая) программа читает их, они должны считаться нормально, как будто уже записаны.
Ответить с цитированием
  #7  
Старый 16.02.2017, 22:02
Аватар для Klyaksa
Klyaksa Klyaksa вне форума
Новичок
 
Регистрация: 07.01.2012
Сообщения: 90
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А пока флешка активна данные могут лежать в буфере сколь угодно долго.
Жаль что обойти этот буфер нельзя Так и незнаешь когда он там до копируется. И отменить копирование тоже никак не получается, так как буфер не программы а операционной системы.
Ответить с цитированием
  #8  
Старый 17.02.2017, 01:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Этот - нельзя.
Можно только попросить ОС отмонтировать флешку - тогда ОС сама все сделает.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter