пытается прочитать текстовый файл с разделителями из ресурсов - но он не запустится - PullRequest
2 голосов
/ 11 апреля 2010

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

   'reads the text out of a delimited text file and puts the words and hints into to separate arrays
   ' this works and made the program run
   ' Dim filename As String = Application.StartupPath + "\ProggramingList.txt"
    'this dosnt work and brings back a Illegal characters in path error.
    dim filename as string = My.Resources.ProggramingList
    Dim fields As String()
    'my text files are delimited
    Dim delimiter As String = ","
    Using parser As New TextFieldParser(filename)
        parser.SetDelimiters(delimiter)
        While Not parser.EndOfData
            ' Read in the fields for the current line
            fields = parser.ReadFields()
            ' Add code here to use data in fields variable.

            'put the result into two arrays (the fields are the arrays im talking about). one holds the words, and one holds the corresponding hint
            Programingwords(counter) = Strings.UCase(fields(0))
            counter += 1
            'this is where the hint is at
            Programingwords(counter) = (fields(1))
            counter += 1
        End While
    End Using

ошибка

ex.ToString ()
"System.ArgumentException: недопустимые символы в пути. В System.IO.Path.CheckInvalidPathChars (String path) в System.IO.Path.NormalizePathFast (String path, Boolean fullCheck) в System.IO.Path.NormalizePath (String path, Boolean fullCheck) в System.IO.Path.GetFullPathInternal (String path) в System.IO.Path.defaultEncoding, Boolean detectEncoding) в Microsoft.VisualBasic.FileIO.TextFieldParser..ctor (String path) в HangMan.Form1.GetWords () в I: \ vb \ HangMan \ HangMan \ Form1.vb: строка 274 "Строка

Ответы [ 2 ]

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

Используемый вами конструктор TextFieldParser ожидает имя файла. Вместо этого он получает содержимое файла. Что касается Kaboom, содержимое файла не является допустимым путем к файлу. Вам понадобится конструктор, который принимает Stream и использует класс StringReader для предоставления потока. Например:

Dim fields As String()
Dim delimiter As String = ","
Dim fileContent As String = My.Resources.ProggramingList
Dim stringStream as New System.IO.StringReader(fileContent)
Using parser As New TextFieldParser(stringStream)
  REM etc...
End Using

Это немного расточительно, но не проблема, если текст меньше мегабайта или около того. Если оно больше, вы не должны помещать его в ресурс.

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

Когда вы отлаживаете этот код, каково значение переменной filename после того, как вы прочитали ее из My.Resources.GamesList? Это допустимая строка, она указывает на ваш файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...