Прочитать любой файл?!

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

Прочитать любой файл?!

Сообщение Mleha » 20.10.2004 (Ср) 16:08

Как занести содержимое любого файла в TextBox?
Простые TXT-файлы читаются только так, а вот чтоб любой файл это как?

Open Adres For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1
:roll:
Заранее спасибо!

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 20.10.2004 (Ср) 16:13

Open for binary access read
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

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

Сообщение Andrey Fedorov » 20.10.2004 (Ср) 16:17

Open for binary access read


А нафига?

Тут изначально неверно поставлен вопрос.
Так как несяно какой файл - dbf, gif или еще какой.
В зависимости от типа файла все и играется...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:17

Насколько я знаю там инфо представляется в BYTE, а нужен STRING!
:roll:
Покажи код? :cyclopsani:

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:19

Файл может быть любым а результат - текст!

ta_gena
Бывалый
Бывалый
 
Сообщения: 264
Зарегистрирован: 30.10.2002 (Ср) 12:18
Откуда: Russia

Сообщение ta_gena » 20.10.2004 (Ср) 16:27

Код: Выделить всё
  Dim fso As New Scripting.FileSystemObject
  Dim oStream As Scripting.TextStream
  Set oStream = fso.OpenTextFile(FileName, ForReading, True, TristateFalse)
  Text1.Text = oStream.ReadAll()

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:30

Типа такого нет: Scripting.FileSystemObject

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Re: Прочитать любой файл?!

Сообщение marvan » 20.10.2004 (Ср) 16:33

Mleha писал(а):Open Adres For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1

так это и есть чтение любого файла - хоть jpg ему скорми - отобразит печатные символы этого файла - главное не забывать про ограничение на размер данных выводимых в текстбокс

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

Сообщение Andrey Fedorov » 20.10.2004 (Ср) 16:34

Насколько я знаю там инфо представляется в BYTE, а нужен STRING!


Если файл текстовый, то и открывай его как сам в самом начале написал - какая разница какое расширение.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.10.2004 (Ср) 16:34

Mleha писал(а):Насколько я знаю там инфо представляется в BYTE, а нужен STRING!
:roll:
Покажи код? :cyclopsani:

Разницы никакой нет. Tarik всё правильно сказал.
А Andrey тебя только запутает ;-)
Изображение

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

Сообщение Andrey Fedorov » 20.10.2004 (Ср) 16:36

А Andrey тебя только запутает

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

ta_gena
Бывалый
Бывалый
 
Сообщения: 264
Зарегистрирован: 30.10.2002 (Ср) 12:18
Откуда: Russia

Сообщение ta_gena » 20.10.2004 (Ср) 16:43

Mleha писал(а):Типа такого нет: Scripting.FileSystemObject


Не понял про какого Типа идет речь. И куда он делся.

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:44

При использовании:
Open Adres For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1
говорит: Ввод после конца файла
Что можно подправить чтобы прочитал, например, архив?

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:46

тип as String: as Integer , а я имею ввиду:
as Scripting.FileSystemObject

ta_gena
Бывалый
Бывалый
 
Сообщения: 264
Зарегистрирован: 30.10.2002 (Ср) 12:18
Откуда: Russia

Сообщение ta_gena » 20.10.2004 (Ср) 16:51

Mleha писал(а):При использовании:
Open Adres For Input As #1
Text1.Text = Input(LOF(1), 1)
Close #1
говорит: Ввод после конца файла
Что можно подправить чтобы прочитал, например, архив?


А может так попробовать

