2014-10-07 4 views
0

Я пытаюсь использовать следующий код для разделения слов в текстовом файле.Прочитать текстовый файл с ресурса

Файл записывается так:

и код следующее:

 string resource_data = Properties.Resources.textfile; 
     string[] result = resource_data.Split('"'); 
     foreach (string lines in result) 
     { 
      if(comboBox1.Text == result[0]) 
      { 
       richTextBox2.Text = result[2]; 
      } 
     } 

Взятых & редактироваться из программы на C++ я работал, на котором работало отлично с тем же текстовым файлом.

   String^ resource_data = "textfile.txt"; 
      try 
      { 
       StreamReader^ DataIn = File::OpenText(resource_data); 
       String^ DataStr; 
       int count = 0; 
       array<String^>^ result; 
       array<Char>^ separ = gcnew array<Char>{'"'}; 

       while((DataStr = DataIn->ReadLine()) != nullptr) 
       { 
        count++; 
        result = DataStr->Split(separ); 
        if(comboBox1->Text == result[0]) // result[0] = Name 
        { 

Что делает код .. Читайте каждую строку, как это самостоятельно. Дает первое слово в каждом результате линии [0], поскольку второе слово в каждой строке является результатом [1] и т. Д. Когда я выбираю слово в поле со списком, я проверяю, совпадает ли оно с текстовым файлом и эта строка используется в результате [x]. Но в C# он дает ВСЕ слова собственного результата [x], а строки не имеют значения.

Как я могу сделать следующий код в C++ для работы на C#, но имеющий текстовый файл в resource.resx?

ответ

0

Я думаю, что я вижу, в чем проблема. Сначала вам нужно разбить строку resource_data на отдельные строки. Вы можете сделать это путем расщепления resource_data на характер новой линии (ы):

string[] lines = resource_data.Split(new string[1] { Environment.NewLine }, StringSplitOptions.None); 
foreach (var line in lines) 
{ 
    string[] parts = line.Split('"'); 
    if (comboBox1.Text == result[0]) 
    { 
     richTextBox2.Text = result[2]; 
    } 
} 

Вы также можете сделать это с помощью StringReader:

using (StringReader reader = new StringReader(resource_data)) 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 

Кроме того, если вы только хранить путь к файлу в ресурсах вы можете открыть файл и прочитать его:

using (StreamReader reader = File.OpenText(resource_path)) // path to file 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 
+0

Большое спасибо за ваш ответ. Первый работал отлично. Вторая давала пустое время, а третье давала ошибку: Незаконные символы в пути. Спасибо за вашу помощь еще раз :) – Xakzi

+0

Третий был, если вы сохраняли только путь к файлу, а не содержимое файла, но в любом случае рад помочь! –

Смежные вопросы