Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
вадим2
94 / 94 / 3
Регистрация: 01.12.2011
Сообщений: 94
1

Прочитать текст из файла в переменную

06.02.2012, 12:22. Просмотров 1563. Ответов 5
Метки нет (Все метки)

Здравствуйте, помогите решить ошибку в моей программе, которая сохранять параметры сохраняет, а открывать не открывает. Скачайте исходный код, в коментариях программы написано где ошибка. Не знаю, правильно назвал тему или нет, переменуйте, если что. Заранеее благодарен!!!
0
Вложения
Тип файла: rar WindowsApplication1.rar (1.75 Мб, 10 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2012, 12:22
Ответы с готовыми решениями:

Прочитать русский текст из файла
Dim obj As New System.IO.StreamReader("d:\nd.txt") Dim line As String For i = 1 To 3 ...

Прочитать текст из файла в текстовое поле в нужной кодировке
Всем привет! Есть файл (во вложение) Пытаюсь прочитать из него текст: TextBox1.Text =...

Как загрузить текст из файла ресурсов в переменную
Здравствуйте. Помогите с решением проблемы! В ресурсе лежат 10 txt файлов (_1, _2, _3 … _10). В...

Как прочитать текст из файла в переменную?
Доброго времени суток, простите за глупый вопрос, но я никак не могу понять как можно прочитать...

Из файла прочитать текст и в этом тексте заменить все пробелы на _ и записать исправленный текст обратно
задача написать программу на assembler, под dos Нужно из файла прочитать текст и в этом тексте...

5
вадим2
94 / 94 / 3
Регистрация: 01.12.2011
Сообщений: 94
06.02.2012, 13:44  [ТС] 2
библиотеку \bin\Debug\MovingLibrary.dll переместите в католог с решением, чтобы всё открывалось нормально

Добавлено через 1 час 10 минут
кто-нибудь поможет?
0
Памирыч
Почетный модератор
20935 / 8819 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
06.02.2012, 15:36 3
Цитата Сообщение от вадим2 Посмотреть сообщение
кто-нибудь поможет
вообще, проект выкладывается в крайнем случае, причем вероятность помощи падает в разы по 2 простым причинам:
1) Лень ковыряться в чужих исходниках
2) Не у каждого студия под рукой, и фреймворк нужной версии.

Исходя из всего вышеизложенного, задачу нужно моделировать на простом примере, примитивном, и касающегося конкретно данного вопроса.
Полученный результат использовать в глобальном проекте.
0
вадим2
94 / 94 / 3
Регистрация: 01.12.2011
Сообщений: 94
06.02.2012, 16:20  [ТС] 4
Боле подробно, вот вырезка с моей проблемой:
в проекте есть переменные:
vb.net
1
2
3
4
5
6
7
8
9
 Public Кол_надписей(10, 10) As Integer
 Public текст_надписи(10, 10) As String
 Public цвет_фона_надписи(10, 10) As Color
 Public цвет_текста_надписи(10, 10) As Color
 Public шрифт_надписи(10, 10) As Font
 Public кордината_x(10, 10) As Integer
 Public кордината_y(10, 10) As Integer
 Public размер_width(10, 10) As Integer
 Public размер_heigth(10, 10) As Integer
есть файл, или несколько с таким содержанием:
Microsoft Sans Serif; 8,25pt
-16777216
-1286
текст надписи
97
116
386
140

вот этот файл(ы) считывается и записывается значения в переменные указанные выше следующим кодом:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Dim путь_надписей = My.Application.Info.DirectoryPath & "\label\"
        For i = 1 To 10
            For i2 = 0 To 10
                Dim fileExists1 As Boolean
                fileExists1 = My.Computer.FileSystem.FileExists(путь_надписей & i & "." & i2)
                If fileExists1 = True Then
                    Кол_надписей(i, i2) = "1"
                    Dim sr5 As StreamReader
                    sr5 = File.OpenText(путь_надписей & i & "." & i2)
                    Dim converter As System.ComponentModel.TypeConverter = System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
                    шрифт_надписи(i, i2) = CType(converter.ConvertFromString(sr5.ReadLine.ToString), Font)
                    цвет_текста_надписи(i, i2) = Color.FromArgb(sr5.ReadLine)
                    цвет_фона_надписи(i, i2) = Color.FromArgb(sr5.ReadLine)
                    текст_надписи(i, i2) = sr5.ReadLine
                    кордината_x(i, i2) = sr5.ReadLine
                    кордината_y(i, i2) = sr5.ReadLine
                    размер_width(i, i2) = sr5.ReadLine
                    размер_heigth(i, i2) = sr5.ReadLine
                    sr5.Close()
                End If
            Next
        Next

Добавлено через 11 минут
есть в проекте функции:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'преобразовывает шрифт в строку
Function в_строку(ByVal шрифт As Font) As String
        Try
            Dim converter As System.ComponentModel.TypeConverter = _
            System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
            Dim текстовая_строка_шрифта = converter.ConvertToString(шрифт)
            Return текстовая_строка_шрифта
        Catch
            MsgBox("ошибка: " & Err.Description, MsgBoxStyle.Critical, "")
            Return 0
        End Try
    End Function
    'ну а эта на оборот из шрифта в строку
    Function в_шрифт(ByVal текст As String) As Font
        Dim converter As System.ComponentModel.TypeConverter = _
    System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
        Dim font1 As Font = _
              CType(converter.ConvertFromString(текст), Font)
        Return font1
 End Function
создаётся массив надписей при загрузке:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Public текстовая_надпись(9) As Label
Dim b As Integer = 135
        For i = 0 To 9
            текстовая_надпись(i) = New Label
            текстовая_надпись(i).Size = New Size(100, 20)
            текстовая_надпись(i).BackColor = Color.Snow
            текстовая_надпись(i).Text = "надпись " & i + 1
            b = b + 27
            текстовая_надпись(i).AutoSize = False
            текстовая_надпись(i).Location = New Point(70, b)
            текстовая_надпись(i).Visible = False
            Me.Controls.Add(текстовая_надпись(i))
next
прочитанные результаты показываются в массиве надписей таким образом(в листбоксе номер вкладки(1-10)):
vb.net
1
2
3
4
5
6
7
8
9
10
11
For i = 0 To 9
            If Кол_надписей(ListBox1.Text, i) = "1" Then
                текстовая_надпись(i).Text = текст_надписи(ListBox1.Text, i)
                текстовая_надпись(i).BackColor = цвет_фона_надписи(ListBox1.Text, i)
                текстовая_надпись(i).ForeColor = цвет_текста_надписи(ListBox1.Text, i)
                текстовая_надпись(i).Font = шрифт_надписи(ListBox1.Text, i)
                текстовая_надпись(i).Location = New System.Drawing.Point(кордината_x(ListBox1.Text, i), кордината_y(ListBox1.Text, i))
                текстовая_надпись(i).Size = New System.Drawing.Size(размер_width(ListBox1.Text, i), размер_heigth(ListBox1.Text, i))
                текстовая_надпись(i).Visible = True
end if
next
но вот в чём моя проблема, получается так, что параметры считываемые программой надписи не присваюваются. а вот почему, не пойму.
теперь пожалуйста помогите!
0
Памирыч
Почетный модератор
20935 / 8819 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
06.02.2012, 17:09 5
вадим2, понятнее не стало, ясно одно, что здесь назревает нехилый велосипед.
Программа должна сохранять тексты меток, цвета и прочее? А потом считывать?
Файл должен быть обычный текстовый, с возможностью нормального чтения и редактирования через блокнот или без разницы?

Добавлено через 14 минут
Я бы сделал так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    <System.Serializable()> Structure Test
        Dim LblTxt As String
        Dim Col As Color
        Dim Pos As Point
        Dim Fnt As Font
    End Structure
    Dim Tst As New Test
    
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        With Tst
            .Col = Me.BackColor
            .Fnt = Me.Font
            .LblTxt = Label1.Text
            .Pos = Me.Location
        End With
        Dim formatter As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
        Using stream As IO.Stream = IO.File.Create("123.bin")
            formatter.Serialize(stream, Tst)
        End Using
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If IO.File.Exists("123.bin") = False Then Exit Sub
        Dim formatter As New Runtime.Serialization.Formatters.Binary.BinaryFormatter()
        Using stream As IO.Stream = IO.File.Open("123.bin", IO.FileMode.Open)
            Tst = formatter.Deserialize(stream)
        End Using
        With Tst
            Me.BackColor = .Col
            Me.Font = .Fnt
            Label1.Text = .LblTxt
            Me.Location = New Point(.Pos)
        End With
    End Sub
