Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > StreamReader


Автор: observateur 24.6.2007, 19:17
Sub wordpass() 'читаем данные в глобалный массив.

        Dim t As StreamReader = File.OpenText("d:\soz.txt")


        While Not t.EndOfStream

            ReDim Preserve mass_fr(n)
            mass_fr(n) = t.ReadLine

            ReDim Preserve mass_az(n)
            mass_az(n) = t.ReadLine

            n += 1

        End While

        t.Close()


помогите мне пожалуйста как я могу здес использовать в место 
Dim t As StreamReader = File.OpenText("d:\soz.txt")


Dim t As StreamReader = File.OpenText(My.Resources.soz.txt)

Автор: Subl1me 24.6.2007, 20:00
Насколько я знаю, в My.Resources  soz.txt будет являться простой текстовой строкой, а не путём к имени файла. Поэтому его нельзя передавать функции File.OpenText в качестве аргумента.  smile 

Если очень хочешь поработать с простой строкой, как с файлом, то сделай вот что:


Код

Dim t As New StringReader(My.Resources.soz.txt)

       While Not t.EndOfStream

            ReDim Preserve mass_fr(n)
            mass_fr(n) = t.ReadLine

            ReDim Preserve mass_az(n)
            mass_az(n) = t.ReadLine

            n += 1

        End While

        t.Close()



Автор: observateur 25.6.2007, 08:21
 а вот новая проблема

Код
Dim sw As New StringWriter(My.Resources.soz)

            sw.WriteLine(main.yenisozTextBox1.Text)
            sw.WriteLine(main.yenisozTextBox2.Text)
            main.yenisozTextBox1.Text = ""
            main.yenisozTextBox2.Text = ""

            sw.Flush()
            sw.Close()


выводит ошибку

Unable to cast object of type 'System.String' to type 'System.IFormatProvider'.

Автор: Subl1me 30.6.2007, 11:54
Код

 Dim sb As New System.Text.StringBuilder(My.Resources.soz)
 Dim sw As New StringWriter(sb)

  sw.WriteLine(main.yenisozTextBox1.Text)
  sw.WriteLine(main.yenisozTextBox2.Text)
  main.yenisozTextBox1.Text = ""
  main.yenisozTextBox2.Text = ""
  sw.Flush()
  sw.Close()

Автор: observateur 30.6.2007, 15:33
 smile 
ни чего не получилас

Автор: Subl1me 30.6.2007, 15:35
А что должно получиться?

Автор: observateur 30.6.2007, 15:45
ну я же не могу туда вводит данные...

Автор: Subl1me 30.6.2007, 15:53
Всё я понял, что нужно сделать.
Свою ошибку я тоже понял.

По идее должно быть так:

Код

  Dim sb As New System.Text.StringBuilder(My.Resources.soz)

  sb.Append(main.yenisozTextBox1.Text)
  sb.Append(main.yenisozTextBox2.Text)
  main.yenisozTextBox1.Text = ""
  main.yenisozTextBox2.Text = ""
  My.Resources.soz=sb.ToString()



Но вот в чём проблема:
строка My.Resources.soz доступна только для чтения.
ИМХО врятли в неё можно добавить что-либо обычным способом.

 smile 

P.S. 
Я бы решил такую проблему следующим образом:
строку soz можно хранить не в Resources, а в Settings.
В этом случае она не будет рид-онли, и можно будет спокойно добавлять в неё данные.

Но в этом случае, в директории с программой будет находиться XML-файл с самой этой строкой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)