Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 08.08.04 00:48
>;Dim my() As rec
 Пустой массив.

Можно определить сразу
 ReDim my(1 To 3)
а можно менять размерность в цикле
 ReDim Preserve my(i)

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #8
Добавлено: 09.08.04 13:17
Это будет много дельше чем использование сортировок...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам