Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для timsc1
15 / 15 / 2
Регистрация: 27.11.2011
Сообщений: 714

Связанные текстовые файлы

04.05.2017, 22:17. Показов 1185. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!! Такая задача:
VB2008
На форме 2 ЛБ, в ресурсах 2 текстовых файла: В одном список писателей, в другом писатели с их произведениями. Файлы делаю в массивы. Массив писателей в ЛБ1. При выборе писателя необходимо в ЛБ2 записать их произведения. Делаю так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 lb1.Items.AddRange(avt) - массив писателей загнал в ЛБ1
 Dim s As String = lb1.SelectedItem
        For i = 0 To pro.length - 1
            If s = pro(i) Then
                k = i + 1
                While pro(k) <> ""
                    lb2.Items.Add(pro(k))
                    k += 1
                End While
 
            End If
        Next
если выбранный в ЛБ1 совпадает с элементом массива произведений, то вывести начиная со следующей строки до пустой строки (в массиве произведений писатель и произведения идут подряд, а следующий через пустую строку)
Ругается на этот алгоритм. Может есть как-то проще и современней способ??? Подскажите плиз!!!
Файлы:
писатели:
Лермонтов
Пушкин
Толстой
Чехов
Достоевский

произведения:
Лермонтов
Мцыри
Корсар
Герой Н В

Пушкин
Руслан
Рыбка
Салтан
Онегин

Толстой
Война и мир
Анна
Дество

Чехов
Дама
Ваня
3 Сестры
Сад
Чайка

Достоевский
Прест
Карамазовы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2017, 22:17
Ответы с готовыми решениями:

Текстовые файлы и каталоги
Здравствуйте! Возник вопрос. Я создаю что-типа базы данных. Нужно, чтобы при выборе улицы и дома автоматически заполнялись все поля на...

Обработка строковых данных и текстовые файлы
День добрый, нужна ваша помощь. Если такая вот програмка, выглядит она так: http://s017.***********/i434/1304/91/b99e312101fb.jpg ...

Удалить все текстовые файлы на рабочем столе
На работе на одном из компьютеров какой-то прикол. Кто-то зафигачил на рабочий стол кучу файлов, около 80 000 тыс. текстовых файлов =-O...

12
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
05.05.2017, 00:55
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Если принять имеющуюся структуру файлов, то это может выглядеть как-то так
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
Private ar(), bk() As String
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    ar = My.Resources.author.Split(vbCrLf)
    bk = My.Resources.books.Split(vbCrLf)
    ListBox1.Items.Clear()
    ListBox1.Items.AddRange(ar)
    ListBox1.SelectedIndex = 0
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    ListBox2.Items.Clear()
    Dim bs As String = ListBox1.SelectedItem
    Dim j As Integer
    If bk.Contains(bs) Then
        For i = 0 To bk.Length - 1
            If bk(i) = bs Then
                j = i + 1
                Do While bk(j).Length > 1
                    ListBox2.Items.Add(bk(j))
                    j += 1
                    If j > bk.Length - 1 Then Exit Do
                Loop
                Exit For
            End If
        Next
    End If
End Sub
PS. Стоит подумать над более простым решением или изменить структуру данных. Например хранить в виде xml-файла или ini-файла и т.д.
2
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
05.05.2017, 07:16
структура файла может быть самой простеййшей:
АВТОР1=Книга1;Книга2;Книга3;....;Книга10 0
АВТОР2=Книга1;Книга2;Книга3;....;Книга70
АВТОР3=Книга1;Книга2;Книга3;....;Книга15
и так далее
чтение такой структуры не займет много времени и проста в понимании
0
 Аватар для timsc1
15 / 15 / 2
Регистрация: 27.11.2011
Сообщений: 714
05.05.2017, 09:44  [ТС]
Yury Komar, это в смысле для каждого автора создавать массив???
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
05.05.2017, 12:16
timsc1, нет это будет один массив строк.а уже из него по имени авторавытаскивать его кники...
0
 Аватар для timsc1
15 / 15 / 2
Регистрация: 27.11.2011
Сообщений: 714
05.05.2017, 12:30  [ТС]
Yury Komar, я так и делал:
VB.NET
1
        Dim pro() As String = My.Resources.pr.Split(New String() {vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
и алгоритм ovva, тоже на этом построен...
или может я чего-то не догоняю???
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
05.05.2017, 13:04
алгоритм OVVA идентичен вашему, но он предусмотрел исключение тех ошибок, с которыми вы сталкивались...
я же предлагаю вам руками или же программно объединить оба ваших файла в один, соблюдая удобную вам структуру, и уже с ним далее и работать, чтобы не плодить кучу фалов, для работы потребуется четт более 3-5 строк кода (навскидку).

вопрос еще в том, откуда берутся эти файлы, обновляются ли они или нет... Ну а если файлы в таком виде постоянно к вам поступают, тогда ничего менять ненадо, а просто пользоваттся кодом от ovva
0
 Аватар для timsc1
15 / 15 / 2
Регистрация: 27.11.2011
Сообщений: 714
05.05.2017, 13:30  [ТС]
Yury Komar, файлы сидят в ресурсах, они не меняются. Я делал по алгоритму OVVA, но мне интересна Ваша мысль тоже, если будет время, накидаете код??? Если в файле произведений есть авторы, то зачем их объединять??? Может можно обойтись одним этим файлом???
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
05.05.2017, 13:46
можно и одним...
я думаю вы и сами сможете написать код для этого случая.

а менять структуру для того, чтобы упростить ображение к данным и не громоздить кучу кода.
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
05.05.2017, 14:37
Цитата Сообщение от timsc1 Посмотреть сообщение
Может есть как-то проще и современней способ???
Я бы на вашем месте воспользовался советом ovva,
Цитата Сообщение от ovva Посмотреть сообщение
изменить структуру данных. Например хранить в виде xml-файла
Что это вам даст?
Во-первых, NET.Framework предоставляет очень удобные классы для работы с XML.
Во-вторых, это сильно упростит задачу поиска.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
05.05.2017, 14:40
timsc1, хранить данные можно в тексте, но зачем же работать с ними в тексте? Нужно распарсить твои ресурсы в нормальные объекты со свойствами. Например, автора можно представить так:
VB.NET
1
2
3
4
Public Class Author
    Inherits List(Of String)
    Public Property Name() As String
End Class
Это спорное решение с точки зрения логики наследования, ибо автор не есть список книг, но в данном контексте вполне удобно.
И вот нужно распарсить твои данные в список авторов List(Of Author). этот список прибиндить к первому listBox, DisplayMember = "Name". По клику брать SelectedItem, приводить к Author и биндить его ко второму ListBox
Написал бы код, но я пока далеко от студии.
3
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
05.05.2017, 18:37
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

timsc1, например если структура файла будет такого вида:
Лермонтов=Мцыри;Корсар;Герой Н В
Пушкин=Руслан;Рыбка;Салтан;Онегин
Толстой=Война и мир;Анна;Дество
Чехов=Дама;Ваня;3 Сестры;Сад;Чайка
Достоевский=Прест;Карамазовы
тогда можно напрямую обращаться к файлу при чтении книг, либо создать список классов Всех авторов в памяти при загрузке файла и уже работать с классами, забыв про файл:
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
35
36
37
38
39
40
41
Public Class Form1
    Dim Authors As List(Of Author) 'Коллекция всех авторов и их книг
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim OFD As New OpenFileDialog
        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            LoadFile(OFD.FileName)
            ListBox1.Items.Clear()
            ListBox2.Items.Clear()
 
            For Each avt As Author In Authors
                ListBox1.Items.Add(avt.Name) 'Заполняем наш ListBox1 именами авторов из сформированной коллекции
            Next
        End If
    End Sub
 
    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        For Each Avt As Author In Authors
            If Avt.Name = sender.SelectedItem Then
                ListBox2.Items.Clear()
                ListBox2.Items.AddRange(Avt.Books.ToArray) 'Показываем все книги выбранного автора
            End If
        Next
    End Sub
 
    Public Sub LoadFile(FileName As String)
        Authors = New List(Of Author) 'Создаем новую коллекцию всех авторов и их книг
        For Each Line As String In IO.File.ReadAllLines(FileName, System.Text.Encoding.Default)
            If Not String.IsNullOrWhiteSpace(Line) Then
                Dim a As New Author 'Создаем новый класс автора
                a.Name = Line.Split("=")(0) 'Даем ему имя
                a.Books.AddRange(Line.Split("=")(1).Split(";")) 'Запоминаем его книжки
                Authors.Add(a) 'Добавляем нового автора в коллекцию
            End If
        Next
    End Sub
 
    Public Class Author
        Public Property Name As String
        Public Property Books As New List(Of String)
    End Class
End Class
Миниатюры
Связанные текстовые файлы  
4
 Аватар для timsc1
15 / 15 / 2
Регистрация: 27.11.2011
Сообщений: 714
06.05.2017, 09:10  [ТС]
Цитата Сообщение от ovva Посмотреть сообщение
Например хранить в виде xml-файла
Для меня это тёмный лес, пока с таким не работаю... надо учиться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2017, 09:10
Помогаю со студенческими работами здесь

Определить строки этого файла, содержащие максимальную по длине подстроку, состоящую из одинаковых символов
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

Почему не отправляются файлы docx, txt и прочие текстовые файлы?
Архивы и картинки проверял- отправляются на сервер, а текстовые файлы- нет. Что нужно, чтоб они тоже отправлялись? &lt;?php ...

Текстовые файлы. Создать новый файл, объединив исходные файлы
даны текстовые файлы Name1 и Name2 .создать Name3 файл объединив Name1 и Name2 текстовые файлы

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

Текстовые файлы
Условие: Создать текстовый файл, состоящий из записей, имеющих заданную структуру (см. ваш вариант). Написать программу, ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru