| Автор
| Сообщение |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
Увеличивать размер буффера файла можно с помощью комманды WriteFile. А вот каким образом уменьшить?? И возможно ли такое вообще, не пересоздавая файл по новой??? _________________
 |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
С помощью команды WriteFile нельзя ни увеличивать, ни уменьшать размер буфера файла. Если ты не указал явно не использовать буферизацию при CreateFile, буфером заведует система в зависимости от установленной в ней стратегии буферизации. Ты никак этим процессом не управляешь... кроме разве что принудительной выгрузки буферов через FlushFileBuffers _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 dogma
aka Достоевский

Возраст: 27
Знак зодиака: 
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
|
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
А что там подробнее - если при вызове CreateFile указать флаг FILE_FLAG_NO_BUFFERING, то система не будет использовать дисковый буфер, и данные будут писаться на диск непосредственно из указанной области памяти, минуя кеш (в смысле, системный кеш. Аппаратный кеш самого винта, естественно, будет работать как ни в чем не бывало). При использовании этого флага, правда, возникают какие-то ограничения на размер записываемых/считываемых данных... я уже не помню, надо МСДН смотреть. Кажется, он должен быть кратным размеру сектора на диске.
А в WriteFile ты просто указываешь область памяти и ее размер, откуда надо писать в файл _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
to DrPass
Брр... Ты меня совсем запутать решил... Какой, какой области...
to all_people
Всё гораздо проще....
Например создаём новый файл 0 байт. И пишем в него 6 байтов например 'HELLO!'... Дальше например понадобилось убрать восклецательный знак...
Это можно зделать 2-мя способами...
1-й) заменить 6-й байт на #0 (он-же chr(0)) но в этом случее размер файла останется всё тех-же 6 байт
2-й) Изменить размер файла при помощи какой либо функции из API до 5-ти байтов...
Я хочу узнать есть ли в WinAPI такая функция которая меняет размер файла??? _________________
 |
|
| В начало |
|
 |
|
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
to TuXAPuK
Это ты решил нас запутать, злодей Если тебе файл обрезать надо, причем тут | Цитата: | | размер буффера файла |
Указать винде обрезать файл нельзя, но если он у тебя уже открыт для записи, ты можешь принудительно установить конец файла там, где у тебя стоит файловый указатель, функция SetEndOfFile _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
to cybermerlin
Совершенно неважно... Любой бинарный файл...
to DrPass
Спасибо попробую... _________________
 |
|
| В начало |
|
 |
|
|
|
Цитата |
|
| Цитата: | | установить конец файла там, где у тебя стоит файловый указатель, функция SetEndOfFile |
либо вставить в файл на это мессто знак конец документа.
по другому пока не знаю |
|
| В начало |
|
 |
|
|
 |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
| cybermerlin писал(а): | | либо вставить в файл на это мессто знак конец документа. | Чё это за знак такой?? Чёт я про такой нефига не слышал??  _________________
 |
|
| В начало |
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Это такая хрень в текстовых документах, признак конца файла. В бинарных файлах не применяется. _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
to DrPass
| Цитата: | | В бинарных файлах не применяется |
не знал спасибо |
|
| В начало |
|
 |
 Gelios
Oracle-вый маньяк, Админ

Возраст: 37
Знак зодиака: 
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
|
|
|
Цитата |
|
и вообще это чисто логическая фича. _________________ нельзя давать всем всего, ибо всех много, а всего мало |
|
| В начало |
|
 |
|