Создали сериализуемую структуру.
В ней 4 свойства - текст надписи, цвет фона формы, шрифт формы и положение формы.

Все это пишется и читается, и не нужно изобретать никаких конвертеров шрифтов и цветов.
1
вадим2
94 / 94 / 3
Регистрация: 01.12.2011
Сообщений: 94
06.02.2012, 22:02  [ТС] 6
смотрите: есть файлы в папке 1.0 , 1.2 , 1.3, или 2.4 и т.д
Программа при загрузке должна в переменные занести значения при помощи:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim путь_надписей = My.Application.Info.DirectoryPath & "\label\"
        For i = 1 To 10
            For i2 = 0 To 10
                Dim fileExists1 As Boolean
                fileExists1 = My.Computer.FileSystem.FileExists(путь_надписей & i & "." & i2)
                If fileExists1 = True Then
                    Кол_надписей(i, i2) = "1"
                    Dim sr5 As StreamReader
                    sr5 = File.OpenText(путь_надписей & i & "." & i2)
                    Dim converter As System.ComponentModel.TypeConverter = System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
                    шрифт_надписи(i, i2) = CType(converter.ConvertFromString(sr5.ReadLine.ToString), Font)
                    цвет_текста_надписи(i, i2) = Color.FromArgb(sr5.ReadLine)
                    цвет_фона_надписи(i, i2) = Color.FromArgb(sr5.ReadLine)
                    текст_надписи(i, i2) = sr5.ReadLine
                    кордината_x(i, i2) = sr5.ReadLine
                    кордината_y(i, i2) = sr5.ReadLine
                    размер_width(i, i2) = sr5.ReadLine
                    размер_heigth(i, i2) = sr5.ReadLine
                    sr5.Close()
                End If
            Next
        Next
после в листбоксе(значения в нём от 1 до 10) пользователь выбирает допустим 2
и тогда должны появится надписи в определённом количестве с определёнными параметрами при помощи этого:
vb.net
1
2
3
4
5
6
7
8
9
10
11
For i = 0 To 9
            If Кол_надписей(ListBox1.Text, i) = "1" Then
                текстовая_надпись(i).Text = текст_надписи(ListBox1.Text, i)
                текстовая_надпись(i).BackColor = цвет_фона_надписи(ListBox1.Text, i)
                текстовая_надпись(i).ForeColor = цвет_текста_надписи(ListBox1.Text, i)
                текстовая_надпись(i).Font = шрифт_надписи(ListBox1.Text, i)
                текстовая_надпись(i).Location = New System.Drawing.Point(кордината_x(ListBox1.Text, i), кордината_y(ListBox1.Text, i))
                текстовая_надпись(i).Size = New System.Drawing.Size(размер_width(ListBox1.Text, i), размер_heigth(ListBox1.Text, i))
                текстовая_надпись(i).Visible = True
end if
next
однако те, параметры, которые загрузить должна была программав переменные, не присваиваются этим надписям, вот я и не помойму где моя ошибка, во время открытия файлов, или во время присвоения значения надписям этих параметров, или там и там ошибка вообще.

Добавлено через 4 часа 48 минут
Спасибо, Памирыч , ошибка оказалась в другом месте программы, ну и спасибо за код, в будущем буду использовать.
0
06.02.2012, 22:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2012, 22:02

Прочитать текст из файла, затем удалить из текста все буквы вашего имени и записать текст в новый файл
Создать Windows – приложение, в котором производите запись считывание текста из файла, затем...

Прочитать определённую строку файла и поместить её в переменную
Всем привет! Необходимо прочитать определённую строку файла ,и поместить эту строку в переменную ....

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru