Форматированное чтение файла в массив структур
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Форматированное чтение файла в массив... Expand / Collapse
Автор
Сообщение
20.02.2007 13:35
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.12.2007 15:50
Сообщ.: 63, Visits: 589

Часто нужно чтение из форматированного текстового файла в некий массив структур.

Пусть например дан файл dan.txt

1 “Иванов”

3 “Петров

а в программе объявлена  структура

  Structure MyStruct

     Dim N As Integer 'номер

     Dim FIO AS String

     Dim price As Single

  End Structure

Dim str() as MyStruct

Как лучше и надёжнее провести чтение в массив структур?

Вроде в VB NET не форматированного ввода, Если использ класс StringReader и метод ReadLine –возникает задача разбора считанной строки  с  пом функции Split а затем переписыванием типа

Dim f As StreamReader = File.OpenText("dan.txt")

Dim ar(2) As String

While f.Peek <> -1

   I=i+1

   Redim str(i)

   s = f.ReadLine

   ar=Split(s, " ")

   str(i).N=Convert.ToInt(ar(0))

   str(i).FIO=ar(1)

   str(i).price=Convert.ToSingle(ar(2))

   i = i + 1

 End While

Всё это довольно долго, ошибки могут возникнуть и при выполнении  Split

И при преобразовании в целые и веществ типы

Нельзя ли как-то попроще? В C++ аналогичную роль играла fscanf

Сообщ. #910954
21.02.2007 10:08
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Поддержки форматированнового ввода/вывода в .NET увы нет. В качестве замены можно использовать сериализацию или искать в инете класс/функцию аналогичную scanf из C++.
Сообщ. #910973
21.02.2007 23:32
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 06.01.2008 10:33
Сообщ.: 70, Visits: 678
Зачем тебе плоские файлы? используй XML.
Сообщ. #910991
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 3:59