Символьные типы
Символы
Это отдельные символы. Определены следующие типы:
Тип | Перевод | Байт в памяти | Примечание |
AnsiChar | Символ ANSI | 1 | 256 символов |
WideChar | Символ Unicod | 2 | Первые 256 символов, как в ANSI |
Char | Символ | 1 | = AnsiChar. |
ANSI – кодировка символов американского института стандартов. Используется для алфавита малого размера, каждый символ кодируется одним байтом.
- Символы 0..127 интернациональны. Символы 128..255 – знаки национального языка.
- Символы 0…31 не имеют визуального представления и используются для служебных целей.
Примеры служебных символов
№ | Назначение |
7 | Звуковой сигнал |
9 | Табуляция |
11 | Новая строка |
13 | Конец абзаца |
32 | Пробел |
Символы с кодами 32—127
№ | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак |
32 | Пробел | 48 | 0 | 64 | @ | 80 | P | 96 | ` | 112 | p |
33 | ! | 49 | 1 | 65 | A | 81 | Q | 97 | a | 113 | q |
34 | “ | 50 | 2 | 66 | B | 82 | R | 98 | b | 114 | r |
35 | # | 51 | 3 | 67 | C | 83 | S | 99 | c | 115 | s |
36 | $ | 52 | 4 | 68 | D | 84 | T | 100 | d | 116 | t |
37 | % | 53 | 5 | 69 | E | 85 | U | 101 | e | 117 | u |
38 | & | 54 | 6 | 70 | F | 86 | V | 102 | f | 118 | v |
39 | ‘ | 55 | 7 | 71 | G | 87 | W | 103 | g | 119 | w |
40 | ( | 56 | 8 | 72 | H | 88 | X | 104 | h | 120 | x |
41 | ) | 57 | 9 | 73 | I | 89 | Y | 105 | i | 121 | y |
42 | * | 58 | : | 74 | J | 90 | Z | 106 | j | 122 | z |
43 | + | 59 | ; | 75 | K | 91 | [ | 107 | k | 123 | { |
44 | , | 60 | < | 76 | L | 92 | \ | 108 | l | 124 | | |
45 | - | 61 | = | 77 | M | 93 | ] | 109 | m | 125 | } |
46 | . | 62 | > | 78 | N | 94 | ^ | 110 | n | 126 | ~ |
47 | / | 63 | ? | 79 | O | 95 | _ | 111 | o | 127 |
Символы 128..255 интернациональны. Конкретный набор символов зависит от выбранного языка и шрифта. Ниже представлены примеры для шрифта Times New Roman. Символы 128..191 – специальные знаки. Символы 192.. 255 – буквы кириллицы.
Примеры специфических символов
№ | Знак | Назначение | № | Знак | Назначение |
136 | € | Знак Евро | 171 | « | Левые кавычки |
147 | “ | Левые кавычки | 172 | » | Правые кавычки |
148 | ” | Правые кавычки | 174 | ® | Знак регистрации |
153 | ™ | Знак торговой марки | 176 | ° | Знак градуса Цельсия |
164 | ¤ | Знак валюты | 177 | ± | Знак плюс/минус |
167 | § | Знак параграфа | 184 | ё | Буква ё |
168 | Ё | Буква Ё | 185 | № | Знак номера |
169 | © | Знак авторского права |
Символы 192 – 255
№ | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак |
192 | А | 200 | И | 208 | Р | 216 | Ш | 224 | а | 232 | и | 240 | р | 248 | ш |
193 | Б | 201 | Й | 209 | С | 217 | Щ | 225 | б | 233 | й | 241 | с | 249 | щ |
194 | В | 202 | К | 210 | Т | 218 | Ъ | 226 | в | 234 | к | 242 | т | 250 | ъ |
195 | Г | 203 | Л | 211 | У | 219 | Ы | 227 | г | 235 | л | 243 | у | 251 | ы |
196 | Д | 204 | М | 212 | Ф | 220 | Ь | 228 | д | 236 | м | 244 | ф | 252 | ь |
197 | Е | 205 | Н | 213 | Х | 221 | Э | 229 | е | 237 | н | 245 | х | 253 | э |
198 | Ж | 206 | О | 214 | Ц | 222 | Ю | 230 | ж | 238 | о | 246 | ц | 254 | ю |
199 | З | 207 | П | 215 | Ч | 223 | Я | 231 | з | 239 | п | 247 | ч | 255 | я |
Кодировка ASCII
Внимание! При разработке консольного приложения осуществляется эмуляция операционной системы ДОС. В ДОС используется символьный интерфейс командной строки и псевдографика для рисования таблиц. Применяется таблица кодировки символов ASCII (американский стандартный код для обмена информацией).
Кодировка ASCII отличается от ANSI. Она содержит 256 символов. Символы 0..127 интернациональны. Они такие же, как для кодировки ANSI. Символы с кодами 128 – 255 зависят от национального языка. Ниже даны символы для ныне используемой в России кодировки ASCII.
Символы с кодами 128 – 255
№ | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак | № | Знак |
128 | А | 144 | Р | 160 | а | 176 | ░ | 192 | ‼2 | 208 | ╨ | 224 | р | 240 | Ё |
129 | Б | 145 | С | 161 | б | 177 | ▒ | 193 | ┴ | 209 | ╤ | 225 | с | 241 | ё |
130 | В | 146 | Т | 162 | в | 178 | ▓ | 194 | ┬ | 210 | ╥ | 226 | т | 242 | Є |
131 | Г | 147 | У | 163 | г | 179 | │ | 195 | ├ | 211 | ╙ | 227 | у | 243 | є |
132 | Д | 148 | Ф | 164 | д | 180 | ┤ | 196 | ─ | 212 | ╘ | 228 | ф | 244 | Ї |
133 | Е | 149 | Х | 165 | е | 181 | ╡ | 197 | ┼ | 213 | ╒ | 229 | х | 245 | ї |
134 | Ж | 150 | Ц | 166 | ж | 182 | ╢ | 198 | ╞ | 214 | ╓ | 230 | ц | 246 | Ў |
135 | З | 151 | Ч | 167 | з | 183 | ╖ | 199 | ╟ | 215 | ╫ | 231 | ч | 247 | ў |
136 | И | 152 | Ш | 168 | и | 184 | ╕ | 200 | ╚ | 216 | ╪ | 232 | ш | 248 | ° |
137 | Й | 153 | Щ | 169 | й | 185 | ╣ | 201 | ╔ | 217 | ┘ | 233 | щ | 249 | ∙ |
138 | К | 154 | Ъ | 170 | к | 186 | ║ | 202 | ╩ | 218 | ┌ | 234 | ъ | 250 | · |
139 | Л | 155 | Ы | 171 | л | 187 | ╗ | 203 | ╦ | 219 | █ | 235 | ы | 251 | √ |
140 | М | 156 | Ь | 172 | м | 188 | ╝ | 204 | ╠ | 220 | ▄ | 236 | ь | 252 | № |
141 | Н | 157 | Э | 173 | н | 189 | ╜ | 205 | ═ | 221 | ▌ | 237 | э | 253 | ¤ |
142 | О | 158 | Ю | 174 | о | 190 | ╛ | 206 | ╬ | 222 | ▬ | 238 | ю | 254 | ■ |
143 | П | 159 | Я | 175 | п | 191 | ┐ | 207 | ╧ | 223 | ▬ | 239 | я | 255 |
По сравнению с ASCII в ANSI нет символов псевдографики. Поэтому номера кодов символов кириллицы другие.
Unicod – способ кодирования символов в алфавитах большого размера. Каждый символ кодируется двумя байтами. Можно иметь 64К символов. Первые 256 символов – коды ANSI.
Строки
Это последовательность символов, заключенная в апострофы. Примеры:
- ’FPC’
- ’’ – пустая строка. Два апострофа, а не кавычки.
Чтобы апостроф включить в строку, его надо записать дважды. Тогда он будет интерпретироваться просто, как символ.
- ’Это ”FPC’’, новая версия языка’.
В строку можно включать управляющие коды с номерами 0..31. Они вызывают определенное действие. Например, код #7 включает звуковой сигнал. Они не имеют символьного представления. Поэтому вводятся номерами. Перед номером кода добавляется знак номера #, как признак этого. Примеры
- Включить в строку управляющий код 13: ’#13 ’.
- Включить в строку управляющие коды 13 и 7: ’#13#7 ’.
При вводе в строку подряд нескольких управляющих кодов между ними не должно быть разделителей.
Определены строковые типы:
Тип | Длина | Байты | Примечание |
ShortString[n] | Не более 255. | Длина + 1 | Короткая строка. В старом Паскале это String. Под символ 1 байт. Создается в статической памяти. |
AnsiString | До 231 | Длина + 4 | Строка с кодом ANSI. Под символ 1 байт. Создается в динамической памяти. |
WideString | До 231 | Длина/2 + 4 | Широкая строка в коде Unicod. Под символ 2 байта. Создается в динамической памяти. |
String | По умолчанию совпадает с AnsiString. | ||
Pchar | Не ограничено | Длина + 1 | Указатель на символ. Под символ 1 байт. Создается в динамической памяти. |
ShortString содержит L символов (до 255). В памяти под нее выделяется статически L+1 байт. В первый байт помещается число, равное L. Если размер явно не задан, то L=255. Указание типа String для переменной объявляет её как короткую строку (short string) в следующих случаях:
- Указана директива {$H-}. При этом объявление String всегда будет равнозначно объявлению переменной как short string.
- Указана директива {$H+} и задана длина строки в объявлении. При этом объявление типа String есть объявление короткой строки.
AnsiString и WideString создаются в динамической памяти. Статически под них создаются указатели размером в 4 байта для адреса начала строки. Для AnsiString и WideString число символов в строке до 2 Гбайт. Размеры AnsiString и WideString ограничены только доступной памятью. WideString отличается от AnsiString тем, что под каждый символ отводится 2 байта. Для таких строк память отводится в 2 раза больше. WideString предназначена для документов с алфавитом с большим числом символов (например, китайский текст).
Рекомендуемый тип String. По умолчанию ему соответствует AnsiString.
Если употребляется string[n], то статически создается строка типа ShortString с заданным размером.
Строка PChar кончается символом #0 и может содержать любые другие символы. Широко используется внутри ОС Windows. Для строки PChar используется и обозначение ASCIIZ, что означает строка в кодировке ASCII, завершающая нулем (Z – zero, код с номером 0). Помещается в динамическую память по адресу, который заносится в указатель, создаваемый статически при компиляции программы.