powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Незаказанный нулевой байт при записи файла
5 сообщений из 5, страница 1 из 1
Незаказанный нулевой байт при записи файла
    #37840847
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    sff_FilePos = 1
    sff_FileHandle = FreeFile(0)
    Open sff_FileName For Binary Access Write Lock Write As sff_FileHandle
    
    'SFF header
    Put sff_FileHandle, sff_FilePos, "Sfff"
    Put sff_FileHandle, sff_FilePos + 4, 1 'Version
    Put sff_FileHandle, sff_FilePos + 5, 0 'reserved
    Put sff_FileHandle, sff_FilePos + 6, 0 'User Information
...
    'Document end
    Put sff_FileHandle, sff_FilePos, 254
    Put sff_FileHandle, sff_FilePos + 1, 0
    
    Close sff_FileHandle
End Sub


Так вот, без спроса в конец файла вставляется еще один нулевой байт,
т.е. в моем случае после "254"-го байта нулевых будет 2, а не один как согласно коду.

В данном случае я могу конечно убрать последнюю строчку (типа сам добавит), но как то не канонично.
Как разрулить?
...
Рейтинг: 0 / 0
Незаказанный нулевой байт при записи файла
    #37840883
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо FilePos должно начинаться с 0, а не 1.
...
Рейтинг: 0 / 0
Незаказанный нулевой байт при записи файла
    #37840950
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Я тоже так думал, и начал сперва с
sff_FilePos = 0

Выдало ошибку.
Потом прочел:
http://www.vb6.us/tutorials/reading-and-writing-binary-files-visual-basic

The Put statement is used write data to a file opened in binary mode. The syntax, as it applies to binary files is:

Put [#]filenumber, [byte position], varname

The filenumber is any valid filenumber as defined above.

Byte position is the byte position within the file at which the writing begins. The byte position is "one-based", meaning the first byte position in the file is 1
, the second position is 2, and so on.

Так что наверно не то.
...
Рейтинг: 0 / 0
Незаказанный нулевой байт при записи файла
    #37842364
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Put sff_FileHandle, sff_FilePos + 1, 0


это лишнее
...
Рейтинг: 0 / 0
Незаказанный нулевой байт при записи файла
    #37842750
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Ну, допустим:
Код: vbnet
1.
2.
3.
4.
5.
    'Document end
    Put sff_FileHandle, sff_FilePos, 254
    'Put sff_FileHandle, sff_FilePos + 1, 0
    
    Close sff_FileHandle


Но я обратил внимание, что иногда все равно лепит два '\0', даже если комментировать
Причем код концовки прозрачный, 254 символ, дальше Close sff_FileHandle.
Что за мистификейшт?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Незаказанный нулевой байт при записи файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]