Как разделить данные в этом файле vb6 - PullRequest
1 голос
/ 22 апреля 2010

У меня есть этот файл. Он хранит имена, проект, неделю, за которую они хранят данные, и часы, потраченные на проект. вот пример

"James","Project5","15/05/2010","3"
"Matt","Project1","01/05/2010","5"
"Ellie","Project5","24/04/2010","1"
"Ellie","Project2","10/05/2010","3"
"Matt","Project3","03/05/2010","4"

Мне нужно напечатать это на форме без кавычек. Там он должен показывать имя только один раз, а затем просто отображать проекты под именем. Я посмотрел их вверх, и функция разделения кажется интересной

любая помощь будет хорошей.

Ответы [ 4 ]

2 голосов
/ 22 апреля 2010

Создайте объект Dictionary и затем поместите все, что вы найдете для данного имени, в одну словарную статью.

Затем во второй итерации выведите все это.

1 голос
/ 22 апреля 2010

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


Хотя решение для словаря проще, оно может быть лучше, если у вас все в порядке с созданием класса и реализацией IComparer, так что вы можете отсортировать список, чтобы сделать это довольно легко.

1 голос
/ 22 апреля 2010

У Microsoft есть поставщик CSV ADO. Я думаю, что он установлен вместе с остальной частью ADO. Это именно тот формат, который был разработан для чтения.

См. http://www.vb -helper.com / howto_ado_load_csv.html для образца VB.

0 голосов
/ 22 апреля 2010

Вы можете прочитать каждую строку, вычеркнуть кавычки, разделить запятую, а затем обработать массив данных, с которым у вас останется:

Dim filenum As Integer
Dim inputLine As String
Dim data() As String

filenum = FreeFile
Open "U:\test.txt" For Input As #filenum
Do While Not EOF(filenum)
  Line Input #filenum, inputLine
  inputLine = Replace(inputLine, Chr(34), vbNullString)
  data = Split(inputLine, ",")
  Debug.Print data(0), data(1), data(2), data(3)
Loop
Close #filenum

Или вы могли бы иметь команду Input обрезать кавычкии считайте данные в переменные:

Dim filenum As Integer
Dim name As String, project As String, dat As String, hours As String

filenum = FreeFile
Open "U:\test.txt" For Input As #filenum
Do While Not EOF(filenum)
  Input #filenum, name, project, dat, hours
  Debug.Print name, project, dat, hours
Loop
Close #filenum
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...