Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

Как проверить что файл записан на диск, а не висит в кэше?   Найти похожие ветки 

 
Darrin   (2003-05-27 13:24) [0]

Мастера, подскажите как проверить что файл записался на носитель, а не висит в кэше записи.
Проблема в том, что носитель сменный (Flash Disk), а прикопированиии файла на него происходит след. штука: винда говорит что мол файл записан, все круто, а на самом деле: пишет-пишет и пишет это файло из буфера записи. Так вот, если отключить флешку сразу, как только винда скажет что все круто будет большая 00, файло не допишется со всеми вытекающими от сюда последствиями.


 
DmS   (2003-05-27 13:37) [1]

Флешку надо сначала отключать, а потом вытаскивать из гнезда. Если запись не завершена, то драйвер не позволит отключить диск.


 
Digitman   (2003-05-27 13:40) [2]

см. FlushFileBuffers()


 
Darrin   (2003-05-27 14:01) [3]

> DmS (27.05.03 13:37)
Это сложно объяснять армии тупых пользователей. И случаем не подскажешь: как програмно её отключить (не лазя в окошко отключения USB устройств)

> Digitman © (27.05.03 13:40)
Эта функция конечно выталкивает все из буфера, только вот момент когда это выталкивание завершиллось неопределить. :(



 
Palladin   (2003-05-27 14:04) [4]


> Это сложно объяснять армии тупых пользователей. И случаем
> не подскажешь: как програмно её отключить (не лазя в окошко
> отключения USB устройств)

тогда недозапись это проблемма армии тупых пользователей, а ни как не твоя...


 
Darrin   (2003-05-27 14:04) [5]

Пенка то в чем: чтоб именно момент 100% записи на флешку уловить, чтоб сказать юзверю, что он мол может флешку тавось ...


 
.::D.e.M.o.N.i.X::.   (2003-05-27 14:46) [6]

Может тебе поможет:

repeat
BytesCopied := FileRead(Source, CopyBuffer^, 8192); //Читаем из файла
if BytesCopied > 0 then //Если удачно прочитали, то...
begin
Suc:=FileWrite(Dest, CopyBuffer^, BytesCopied);//Записиваем, что прочитали
if Suc < 0 then
raise EFCantWrite.Create(Format(SFCantWrite,[FileName]));
i:=i + suc; //Счетчик
end

FlushFileBuffers(Source);//Очистка буфера исходного файла
FlushFileBuffers(Dest);//Очистка буфера записываемого файла

until iFileLength<= i; //iFileLength-размер файла в байтах

Sleep(1000)//т.к. флопик после окончания записи/чтения где-то 1 сек. убирает пишущую головку и горит лампочка
ShowMessage("Чел, может хватит тупить, вытаскивай флопик!!!");

Переменную i можешь связать с ProgressBar, а за максимум взять размер файла (iFileLength).


 
MalkoLinge   (2003-05-27 15:41) [7]

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


 
Sha   (2003-05-27 16:38) [8]

FILE_FLAG_WRITE_THROUGH or FILE_FLAG_NO_BUFFERING




Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
6-26633
sergey2
2003-02-23 20:10
2003.06.09
Как вытащить рисунок (png) из HTML страницы?


1-26477
.::D.e.M.o.N.i.X::.
2003-05-29 14:12
2003.06.09
Вопрос по ListView


7-26794
Deedlit
2003-04-04 13:05
2003.06.09
Определение состояния функциональных клавиш


6-26643
Micke
2003-03-30 22:01
2003.06.09
TWebBrowser


14-26784
fadel
2003-05-23 19:12
2003.06.09
А как написать плагин к Фотошопу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский