Оператор Line Input #, три одинаковые строки. Будет ли он перезаписывать переменную каждый раз?

В программе, которую я переношу с vb6 на VB.net, есть три одинаковых оператора Line Input#:

Line Input #9, dummy
Line Input #9, dummy
Line Input #9, dummy

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

Мой второй вопрос, в чем разница между Input# и Line Input#? Я использовал:

foo = bar.readline 

для ввода #.. и теперь я боюсь, что я сделал все это неправильно и должен был использовать:

foo = bar.Read 

или что-то в этом роде Вся помощь приветствуется
Спасибо, ребята!
Ник


person Nick    schedule 21.11.2011    source источник
comment
Поскольку переменная называется фиктивной, цель этих строк кода, вероятно, состоит в том, чтобы игнорировать три строки текста из входного файла. Так что перезапись манекена здесь в порядке.   -  person Olivier Jacot-Descombes    schedule 21.11.2011


Ответы (3)


Оператор Line Input считывает весь текст во входном файле до следующей последовательности CR или CR-LF и помещает его в переменную dummy. Таким образом, эти операторы, как вы предполагаете, каждый раз перезаписывают переменную dummy.

Input считывает ввод до следующей последовательности CR, CR-LF или разделительной запятой и сохраняет данные, прочитанные в dummy.

Я склоняюсь к тому, что вы правы, вам действительно следует использовать bar.Read вместо Input # и bar.ReadLine вместо Input Line.

См. Ввод # и Line Input # для получения дополнительной информации.

person Brian Hooper    schedule 21.11.2011
comment
Как говорит пример в документации для Input #, "1,2""X" читается как две строки, "1,2" и "X", так что это не просто запятые в качестве разделителей внутри строки. Вот почему я бы рекомендовал использовать уже созданные классы взаимодействия VB6. - person Damien_The_Unbeliever; 21.11.2011
comment
Прежде чем рекомендовать использование классов взаимодействия для VB6, было бы полезно узнать, что на самом деле делает программа. Вместо простого слепого преобразования, возможно, можно использовать StreamReader или BinaryReader. - person Chris Dunaway; 21.11.2011

Удивительно, но справочник по языку все еще доступен. Введите #, Ввод строки #. Вы правы, что они не одинаковы.

На ваш первый вопрос он перезапишет переменную, поэтому кажется, что это способ пропустить 2 строки и прочитать третью строку.


Вам, вероятно, лучше использовать средства VB Runtime для чтения файлов, созданных VB 6, а не стиль работы файловой системы «.NET», поскольку я думаю, что было бы довольно сложно воспроизвести поведение Input # с помощью Read . Вместо этого используйте FileSystem.Input.

person Damien_The_Unbeliever    schedule 21.11.2011
comment
Я читал их, но для меня они звучат почти одинаково, за исключением того, что Line Input # конкретно указывает, что он читает одну строку, означает ли это, что Input # читает более одной? - person Nick; 21.11.2011
comment
+1, но если вы пытаетесь воспроизвести LineInput, я предлагаю вам использовать FileSystem.LineInput ! - person MarkJ; 21.11.2011

Команда Line Input # не не делать ничего особенного, например, добавлять к переменной. Значение просто присваивается переменной, поэтому, если у вас есть три таких строки, оно перезапишет первые два значения.

Команда Read # предполагает особый формат данных, поэтому ReadLine не подойдет в качестве замены. Справочник по команде Write # содержит сведения о том, как выглядят данные, ожидаемые командой Read #.

person Guffa    schedule 21.11.2011