Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
3 / 3 / 0
Регистрация: 05.05.2013
Сообщений: 14

Поиск в файле произвольного доступа

05.05.2013, 22:31. Показов 1831. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех!

Имеется файл basa_videocard.bvd (расширение произвольное, файл легко открывается блокнотом)

В этом файле хранятся строки данных. По 11 полей в одной строке. (модель, производитель, типа памяти, объём, ширина шины данных, тех процесс, поддержка карточкой SLI\cross fire, через какой разъем подключается, версия шейдеров, цена видеокарты).

Задача:
Открыть файл в произвольном доступе.
Сделать поисковую форму. Форма содержит в себе несколько полей. Поиск должен выполняться как по одному любому критерию, так и по нескольким полям одновременно.

Допустим если ввести nvidia, то должны отобразиться все строки (все видеокарты) на данном чипе.
А если ввести "128 бит" в одно поле и "40 nm" в другое и "PCI Express 2.0 x16" в третье, то должны отобразиться строки (видеокарты) которые содержат в себе эти характеристики.

Полей для поиска соответственно 11.

Так же должно быть отдельное поле, которое будет искать по всем критериям сразу.
т.е. если я введу букву "а" то мне должны отобразиться строки, которые содержат данный символ в любом из полей.

Результаты можно выводить любым способом.

Немного погуглив понял, что нужно использовать подстроки, но как это и что это такое никак не соображу.
Если что-то не понятно, пишите, попробую объяснить по-другому.
Надеюсь на помощь!
Вложения
Тип файла: rar basa_videocard.rar (441 байт, 17 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.05.2013, 22:31
Ответы с готовыми решениями:

Не обновляются значения в файле произвольного доступа
Помогите не обновляет значения в файле произвольного доступа! многом ошибка, уже все перепробовал! помогите очень нужно!! #include...

Поиск произвольного текста в файле
Помогите, не могу реализовать поиск произвольного текста в файле (пишу на Delphi чекер новых версий плагинов для bukkit) Задача: 1....

Файлы произвольного доступа
Добрый вечер, помогите, пожалуйста. В столбцах матрицы произвольного размера, размещённой во внешнем файле, провести перестановку ее...

12
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.05.2013, 09:01
Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
Результаты попыток в студию!
Открыть файл в произвольном доступе.
Файл произвольного доступа открывается несколько иначе, чем файл последовательного доступа. Синтаксис оператора open при этом выглядит следующим образом: Open pathName [For Random] As fileNumber Len = recLength где: pathName — полное имя файла; fileNumber — номер файла; recLength — длина записи в байтах. При использовании оператора Open для открытия файла произвольного доступа атрибут For не обязателен, так как в Visual Basic 6 этот параметр устанавливается по умолчанию. Как видно из синтаксиса, в отличие от файла с последовательным доступом, при открытии файла с произвольным доступом необходимо обязательно указывать длину записи. При этом, если длина записи не известна, ее можно вычислить с использованием функции Len.
Добавлено через 9 часов 25 минут
Описание и пример
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
06.05.2013, 09:51
Цитата Сообщение от lbvfy_933 Посмотреть сообщение
В этом файле хранятся строки данных.
Технически в этом файле всего 1 строка

Цитата Сообщение от lbvfy_933 Посмотреть сообщение
По 11 полей в одной строке.
Тут уместнее сказать, что в одной записи 11 типов пользовательских данных ( кстати вами описано только10)

Цитата Сообщение от lbvfy_933 Посмотреть сообщение
понял, что нужно использовать подстроки
Вначале надо создать пользовательский тип данных
Visual Basic
1
2
3
4
5
6
7
8
9
Type VideoCard
Name As String * 20
Vendor As String * 10
TypeMem As String * 7
' И так остальные 8 типов
' строго в соответствии с типом
' и размером в вашем файле
 
End Type
Дальше открываем файл в произвольном доступе, считываем записи последовательно, в них ищем нужную информацию. Если инфа есть, то выводим на экран.
1
3 / 3 / 0
Регистрация: 05.05.2013
Сообщений: 14
06.05.2013, 10:58  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Результаты попыток в студию!
прикладываю то, что сумел наработать.



с произвольным доступом разобрался.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Цитата Сообщение от lbvfy_933 Посмотреть сообщение
В этом файле хранятся строки данных.
Технически в этом файле всего 1 строка
Цитата Сообщение от lbvfy_933 Посмотреть сообщение
По 11 полей в одной строке.
Тут уместнее сказать, что в одной записи 11 типов пользовательских данных ( кстати вами описано только10)
Цитата Сообщение от lbvfy_933 Посмотреть сообщение
понял, что нужно использовать подстроки
Вначале надо создать пользовательский тип данных
ну по сути да, это одна длинная строка, а 11 тип пользовательских данных - версия DirectX.

Осталось разобраться как прикрутить поиск.
Вложения
Тип файла: rar proect.rar (11.2 Кб, 13 просмотров)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.05.2013, 11:26
Сделать поисковую форму
Обязательно поисковую? Может проще фильтровать?
При открытии загрузить все данные в таблицу, а фильтром прятать ненужные!?
Вложения
Тип файла: rar basa_videocard.rar (7.5 Кб, 9 просмотров)
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.05.2013, 11:34
В твоём варианте отображается только одна карта.
Это не соответствует требованиям:
Допустим если ввести nvidia, то должны отобразиться все строки (все видеокарты) на данном чипе.
Поэтому лучше использовать контролы позволяющие выводить списки или таблицы.
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.05.2013, 11:38
Лучший ответ Сообщение было отмечено как решение

Решение

Ну раз появились собственные наработки не грех и помочь.
Как вариант с фильтром:
Вложения
Тип файла: rar basa_videocard.rar (17.9 Кб, 15 просмотров)
3
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
06.05.2013, 14:56
Процедуру фильтра можно преобразовать:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Find2()
Dim i, C
Dim Vid As Boolean
With MSHFlexGrid1
    For i = 1 To .Rows - 1
            For C = 1 To 11
                If Текст1(C).Text = "" Or InStr(1, .TextMatrix(i, C), Текст1(C).Text) > 0 Then
                   Vid = True
                Else
                   Vid = False
                   Exit For
                End If
            Next C
            .RowHeight(i) = .RowHeight(0) * IIf(Vid, 1, 0)
    Next i
End With
End Sub
2
3 / 3 / 0
Регистрация: 05.05.2013
Сообщений: 14
06.05.2013, 22:56  [ТС]
ого. огромное Вам спасибо за такой труд. возникли вопросы.

1. не могли бы вы пояснить как работает sub format_grid
2. как дать имя 11ому столбцу?
3. как сделать так чтобы подписи, которые я дал столбцам умещались на экране?
4. допустим я отфильтровал строки и у меня осталось только две видеокарты. можно ли как нибудь поместить результат в текстовый файл или же сразу отправить на печать?
5. и кхм вопрос конечно глупый, но всё же спрошу: как грамотно перенести ваш код в свой проект?
Вложения
Тип файла: rar basa_videocard111.rar (18.1 Кб, 13 просмотров)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
07.05.2013, 00:42
1. А что вызавает вопросы-затруднения
2.
Visual Basic
1
TextMatrix(0, 2) = "Производитель"
Даёт заголовок третьему столбцу (смотри внимательно sub format_grid).
Сделай по аналогии для остальных( в примере показаны 3)
3. Вариантов несколько:
-изменить подписи
-изменить шрифт
-изменить ширину колонок
-изменить высоту шапки таблицы и разрешить перенос
-сделать шапку таблицы в виде картинки(например в екселе) и прицепить к таблице без шапки
4. запись в текстовой файл можно прикрутить в саму процедуру фильтрации
5. для меня проще написать ( в данном случае дописать) мой проект чем переделывать или лепить из двух один.
Можно добавить мою форму к своему проекту и вызывать её для фильтрации, а свою оставить для просмотри данных по одной карте. Можно на форме фильтра не показывать все параметры, а только характерные, а при выборе из отфильтрованного списка по клику по строке переходить на твою форму и показавыть все параметры.

Блок назначений:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
With MSHFlexGrid1
    .RowHeight(0) = 450
    .WordWrap = True
    .Width = Width
    .Left = 0
    Ms = (.Width - 2800) / 100
    .Cols = 12
    .ColWidth(0) = 3 * Ms: W = 0: Текст1(0).Left = W: Текст1(0).Text = "": Текст1(0).Width = .ColWidth(0)
    .ColWidth(1) = 20 * Ms: W = W + .ColWidth(0): Текст1(1).Left = W: Текст1(1).Text = "": Текст1(1).Width = .ColWidth(1): .TextMatrix(0, 0) = "№"
    .ColWidth(2) = 10 * Ms: W = W + .ColWidth(1): Текст1(2).Left = W: Текст1(2).Text = "": Текст1(2).Width = .ColWidth(2): .TextMatrix(0, 1) = "Название"
    .ColWidth(3) = 7 * Ms: W = W + .ColWidth(2): Текст1(3).Left = W: Текст1(3).Text = "": Текст1(3).Width = .ColWidth(3): .TextMatrix(0, 2) = "Производитель"
    .ColWidth(4) = 10 * Ms: W = W + .ColWidth(3): Текст1(4).Left = W: Текст1(4).Text = "": Текст1(4).Width = .ColWidth(4): .TextMatrix(0, 3) = "Тип памяти"
    .ColWidth(5) = 12 * Ms: W = W + .ColWidth(4): Текст1(5).Left = W: Текст1(5).Text = "": Текст1(5).Width = .ColWidth(5): .TextMatrix(0, 4) = "Объём памяти"
    .ColWidth(6) = 8 * Ms: W = W + .ColWidth(5): Текст1(6).Left = W: Текст1(6).Text = "": Текст1(6).Width = .ColWidth(6): .TextMatrix(0, 5) = "Разрядность шины"
    .ColWidth(7) = 15 * Ms: W = W + .ColWidth(6): Текст1(7).Left = W: Текст1(7).Text = "": Текст1(7).Width = .ColWidth(7): .TextMatrix(0, 6) = "Тех. процесс"
    .ColWidth(8) = 15 * Ms: W = W + .ColWidth(7): Текст1(8).Left = W: Текст1(8).Text = "": Текст1(8).Width = .ColWidth(8): .TextMatrix(0, 7) = "Поддержка SLI/Cross Fire"
    .ColWidth(9) = 7 * Ms: W = W + .ColWidth(8): Текст1(9).Left = W: Текст1(9).Text = "": Текст1(9).Width = .ColWidth(9): .TextMatrix(0, 8) = "Тип подключения"
    .ColWidth(10) = 7 * Ms: W = W + .ColWidth(9): Текст1(10).Left = W: Текст1(10).Text = "": Текст1(10).Width = .ColWidth(10): .TextMatrix(0, 9) = "Шейдеры"
    .ColWidth(11) = 7 * Ms: W = W + .ColWidth(10): Текст1(11).Left = W: Текст1(11).Text = "": Текст1(11).Width = .ColWidth(11): .TextMatrix(0, 10) = "DirectX"
    .ColWidth(12) = 7 * Ms: W = W + .ColWidth(11): Текст1(12).Left = W: Текст1(12).Text = "": Текст1(12).Width = .ColWidth(12): .TextMatrix(0, 11) = "Цена"
End With
1
3 / 3 / 0
Регистрация: 05.05.2013
Сообщений: 14
07.05.2013, 09:01  [ТС]
с названиями разобрался. форму прикрепил таким же образом как описали Вы.

осталось только разобраться с записью в текстовый файл. в принципе всё понятно. кидаем кнопку на форму, даём ей название сохранить, при нажатии пишем в файлик то, что есть в текстматриксах. не могли бы Вы показать как будет это выглядеть?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
07.05.2013, 22:16
кидаем кнопку на форму, даём ей название сохранить,
Я бы сделал иначе: писал в файл при фильтрации
1
3 / 3 / 0
Регистрация: 05.05.2013
Сообщений: 14
11.05.2013, 10:21  [ТС]
Цитата Сообщение от Alex77755 Посмотреть сообщение
Я бы сделал иначе: писал в файл при фильтрации
а это как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2013, 10:21
Помогаю со студенческими работами здесь

Файлы произвольного доступа
Помогите пожалуйста дописать код на очистку файла. Записи выводятся в listbox. Удаление происходит, но добавляются/остаются пустые записи....

Файл произвольного доступа
Люди добрые помогите с таким вопросом: Пытаюсь открыть файл для произвольного доступа Open "с\:Date.dat" For Random As...

Файл произвольного доступа
Читаю Дейтелов, про файлы произвольного доступа. Написал вроде как по примеру, но что-то идет не так. Идея такая - создается файл, в нем...

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

Файл произвольного доступа
Здравствуйте, снова к файлам, такая задача. Допустим, у меня есть текстовый файл с данными - код, название, количество, и со значениями...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru