Страница: 1 |
Страница: 1 |
Вопрос: Двоичный (бинарный) файл
Добавлено: 07.08.04 08:58
Автор вопроса: BaskeT
Здраствуйте!
У меня возникла такая проблема:
имеется текстовая строка, нужно разбить её на отдельные слова, затем отсортировать их по букве, предварительно указав рядом со словом кол-во повторений в строке и сохранить это всё в файле. Файл должен быть обязательно не текстовый, а двоичный(бинарный). После я должен при нажатии любой буквы вывести все слова начинающиеся на неё в порядке возростания их повторения в строке.
А теперь у меня большая просьба помочь мне в таких вопросах:
1. Зачем нужен двоичный файл?
2. Какие данные хранятся в двоичном файле?
3. В чём отличие двоичного файла от текстового?
4. Как работать с двоичным файлом в VB 6.0 чтение\запись?
5. И как реализовать хранение и считывание по сути двух полей (слово | кол-во повторений) в двоичном файле?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #1
Добавлено: 07.08.04 13:32
1. Для хранения данных. Таких как графика, звук, машинный код
2. Последовательность байт
3. Более широкий спект использования
4. GET и PUT.
5. По моему операторы последовательного доступа (INPUT,PRINT) работают и в двоичном доступе тоже.
Номер ответа: 2
Автор ответа:
BaskeT
Вопросов: 2
Ответов: 1
Профиль | | #2
Добавлено: 08.08.04 00:41
Обьясните пожалуйста, почему выскакивает ошибка "Нижний индекс вне диапазона"???
[code]
Private Type rec
name As String * 20
num As Integer
End Type
Private Sub Command1_Click()
Dim filename As String
Dim my() As rec
filename = "c:\temp.txt"
Open filename For Binary As #1
For i = 1 To 3
my(i).name = InputBox$("Input name ")
my(i).num = InputBox$("Input number")
Put #1, , my(i)
Next
Seek #1, 1
For i = 1 To 3
Get #1, , my(i)
MsgBox "Input name is " & my(i).name
MsgBox "Input number is " & my(i).num
Next
Close #1
End Sub
[/code]
Номер ответа: 3
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #3
Добавлено: 08.08.04 00:48
>im my() As rec
Пустой массив.
Можно определить сразу
ReDim my(1 To 3)
а можно менять размерность в цикле
ReDim Preserve my(i)
Номер ответа: 4
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #4
Добавлено: 08.08.04 04:50
Да, а вот в Turbo Basic можно было объявлять массивы размером до 10, не объявляя их...
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 09.08.04 11:44
Разбить на слова - split(string," "'
Отсортировать по букве проще запихнув их в ListBox со свойством Sorted=True.
Работа с двумя полями, как написано выше - пользовательский тип. Сохранение через Put.
Один совет - включи Header файла. Создай пользовательский тип с полями типа Version, RecNumber, Reserve и т.п., при сохранении пиши его в начало файла, при открытии - считывай, затем по RecNumber переопределяй массив.
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 09.08.04 11:52
> Разбить на слова - split(string," "'
Только вот не следует забывать про знаки препинания...
> Отсортировать по букве проще запихнув их в ListBox со свойством Sorted=True.
Боже упаси от такого решения !!!!
Самое лучшее, воспользоваться QuickSort, благо на VB он переписан и лежит на форуме по PB...
Номер ответа: 7
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #7
Добавлено: 09.08.04 12:56
После знаков препинания тоже идут пробелы. Исключение - перевод строки. Ежели серьезно подходить к вопросу, то здесь надо посимвольно перебирать текст и следить за кодом символов.
А чем тебе такое решение не? Создашь временный контрол типа ListBox и кидаешь туда слова. Потом его удаляешь. Это вернее чем всякие сырые наработки, к тому же возможно будет шустрее (хотя и не факт). Разумеется, можно использовать готовые коды с разных сайтов, но я рекомендовал простейший вариант, который реализует даже начинающий программист без дополнительной информации. И пугаться тут нечего
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 09.08.04 13:17
Это будет много дельше чем использование сортировок...