Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic 6.0 / БВГ / БурковВГ_Материалы_Расширений_электронных_лекций / БурковВГ_Лекция_Данные символьного типа и работа с файлами в VB 6.0..doc
Скачиваний:
90
Добавлен:
02.05.2014
Размер:
143.87 Кб
Скачать

Данные символьного типа и файлы в vb 6.0, работы с файлами

Данные символьного типа

Под каждый символ в памяти компьютера выделяется 1 байт (8 бит) памяти в AS­CIIкодировке(либо два байта вUnicode). Кодовые таблицы содержат по 256 символов. Первые коды с номера 0 по 127в любой кодировке одинаковы. С номера 0 по 31– управ­ляющие символы, номер32– пробел. Далее символы: с 48 по 57- цифры от 0 до 9, с 65 по 90– заглавные буквы латинского алфавита, с 97 по 122– малые буквы латинского ал­фавита. В промежутках - знаки. Позиции таблицы со128 по 256 используются для нацио­нальных символов различных языков.

Символьные данные можно сравнивать друг с другом, используя те же операции сравне­ния, что и с данными арифметического типа. Сравнение происходит посимвольно (по­байтно) слева направо. Фактически сравниваются соответствующие коды символов.

Для обработки символьных данных можно использовать операцию сцепления операндов (знак операции – символ «+» или &).

Строку символов всегда можно преобразовать в одномерный массив отдельных символов, расщепив его при помощи функции MID илиSplit.После обработки массива, его эле­менты следует обратно слить в строку при помощи операции сцепления & (Конкатена­ции).

Решение подавляющего большинства задач требует владения встроенными функциями VB6

Функция

Выполняемые действия

Пример

LEN(x)

Определяет длину указанной символьной переменной в байтах (количество симво­лов)

Fio=”Иванов”

L=LEN(FIO)

L=6

LEFT(x,k)

Вырезает из переменной хслеваkсим­волов. Вырезанные символы можно при­своить другой переменной

Fio=”Иванов”

T=LEFT(FIO,4)

T=”Иван”

RIGHT(x,k)

Аналогично предыдущей функции, только справа

Fio=”Иванов”

T=RIGHT(FIO,2)

T=”ов”

MID(x,pos,k)

Вырезает kсимволов из переменнойx, начиная с позицииpos, включительно

Fio=”Иванов”

T=MID(FIO,2,4)

T=”вано”

VAL(x)

Преобразует указанную символьную пе­ременную хв десятичное число.

p=”-243.65”

s=val(p)+100

s=-143.65

CINT(x)

Преобразует указанную символьную пе­ременную хв целое число

p=”-243”

s=val(p)+100

s=-143

STR(y)

Преобразует число yв строку символов. С учетом знака. Если число положитель­ное, вместо знака ставится пробел

a=123.45

b=-678

s=str(b)+str(a)

s=”-678 123.45”

CHR(N)

Результат – символ, соответствующий указанному номеру в таблице символов

For I=65 to 90

Print chr(i)

next

Вывод заглавных букв ла­тинского алфавита

ASC(x)

Определяет числовой код первого сим­вола в строке х

Print ASC(”123”)

Print ASC(” 1a2m”)

Print ASC(”ABC”)

На экране 49 32 65

INSTR(n,x,y)

Начиная с позиции n, определяет пози­цию первого появления подстрокиyв строкеx. Если не находит, то результат 0.

x=”кукуруза”

y=”ку”

Print INSTR(1,x,y);

Print INSTR(2,x,y);

На экране 1 3

LTRIM(x)

Возвращает копию строки х после уда­ления символов пробела из левой части строки (начальные пробелы)

RTRIM(x)

Возвращает копию строки х после уда­ления символов пробела из правой части строки (конечные пробелы)

TRIM(x)

Возвращает копию строки х после уда­ления начальных и конечных пробелов

LCASE(x)

Возвращает копию строки х со всеми символами верхнего регистра, преобра­зованными в символы нижнего регистра

UCASE(x)

Возвращает копию строки х со всеми символами нижнего регистра, преобразо­ванными в символы верхнего регистра

STRCONV(x, p)

Изменяет регистр букв символьной строки, в зависимости от значения пара­метра Р

Р=1, верхний регистр

Р=2, нижний регистр

Р=3, только первая заглавная

STRREVERSE(x)

Изменяет порядок следования в строке на обратный

SPACE(n)

Возвращает строку пробелов длиной nсимволов

REPLASE(S, S1, S2, n, k)

Заменяет в строке SподстрокуS1 на подстрокуS2, начиная с позицииn,k- количество замен, если не указано, то заменяются все вхожденияS1.

s1=”121113”

print Replace(s1,”1”,””,1)

На экране 23

Функция Split

Новая функция, которая появилась в Visual Basic 6.0. Функция Split используется для расщепления строки на подстроки с использованием разделителя подстрок. Возвращает одномерный массив с типом данных Variant(String), содержащий в качестве элементов найденные подстроки.

Split(Expression,[Delimiter],[Limit],[Compare] )

Expression- Обязательный аргумент - строка, которую нужно расщепить. Если аргумент содержит нулевую строку(""), то возвращается пустой массив, т.е. массив без элементов и данных.

Delimiter -Необязательный аргумент - символы типаString, которые используются в каче­стве разделителя строки. Если аргумент опущен, то по умолчанию используется символ пробела (" "). Если же аргумент содержит нулевую строку(""), то возвращается одноэле­ментный массив, содержащий целую строку.

Limit-Необязательный аргумент, содержащий число возвращаемых подстрок. Если аргу­мент опущен или равен -1, то обрабатывается вся строка.

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

Функция Join

Функция, выполняющая обратное действие – объединение элементов массива в строку, используя указанный разделитель.

Join (name_array, [Delimiter])

Пример. Дан текст. Определить количество предложений. Найти количество слов, начи­нающихся с буквы «п».На форме в поле Text1 – располагается исходный текст, в поле Text2 – количество пред­ложений, в поле Text3 – количество слов, начинающихся на букву п.

Private Sub Command1_Click()

s1$ = "Привет, Поль! С праздником! С наилучшими пожеланиями Питер."

Text1.Text = s1

ns = Len(s1)

ks = 0 : kp = 0

For i = 1 To ns

a$ = Mid(s1, i, 1)

If (a = ".") Or (a = "?") Or (a = "!") Then kp = kp + 1

Next i

For i = 1 To ns - 2

Select Case i

Case Is = 1

If Mid(s1, i, 1) = "П" Or Mid(s1, i, 1) = "п" Then ks = ks + 1

Case Else

If Mid(s1, i, 2) = " П" Or Mid(s1, i, 2) = " п" Then ks = ks + 1

End Select

Next i

Text2.Text = Str(kp)

Text3.Text = Str(ks)

End Sub

Private Sub Command2_Click()

Unload Me

EndSub

При вводе символа в текстовом окне в метках отображается код последнего и предпо­следнего символов

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Text1_Change()

Label3.Caption = Asc(Right(Text1.Text, 1))

If Len(Text1.Text) > 1 Then

Label4.Caption = Asc(Mid(Text1.Text, Len(Text1.Text) - 1, 1))

End If

End Sub

Оператор Mid

Синтаксис

Mid(stringvar, start [, length]) = string,

где stringvar- имя строчной переменной для модификации,

start- позиция символа вstringvar, с которой начинается заменяемая часть строки,

length- число заменяемых символов,

string - строковое выражение для замены.

Mid(s1, 9) = "Жиль"

Число заменяемых символов всегда меньше или равно числу символов в stringvar.

Не следует путать этот оператор с одноименной функцией!

Файлы

В зависимости от организационной структуры информации в файле,способа хранения и доступак этой информации принято выделять три типа файлов:

  1. Файлы последовательного доступа. Как правило, это текстовые файлы. Структур­ной единицей таких файлов является строка. Данные в них хранятся в виде цепочкиASCIIкодов и могут обрабатываться любым текстовым редактором. Запись и считывание данных при работе с такими файлами происходит строго по­следовательно (нельзя получить доступ ко второй записи, не прочитав первой).

  2. Файлы произвольного доступа. Это структурированные файлы, которые содержат информацию в виде записей. Например, файлы баз данных. Компоненты (поля) в записях таких файлов могут иметь разные типы. Но все записи файлов последова­тельного доступа имеют постоянную длину и порядковый номер. Это позволяет получить доступ сразу к нужной записи без последовательного просмотра всех предыдущих.

  3. Бинарные (двоичные) файлы. Это могут быть файлы последовательного доступа, но информация в них представлена в виде байтов или блоков байтов. К таким фай­лам можно отнести файлы с расширениемexe, т.е. программные. Это могут быть файлы произвольного доступа: размер записи у них всегда равен 1 байту, и любой байт можно считать по его порядковому номеру.