Большой Воронежский Форум
» Программирование>Visual Basic
DeniSS1 17:59 18.03.2008
Подскажите кто-нибудь, как считать в этом языке данные из текстового файла и как их туда записать (другой язык не пойдёт). Заранее спасибо, [Ответ]
alexenin 18:43 19.03.2008
В хелпе есть примеры. Ищи Stream class, samples [Ответ]
RDman 19:19 19.03.2008
DeniSS1, Очень просто.

Для начала нужно открыть файл. Делается это командой Open.

Читаем файл в текстовое поле:

Dim MyFile as String
MyFile="C:\MyFile.txt" 'в переменную путь впишешь свой

'Открываем файл на чтение информации из него
Dim OpenFile as String ' в эту переменную запишем данные из файла

Open MyFile for Input as #1 'Открыли файл
Do Until EOF(1) ' Cчитать файл до конца в переменную
Line Input #1, OpenFile
Text1.Text= Text1. Text & OpenFile & vbCrLf 'выводим данные из переменной в текстовое поле + перевод каретки vbCrLf
Loop ' Конец цикла считывания файла.
Close #1


Пишем данные в файл из текстового поля твоей проги.
'Здесь есть несколько вариантов - создание и запись данных в файл, перезапись существующего файла,
'добавление строки в существующий файл. Итак, если файла нет,
'он создается командой Open

Dim MyFile as String
MyFile= "C:\MyFile.txt"

Open MyFile for Output as #1 'Открываем на запись, или создание + запись
Print #1, Text1.Text
Close #1

Open MyFile for Append as #1 ' эта команда дописывает строку в файл
Print #1, Text1.Text
Close #1

Можно пользоваться объектной моделью File System Object, об этом сам почитаешь в букваре по VB
[Ответ]
DeniSS1 20:43 19.03.2008
Всем спасибо, особенно RDman! Тему пока не закрываю - по ходу выполнения конкурсного задания могут ещё возникнуть вопросы. [Ответ]
DeniSS1 21:02 19.03.2008
RDman, пишу "Open AddresInfAboutMarshrut for Input as #1" - а он тут же подчёркивает! В чём дело, почему? [Ответ]
RDman 21:15 19.03.2008
DeniSS1, порылся в своей литературе, у меня нигде не упоминается выражение AddresInfAboutMarshrut .... Что оно делает? Или это какой-то твой тип данных, который ты сам определяешь?
Кстати, бейсик у меня не определяет его. Ты кстати ипользуешь какой VB? VB6, VB.Net, VBA или VBScript?
Изображения
Нажмите на изображение для увеличения
Название: 1.JPG
Просмотров: 14
Размер:	51.9 Кб
ID:	245973  
[Ответ]
DeniSS1 21:16 19.03.2008
RDman, это переменная. :-)

P.S. Я пользуюсь 2005-м VB.net [Ответ]
RDman 21:24 19.03.2008
DeniSS1, я по старинке VB6... Какие данные в твоей переменной находятся? [Ответ]
DeniSS1 21:30 19.03.2008
Вот кусок кода, курсив - подчёркнутое.

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
AddresInfAboutMarshrut = TextBox1.Text
Open AddresInfAboutMarshrut for Input as #1 'Открыли файл
Do Until EOF(1) ' Cчитать файл до конца в переменную
Line Input #1, InfAboutMarshrut
TextBox2.Text = TextBox2.Text & InfAboutMarshrut & vbCrLf 'выводим данные из переменной в текстовое поле + перевод каретки vbCrLf
Loop ' Конец цикла считывания файла.
Close #1
End Sub [Ответ]
DeniSS1 21:32 19.03.2008
Переменная объявлена как String. Может, версии языка слишком разные? [Ответ]
RDman 21:36 19.03.2008
AddresInfAboutMarshrut = TextBox1.Text - здесь у тебя путь к файлу или что?

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click - я 2005 не очень знаю, там таков синтаксис?

Еще момент. Cама переменная объявлена, командой Dim ?
Dim AddresInfAboutMarshrut As ... <тип>

Option Explicit у тебя включен? [Ответ]
DeniSS1 21:39 19.03.2008
RDman, 1-е - да. 2-е - такой, проверено. 3-е - да, и тип у неё - String. Это НЕ массив.
4-е - а что это? :-) [Ответ]
RDman 21:53 19.03.2008

Сообщение от DeniSS1:
Переменная объявлена как String. Может, версии языка слишком разные?

версии разные, база одинакова. На то он и язык. 2005 здорово отличается, конечно. Но ключевые слова и принцип примерно одинаков. Хотя разница разительная.

Сообщение от RDman:
Option Explicit у тебя включен?

Незнаю как организовано в 2005м, в VB6 команда Option Explicit требует явную декларацию переменных. Т.е. прежде чем использовать переменную в программе, ты ее сначала должен объявить словом Dim. Бейсик, в отличии, например, от Дельфи, разрешает не объявлять явно переменные, но это крайне неудобно, особенно в больших кодах. Можно попутаться и выполнение проги может дать ошибочный результат. Например переменные

ballon="ballon"
и
balon="ballon"

визуально трудно различаются, но бейсик их различает. Ты думаешь, что у тебя одна переменная, а бейсик создает две "на лету" (если не установлен Option Explicit). Option Explicit заставляет программиста явно объявлять каждую переменную, что исключает подобные ситуации.

В настройках Бейсика надо включить "требовать явное определение переменных", по умолчанию эта функция может быть отключенной. После этого в окнах кодов форм и модулей в самом верху будет появляться Option Explicit. Можно вписывать вручную эту команду в самом верху над остальным кодом.

Option Explicit

...код.... [Ответ]
DeniSS1 15:49 20.03.2008
RDman, всё, я нашёл, как это сделать. Вот примеры для сравнения.
VB6 ............... и .............. VB 2005
Print #fFile, "Some text"....... PrintLine(fFile, "Some text") Записывает строку в файл и добавляет символ новой строки.
Print #fFile, "Some text";..... Print(fFile, "Some text") Записывает строку в файл.
Write #fFile, "Some text"...... WriteLine(fFile, "Some text") Записывает строку в файл, добавляя двойные кавычки в начале и конце строки и символ новой строки.
Write #fFile, "Some text";..... Write(fFile, "Some text") Записывает строку в файл, добавляя двойные кавычки в начале и конце строки [Ответ]
DeniSS1 17:11 20.03.2008
Так, стоп, это только вывод, а мне нужен ещё и ввод... Не подскажите, как это сделать, а то траф кончился... [Ответ]
RDman 18:10 20.03.2008

Сообщение от DeniSS1:
PrintLine

язык здорово поменялся. [Ответ]
DeniSS1 18:48 21.03.2008
Люди, неужели нет работающих в VB.Net?! [Ответ]
RDman 18:53 21.03.2008
DeniSS1, http://vbnet.ru . [Ответ]
DeniSS1 19:18 21.03.2008
Там нет таких примеров на .net. В нашем (Борисоглебском) магазине - тоже. Остался один вариант: я запостил этот вопрос на куче форумов, теперь жду. [Ответ]
Вверх