Код: Выделить всё
Open Adres For Input As #1
Text1.Text = Input(LOF(1), #1)
Close #1 

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 20.10.2004 (Ср) 16:56

А в чем отличие? Ни так ни так не реботат!
Может все таки Binary Access Read поможет?
Но как им пользоваться?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.10.2004 (Ср) 17:09

ta_gena и остальные, Tarik в самом начале топика дал совершенно правильный ответ - надо заменить "For Input" на "For Binary Access Read".
Чего ещё тут мудрствовать?
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Прочитать любой файл?!

Сообщение tyomitch » 20.10.2004 (Ср) 17:12

marvan писал(а):так это и есть чтение любого файла - хоть jpg ему скорми - отобразит печатные символы этого файла - главное не забывать про ограничение на размер данных выводимых в текстбокс
при открытии For Input чтение идёт только до первого Chr(26), причём все Chr(0) пропускаются.
Так что jpeg так не прочитать ;-)
Изображение

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 21.10.2004 (Чт) 9:38

Open For Binary Access Read читает только часть файла, помогите!? :cry:

YB
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 21.10.2004 (Чт) 7:17
Откуда: Н.Новгород

Сообщение YB » 21.10.2004 (Чт) 9:47

Типа такого нет: Scripting.FileSystemObject

Чтобы было, необходимо подкл. библ SCRRUN.DLL
типа [b]Proect-References[/b] и выбрать Microsoft Scripting Runtime. :D

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2004 (Чт) 9:52

Давай код целиком: у нас он читает весь файл ;-)
Изображение

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 21.10.2004 (Чт) 9:55

Читает не все! Сами проверьте!!!

YB
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 21.10.2004 (Чт) 7:17
Откуда: Н.Новгород

Сообщение YB » 21.10.2004 (Чт) 9:59

Dim tf As Scripting.TextStream
text1.text=""

Set tf = fs.OpenTextFile(Adres)

Do While Not tf.AtEndOfLine
text1=text1 & tf.ReadLine
Loop

tf.Close

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 21.10.2004 (Чт) 10:06

Не знаю что и сказать все просто замечательно! Спасибо тебе, YB!

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 21.10.2004 (Чт) 10:09

Хотя подожди, сравнил с тем что показал блокнот - не одно и тоже. Решение еще не найдено!

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 21.10.2004 (Чт) 11:11

вариант 1
Код: Выделить всё
Dim s As String
   Dim f As Integer
   
   s = Space(FileLen("c:\my.file"))
   f = FreeFile
   Open "c:\my.file" For Binary As f
      Get #f, 1, s
   Close f

с этой строкой делай что хочешь, в нее входят и chr$(0) и все остальное

вариант 2
Код: Выделить всё
Dim s() As Byte
   Dim f As Integer
   
   f = FreeFile
   Open "c:\my.file" For Binary As f
      Get #f, 1, s()
   Close f


с этим массивом тоже самое

но если ты хочешь читать jpg, будь добр изучи структуру файла, создай тип данных (заголовок файла), считай его, а за тем читай непосредственно данные.

Дело в том, мой милый друг, что у каждого файла есть свой заголовок, кроме простых текстовых - *.txt

если бы винда могла создавать(читать) все типы файлов, то ей не нужны были бы установленные тобой программы, например MS Office и т.д.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 21.10.2004 (Чт) 11:15

Для проверки данной теории переименуй любой файл jpg в bmp, ты увидишь, что винда его все равно откроет, но не в редакторе paint. Отсуда следует, что ей (винде) по барабану расширение, определяет тип файла она по его заголовку.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 21.10.2004 (Чт) 11:20

на счет блокнота:

в textbox влазит только 64кб информации, так что, если у тебя файл больше 64кб - ты его полностью не увидишь, используй RichTextBox
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Mleha
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 146
Зарегистрирован: 06.10.2004 (Ср) 7:49
Откуда: Ангарск

Сообщение Mleha » 21.10.2004 (Чт) 12:11

Раньше в TEXTBOX влазило около 200000 символов, а сейчас что не должно?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.10.2004 (Чт) 14:27

kif писал(а):на счет блокнота:

в textbox влазит только 64кб информации, так что, если у тебя файл больше 64кб - ты его полностью не увидишь, используй RichTextBox

Там ТРИДЦАТЬ ДВА КИЛОБАЙТА
Ну откуда вы все взяли эту цифру в 64Кб? Или вам ссылку на MSDN дать?
Изображение

След.

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

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

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

    TopList  
cron