Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Не возможно полностью прочитать файл!


Автор: rulonoboev 10.12.2008, 04:54
Приветствую!! ломаю голову, не могу понять, что не так...

Код



Dim FName As String
dim t 
dim q

FN = FreeFile
FName = "test.exe"

Open FName For Input As #FN

For q = 0 To FileLen(FName)
t = Input(1, #FN)
text1.text = text1.text & t
next q




прочитав примерно 8 килобайт символов из файла выкидывает ошибку "Input past end of file" хотя файл порядка 900 килобайт.


что я не так написал в коде?

вообщем, мне нужно прочитать посимвольно экзешник, а потом его также грамотно посимвольно собрать обратно, но в другой файл. это возможно?

гугл не помог smile 

Автор: XOXOJI 10.12.2008, 05:21
а с помощью двоичного доступа пробовал? функцией get

Автор: Akina 10.12.2008, 09:21
Полюбопытствуй на разных файлах, чему равно loc(FN) и asc(t) при возникновении ошибки.

Автор: neic 10.12.2008, 10:43
Akina, запустил ради теста.

Последний loc = 43, а ASC = 220

Автор: Akina 10.12.2008, 10:51
Цитата(neic @  10.12.2008,  11:43 Найти цитируемый пост)
Последний loc = 43, а ASC = 220 

упс, ошибся... надо смотреть не asc(t), а код СЛЕДУЮЩЕГО символа. 
и получить аналогичные данные для НЕСКОЛЬКИХ РАЗНЫХ файлов.
вот тогда и сделаешь выводы.

Добавлено через 40 секунд
ps. открой не в input, а в binary, остальной код тот же...

Автор: rulonoboev 10.12.2008, 18:58
ребят,  спасибо ) совсем из головы про бинарник вылетело.

просто почти 5 лет не садился за программирование.



у меня блин всеравно косяк получается какой-то. я читаю ехе-шник посимвольно в переменную, потом сохраняю переменную в новый файл с расширением ехе, но он уже становится неработоспособным :((

Автор: Akina 10.12.2008, 19:10
А потому что надо не Input использовать, а InputB...

Автор: mb78 27.12.2008, 02:50
Код

Option Explicit
Dim programname As String, FileNumber As Integer, lenoffile As Long, a() As Byte

programname ="test.exe"
lenoffile = FileLen(programname)
ReDim a(lenoffile)
FileNumber = FreeFile
Open programname For Binary As #FileNumber
Get #FileNumber, 1, a
Reset


Так можно поместить весь файл (не слишком большого размера) в числовой массив a(размер файла).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)