Копирование файла с помощью Get - Put

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

Копирование файла с помощью Get - Put

Сообщение IAMRAT » 16.08.2011 (Вт) 11:44

Ни когда не работал с файлами в Бинарном режиме. Почитал MSDN... вроде должно работать, так нет. Не пойму в чем ошибка.
Код: Выделить всё
Dim buf() As Byte
Open "C:\001.bin" For Binary As #1
Open "C:\002.bin" For Binary As #2
Get #1, , buf
Put #2, , buf
Close #1
Close #2

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Копирование файла с помощью Get - Put

Сообщение Хакер » 16.08.2011 (Вт) 11:55

Buf имеет нулевой размер. 0 байт читается, 0 байт пишется.

Впрочем, если кто-то всерьёз решит делать вышеуказанное для копирования файлов, то это будет очень тупо.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

IAMRAT
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 04.04.2005 (Пн) 13:17

Re: Копирование файла с помощью Get - Put

Сообщение IAMRAT » 16.08.2011 (Вт) 12:05

Копировать - тупо, это я не спорю. Просто разбираюсь с Binary.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Копирование файла с помощью Get - Put

Сообщение Mikle » 16.08.2011 (Вт) 18:26

Код: Выделить всё
Dim buf() As Byte
Dim nf1 As Integer
Dim nf2 As Integer

nf1 = FreeFile
Open "C:\001.bin" For Binary As #nf1
nf2 = FreeFile
Open "C:\002.bin" For Binary As #nf2
  ReDim buf(Lof(nf1)-1)
  Get #nf1, , buf
  Put #nf2, , buf
Close #nf1
Close #nf2

IAMRAT
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 04.04.2005 (Пн) 13:17

Re: Копирование файла с помощью Get - Put

Сообщение IAMRAT » 17.08.2011 (Ср) 11:48

А почему нужно уменьшать массив на один байт? Вроде и без этого все работает.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Копирование файла с помощью Get - Put

Сообщение Mikle » 17.08.2011 (Ср) 14:12

Задавая размер массива с помощью Dim (ReDim), ты задаёшь не РАЗМЕР, а ВЕРХНИЙ ИНДЕКС. Индексы нумеруются от нуля (по умолчанию), то есть
Код: Выделить всё
Dim a(9) As Byte

создаёт массив на 10 байт.
Если не уменьшить индекс на 1, получится файл на 1 байт длиннее, чем нужно.

IAMRAT
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 04.04.2005 (Пн) 13:17

Re: Копирование файла с помощью Get - Put

Сообщение IAMRAT » 18.08.2011 (Чт) 10:14

Точно. Спасибо. Все работает, разобрался.


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 25

    TopList