Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
1

Запись символов из файла в элемент массива

27.02.2012, 02:26. Показов 2614. Ответов 26
Метки нет (Все метки)

Помогите с вопросом. Например, у меня есть вот такая запись в файле, это просто "например":
1234
5678
91011
и у нас есть массив a(10)
Мне нужно из файла каждый символ по очереди записать в определенный элемент массива.
То есть a(0) = "1"; a(1) = "2"; a(2) = "3", и так далее до конца.
И еще нужно как-то учитывать, когда закончится строка. Короче, я не знаю как это сделать)) Надеюсь, здесь помогут
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2012, 02:26
Ответы с готовыми решениями:

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран...

Запись символов текстового файла в массив
В массив записываются не все символы из txt блокнота. Не пойму в чем ошибка. Или может не выводятся...

Чтение и запись нужных символов из файла
Как можно считать символы из файла из нужного места а потом в место них записать другие? Вот...

Создание файла и запись в него строки символов
Создание файла. В текущем каталоге диска создать файл с именем MYFILE.001 и записать в него...

26
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
27.02.2012, 09:25 2
Наверно велик:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim str As String = IO.File.ReadAllText("C:\1.txt")
        str = Replace(str, vbNewLine, vbNullString)
        Dim i As Integer = 0
        Dim a(10) As String
        Dim _step As Integer
        Do While i < str.Length - 2
            _step = getRazr(i)
            a(i) = Mid(str, i + 1, _step)
            i += _step
        Loop
        MsgBox(Join(a, ", "))
    End Sub
    Function getRazr(ByVal i As Integer) As Integer
        Return CStr(i).Length
    End Function
End Class
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 01:08  [ТС] 3
Цитата Сообщение от gitarillo Посмотреть сообщение
Наверно велик:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim str As String = IO.File.ReadAllText("C:\1.txt")
        str = Replace(str, vbNewLine, vbNullString)
        Dim i As Integer = 0
        Dim a(10) As String
        Dim _step As Integer
        Do While i < str.Length - 2
            _step = getRazr(i)
            a(i) = Mid(str, i + 1, _step)
            i += _step
        Loop
        MsgBox(Join(a, ", "))
    End Sub
    Function getRazr(ByVal i As Integer) As Integer
        Return CStr(i).Length
    End Function
End Class
Спасибо конечно, но как-то оно не понятно работает :/// Не получилось у меня нормально считать. По моему оно может считывает только числа, а мне нужно и буквы и все подряд.
Можете тогда выложить код как считать именно этот файл, который я приложил. Очень нужно! Спасибо)
Вложения
Тип файла: txt 1.txt (16 байт, 16 просмотров)
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 06:01 4
GladiatoR-13,
VB.NET
1
        Dim A() As Char = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "").ToCharArray
?
1
748 / 547 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
28.02.2012, 09:16 5
GladiatoR-13, ну так и нужно было сказать, что содержимое файла любое. Я то думал проблема в том, что при увеличении разряда числа нужно считывать в элемент массива кол-во символов, равное этому разряду.
Например:
1234
5678
91011
Читаем файл в строку и заменяем символы перехода на новую строку.
VB.NET
1
2
Dim str As String = IO.File.ReadAllText("C:\1.txt")
        str = Replace(str, vbNewLine, vbNullString)
Вы обратили внимание на функцию
VB.NET
1
2
3
Function getRazr(ByVal i As Integer) As Integer
        Return CStr(i).Length
End Function
Она как раз призвана возвратить разряд числа.
В итоге мой код запихает в массив числа от 1 до 11 как нужно
VB.NET
1
2
3
4
a(0)=1
a(1)=2
......
a(9)=10
А код
VB.NET
1
Dim A() As Char = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "").ToCharArray
Получит массив символов, и содержание массива будет такое
VB.NET
1
2
3
4
5
6
7
a(0)=1
a(1)=2
......
a(9)=1
a(10)=0
a(11)=1
a(12)=1
Разницу чуешь?
Смотри внимательней с содержимым файла, а то результаты будут неожиданными.
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 18:41  [ТС] 6
Угу, считывает, работает. Но когда прикрепляю к своему проекту, то ошибки. Насколько я понимаю мне нужно преобразовать из char в string. Помогите
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 18:54 7
GladiatoR-13, опять же пример из FAQ:
VB.NET
1
2
        Dim Ch As Char() = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "").ToCharArray
        Dim MassString() As String = Ch.[Select](Function(x) x.ToString()).ToArray()
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 19:05  [ТС] 8
а обязательно " Dim MassString() As String = Ch.[Select](Function(x) x.ToString()).ToArray()" нет ничего такого, чтобы не переопределять массив заново. И после знака равно такие вещи страшные. Неужели не так просто? Нету ничего, типа "CStr(a())". Просто "CStr(a())" - ошибку выдает.

Добавлено через 6 минут
и кстати, "Dim MassString() As String = A.[Select](Function(x) x.ToString()).ToArray()" оно подчеркивает А.
0
445 / 163 / 11
Регистрация: 25.02.2012
Сообщений: 398
Записей в блоге: 2
28.02.2012, 19:17 9
Цитата Сообщение от GladiatoR-13 Посмотреть сообщение
"Dim MassString() As String = A.[Select](Function(x) x.ToString()).ToArray()" оно подчеркивает А.
Там был Ch:
Цитата Сообщение от Памирыч Посмотреть сообщение
Visual Basic
1
Dim Ch As Char()
0
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 19:22  [ТС] 10
Цитата Сообщение от coderxx Посмотреть сообщение
Там был Ch:
без разницы, у меня то ведь массив а, я вставил, поменял, а оно подчеркнуло. Оно и ch подчеркивает :/
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 19:36 11
Цитата Сообщение от GladiatoR-13 Посмотреть сообщение
Нету ничего, типа "CStr(a())". Просто "CStr(a())" - ошибку выдает
я не стал предлагать циклы, по крайней мере, в явном виде
Покажи как объявил и заполнил массив A и проблемную часть кода. А еще текст ошибки, что именно студии не нравится в A
Я замечу, что этот код для Framework 3,5 и выше
1
445 / 163 / 11
Регистрация: 25.02.2012
Сообщений: 398
Записей в блоге: 2
28.02.2012, 20:14 12
Цитата Сообщение от Памирыч Посмотреть сообщение
я не стал предлагать циклы, по крайней мере, в явном виде
Давайте предлагаем:
VB.NET
1
2
3
4
5
Dim B As String = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "")
Dim A(B.Length - 1) As String
For i = 0 To B.Length - 1
    A(i) = B.Chars(i)
Next
1
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 20:20 13
Еще добавлю, что в строке
VB.NET
1
Dim S As String = IO.File.ReadAllText("C:\2.txt").Replace(vbCrLf, "")
S - хоть и строка, но по сути является массивом.

VB.NET
1
MsgBox (S(4))
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 20:53  [ТС] 14
предлагайте конечно, позже попробую код с циклом, уже лучше намного выглядит. Щас не дома

Добавлено через 24 минуты
Цитата Сообщение от Памирыч Посмотреть сообщение
я не стал предлагать циклы, по крайней мере, в явном виде
Покажи как объявил и заполнил массив A и проблемную часть кода. А еще текст ошибки, что именно студии не нравится в A
Я замечу, что этот код для Framework 3,5 и выше
не знаю я что там студии не нравится, но оно подчеркивает. Вот ошибка "Select' is not a member of 'Char'"
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 20:58 15
GladiatoR-13, поэтому я и предупредил
Цитата Сообщение от Памирыч Посмотреть сообщение
этот код для Framework 3,5 и выше
Ошибка намекает на это.

Напомню еще раз, что полученная строка - это и есть массив (предыдущее мое сообщение)
0
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 21:11  [ТС] 16
Попробую объяснить еще раз.
В этом месте по вашим подсказкам у меня происходит считывание из файла:

VB.NET
1
2
3
Dim str As String = IO.File.ReadAllText("C:\1.txt")
        str = Replace(str, vbNewLine, vbNullString)
        Dim a() As Char = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "").ToCharArray
Все, дальше мне нужно будет работать с этим массивом: перебрасывать его в целочисленный, наоборот, выводить в текстбокс, а с типом "Char" этого сделать невозможно, во всяком случае, если и возможно, но неудобно.
Теперь, мне нужно перевести a() "Char" в a() "String". Пожалуйста!!!

