Копирование бинарного файла

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

Копирование бинарного файла

Сообщение PILIGRIM » 21.11.2005 (Пн) 5:59

Подскажите пожалуйста как в Visual Basic можно организовать копирование бинарного файла. Это должно выглядеть примерно так:
Открываем один файл для чтения, второй для записи и через цикл перемещаем информацию из одного файла в другой.
Заранее спасибо. :D

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

Сообщение alibek » 21.11.2005 (Пн) 8:57

Именно так, как ты написал, открываешь один файл для чтения, другой для записи и перемещаешь информацию из одного файла в другой.
Если, конечно, FileCopy не нравится.
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 21.11.2005 (Пн) 9:04

Код: Выделить всё
Dim sTemp As String

Open "FirstFile" For Binary Access Read As #1
    sTemp = String$(LOF(1), vbNullChar)
    Get #1, , sTemp
Close #1

Open "SecondFile" For Binary Access Write As #1
    Put #1, , sTemp
Close #1
Только цикл очень короткий получился :)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение alibek » 21.11.2005 (Пн) 9:13

Вопрос такой... А если файл будет иметь размер три гигобайта?
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 21.11.2005 (Пн) 9:21

:) Даже не сомневался, что спросят :) Тогда у него выскочит ошибка и он задаст новый вопрос - что за ошибка номер такой-то :) Тогда так
Код: Выделить всё
Dim sTemp As String

Open "FirstFile" For Binary Access Read As #1
    If Size(#1) > 2Гб Then msgbox "Куда тебе такой большой ... файл" : end
    sTemp = String$(LOF(1), vbNullChar)
    Get #1, , sTemp
Close #1

Open "SecondFile" For Binary Access Write As #1
    Put #1, , sTemp
Close #1
:lol:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.11.2005 (Пн) 10:15

2vvs_adm: Тогда встречный вопрос: а если файл будет размером 1Гб + 999 Мб?
Может проще все-таки не засорять оперативку и копировать его по частям?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 21.11.2005 (Пн) 10:58

ANDLL писал(а):2vvs_adm: Тогда встречный вопрос: а если файл будет размером 1Гб + 999 Мб?
Может проще все-таки не засорять оперативку и копировать его по частям?


А не проще все-ж использовать стандартную функцию копирования?
Ну а если хочется чтобы ProgressBar рисовался и листочки летали - на то SHFileOperation есть...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

PILIGRIM
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 25.07.2005 (Пн) 22:35

Сообщение PILIGRIM » 21.11.2005 (Пн) 21:03

Все в принципе сделал, таким образом:
Код: Выделить всё
Dim a As Byte
Private Sub Command1_Click()
Open "c:\1.exe" For Binary As #1
Open "c:\2.exe" For Binary As #2
Do While Not EOF(1)
i = i + 1
If i > FileLen("C:\1.exe") Then GoTo 1
Get #1, i, a
Put #2, i, a
Loop
1 Close #1
  Close #2
End Sub

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

Сообщение alibek » 22.11.2005 (Вт) 8:37

PILIGRIM писал(а):Все в принципе сделал, таким образом:

Ждем темы "Хелп! Почему так медленно копируется???".
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.11.2005 (Вт) 10:21

alibek писал(а):
PILIGRIM писал(а):Все в принципе сделал, таким образом:

Ждем темы "Хелп! Почему так медленно копируется???".


А ты как догадался :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

PILIGRIM
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 25.07.2005 (Пн) 22:35

Сообщение PILIGRIM » 22.11.2005 (Вт) 16:33

Мне просто нужен бал простенький пример чтобы он действовал именно таким способом.


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

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

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

    TopList