Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WriteFile 
V
    Опции темы
G0L1a7h
Дата 21.5.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 1.3.2008

Репутация: нет
Всего: нет



Здравствуйте!
Столкнулся с проблемой, раньше вроде такова не было..

Имеются несколько массивов байт вида:
BYTE buf[5] = {0x00, 0x01, 0x02, 0x03, 0x04};
после некоторых действий с ними записываю их в файл функцией WriteFile();
т.е. функцию вызываю столько раз сколько массивов.
Но записанном файле появляется много "левых" символов.
Почему так получается? как этого избежать? 


PM MAIL   Вверх
Alexeis
Дата 21.5.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



G0L1a7h, скорее всего неверный код записи. smile


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
kosmonaFFFt
Дата 21.5.2008, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 538
Регистрация: 14.4.2008
Где: Иннополис

Репутация: нет
Всего: 5



ИМХО у тебя не обрезается файл после записи, когда ты пишешь больше чем старый размер файла. Попробуй обрезать.


Код

SetEndOfFile Function

Sets the physical file size for the specified file to the current position of the file pointer.
The physical file size is also referred to as the end of the file. The SetEndOfFile function can be used to truncate or extend a file. To set the logical end of a file, use the SetFileValidData function.
Syntax
BOOL WINAPI SetEndOfFile(
  __in  HANDLE hFile
);

Parameters
hFile
A handle to the file to be extended or truncated.
 The file handle must be created with the GENERIC_WRITE access right. For more information, see File Security and Access Rights.
Return Value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero (0). To get extended error information, call GetLastError.
Remarks
The SetEndOfFile function can be used to truncate or extend a file. If the file is extended, the contents of the file between the old end of the file and the new end of the file are not defined.
Each file stream has the following:
File size: the size of the data in a file, to the byte.
Allocation size: the size of the space that is allocated for a file on a disk, which is always an even multiple of the cluster size.
Valid data length: the length of the data in a file that is actually written, to the byte. This value is always less than or equal to the file size.
 The SetEndOfFile function sets the file size. Use SetFileValidData to set the valid data length. 
If CreateFileMapping is called to create a file mapping object for hFile, UnmapViewOfFile must be called first to unmap all views and call CloseHandle to close the file mapping object before you can call SetEndOfFile.
Transacted Operations
If there is a transaction bound to the handle, then the change in the end-of-file position is transacted.
Requirements
Client
Requires Windows Vista, Windows XP, or Windows 2000 Professional.
  Server
Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
  Header
Declared in WinBase.h; include Windows.h.
  Library
Use Kernel32.lib.
  DLL
Requires Kernel32.dll



--------------------
user posted image
PM MAIL ICQ   Вверх
G0L1a7h
Дата 21.5.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 1.3.2008

Репутация: нет
Всего: нет



ммм...незнаю что и сказать =\
После прочтения поста Alexeis`a открыл проект, попробовал еще раз -- "левые" символы присутствуют..
Ни чего не меняя пошел не перекур, пришел все работает как надо  smile  smile  smile 
PM MAIL   Вверх
dizzy1984
Дата 22.5.2008, 05:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: нет
Всего: 25



По-моему, без кода тут ничего конкретно не скажешь... Если у тебя сейчас работает, проблема скорее всего осталась...
PM MAIL   Вверх
G0L1a7h
Дата 22.5.2008, 05:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 1.3.2008

Репутация: нет
Всего: нет



не, проблема исчезла.. 500 раз уже проверил.. все прекрасно работает..

Цитата

когда ты пишешь больше чем старый размер файла

файл создается новый.

как-то так.. ну короче все стандартно..


Код

BYTE buf[5] = {0x00, 0x01, 0x02, 0x03, 0x04};
WriteFile(hFile,buf,5,&writen,0);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.