Цитата Сообщение от coderxx Посмотреть сообщение
VB.NET
1
2
3
4
5
Dim B As String = IO.File.ReadAllText("C:\1.txt").Replace(vbCrLf, "")
Dim A(B.Length - 1) As String
For i = 0 To B.Length - 1
* * A(i) = B.Chars(i)
Next
этот код, как я понимаю, наоборот из стринга в чар переводит. Так?
0
445 / 163 / 11
Регистрация: 25.02.2012
Сообщений: 398
Записей в блоге: 2
28.02.2012, 21:45 17
Цитата Сообщение от GladiatoR-13 Посмотреть сообщение
этот код, как я понимаю, наоборот из стринга в чар переводит. Так?
Нет. Из String в String().
Цитата Сообщение от GladiatoR-13 Посмотреть сообщение
Все, дальше мне нужно будет работать с этим массивом: перебрасывать его в целочисленный, наоборот, выводить в текстбокс, а с типом "Char" этого сделать невозможно, во всяком случае, если и возможно, но неудобно.
Теперь, мне нужно перевести a() "Char" в a() "String". Пожалуйста!!!
Используйте этот вариант:
Цитата Сообщение от Памирыч Посмотреть сообщение
Еще добавлю, что в строке
VB.NET
1
Dim S As String = IO.File.ReadAllText("C:\2.txt").Replace(vbCrLf, "")
S - хоть и строка, но по сути является массивом.
VB.NET
1
MsgBox (S(4))
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
28.02.2012, 22:38  [ТС] 18
Цитата Сообщение от coderxx Посмотреть сообщение
Нет. Из String в String().

Используйте этот вариант:
я не понимаю как я могу его использовать? :/

Добавлено через 2 минуты
Народ, ну осталось ведь всего ничего, всего лишь перевести из Char в String. Неужели это так сложно? Те коды, которые вы давали, они не работают, я и версию программы другую ставил, все равно не работает.
0
Почетный модератор
21319 / 9054 / 1082
Регистрация: 11.04.2010
Сообщений: 11,014
28.02.2012, 22:46 19
Цитата Сообщение от GladiatoR-13 Посмотреть сообщение
перевести из Char в String
Хорошо, вижу недопонимание с обеих сторон.
Покажи, как ты дальше будешь использовать этот массив, может станет яснее
1
4 / 4 / 0
Регистрация: 16.01.2012
Сообщений: 83
29.02.2012, 20:53  [ТС] 20
Цитата Сообщение от Памирыч Посмотреть сообщение
Хорошо, вижу недопонимание с обеих сторон.
Покажи, как ты дальше будешь использовать этот массив, может станет яснее
В общем вкратце... У меня есть файл, в нем запись, что-то типа такого:
0000
0+*0
0*+0
0000
где 0 - путая клетка, + - заполненная клетка, * - мина. Вы конечно же слышали игру "Сапер".
-Мне нужно перевести всю эту запись в массив а() (что вроде бы уже сделано);
-Далее мне этот массив нужно перевести в целочисленный для дальнейшей работы с записью - b().
Короче я делаю вот так:
если a(i) = "0" тогда b(i) = 11;
если a(i) = "+" тогда b(i) = 0;
если a(i) = "*" тогда b(i) = 10;
где a() - Char массив, b() - целочисленный массив.
Вот, потом я провожу небольшую операцию над массивом b() и полученные результаты мне нужно перебросить опять в a(), потом все это из a() вывести в текстбокс. И когда я перебрасываю из a() в b() мне пишет ошибку, так как a() у нас Char, а b() - Integer. Я и хочу перевести из Char в String.
Только не спрашивайте меня зачем мне все это нужно, просто нужно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.02.2012, 20:53

Удаление символов из файла и запись в новый файл.
Задание: Удалить все символы &quot;+&quot; и &quot;-&quot; в самой длинной строке файла. Остальные переписать без...

Запись символов из файла в единичный char и строку
Всем привет, учусь получать данные из файла и нашёл такое явление: если у нас есть такой код:...

Запись из массива символов в структуру
Есть структура: название предмета цена предмета Нужно с клавиатуры ввести строку: Авто 2300...

Запись массива символов в файл
Здравствуйте! А кто знает как записать массив символов, имеющий пробелы, в файл, а потом его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru