VB6: binary-файлы, записанные оператором Put, превышают разм

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
batmax
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 06.08.2004 (Пт) 20:32

VB6: binary-файлы, записанные оператором Put, превышают разм

Сообщение batmax » 25.09.2006 (Пн) 14:31

Я открываю входной и выходной файлы как binary, читаю из входного файла заголовок и НЕКОТОРЫЕ (не все) записи, затем пишу заголовок и эти записи в выходной файл. Использую операторы Get/Put. Проблема: длина выходного файла всегда РАВНА длине входного, хотя очевидно он должен быть короче. Содержимое похоже на мусор и части входного файла. Я уже пробовал копировать в выходной файл лишь один байт из входного и сразу закрывать, всё равно - длина та же.
Может, я что-то не так делаю ?
inputSHP = FreeFile
Open strSHPFileName & ".shp" For Binary As inputSHP
outputSHP = FreeFile
Open strSHPFileName & constNewFilesPostFix & ".shp" For Binary As outputSHP
'дальше, например, так:
Get inputSHP, 33, lngShapeType
lngNewShapeType = lngShapeType
If Me.CheckConvert.Value = 1 Then
Select Case lngShapeType
Case 3
lngNewShapeType = 5
Case 5
lngNewShapeType = 3
End Select
End If
Put outputSHP, 33, lngNewShapeType
'закрываем файлы в обратном порядке
Close outputSHP
Close inputSHP

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.09.2006 (Пн) 15:08

Во-первых, пользуйся тэгами форматирования, во-вторых, привиденный фрагмент не дает возможности вникнуть в проблему, в-третьих код
Код: Выделить всё
Put outputSHP, 33, lngNewShapeType
это код записи чего-то в байт с нумером 33, откуда собственно это что-то и было считано, если весь файл читается и записывается таким же образом, то не стоит удивляться размерам нового файла и ненужному мусору.


Поправил опечаточку
Последний раз редактировалось Viper 25.09.2006 (Пн) 15:17, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.09.2006 (Пн) 15:12

Не позицию, а байт, файл открыт для бинарного доступа.
Lasciate ogni speranza, voi ch'entrate.

batmax
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 06.08.2004 (Пт) 20:32

Сообщение batmax » 25.09.2006 (Пн) 15:16

Всё, уже сам понял: надо уничтожать выходные файлы, перед тем как открывать на запись!
Вот так:
On Error Resume Next 'Это на случай, если файла НЕ существует
Kill strSHPFileName & constNewFilesPostFix & ".shp"
Тема закрыта.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 122

    TopList