NOD ну уже заинтреговали, ну намекните что хоть с чем связываете если не секрет, а мы глядишь и мысль дадим какую...
Этот топик читают: Гость
Ответов: 5227
Рейтинг: 587
|
|||
карма: 4 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): Байт 0 есть символ пустой строкиДа ну
|
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Galkov, я не спорю, что длина его равна 1, потому, что код 0, все же, занимает один байт, но ведь это -- пустой символ для формата Str, или я ошибаюсь?
|
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): или я ошибаюсь?Зависит от того, что такое "формат Str" Например, то, чего на Length поступает
|
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Если верить функции преобразования
Если рассмотреть твою строку 30 00 00 00 00 00 30, то здесь, действительно семь символов. |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
nesco, символа пустой строки нет. Есть символ окончания строки - 0х00, который понимается как таковой всеми WinAPI функциями и языком С(и прочими наследниками). Чаще же всего вместе со срокой хранят её реальную длинну и 0х00 там ничем не отличается от любого иного символа.
|
|||
карма: 27 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Dilma писал(а): Чаще же всего вместе со срокой хранят её реальную длинну и 0х00 там ничем не отличается от любого иного символаDilma писал(а): Есть символ окончания строки - 0х00 |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): 0-я позиция массива PChar содержит длину строки, так кажется?Не факт что нулевая, не факт что содержит, не факт, что длину строки И кстати, кто такой "массив PChar" |
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Galkov писал(а): И кстати, кто такой "массив PChar"Dprus14.hlp писал(а): При работе со строками с нулевым символом в конце часто используют специальные типы указателей
: PChar и PWideChar, которые являются указателями соответственно на массивы с элементами типов Char и WideChar с нулевым символом в конце. Переменные этих типов часто требуется передавать в различные функции и процедуры в качестве параметров. К тому же, типы PChar и PWideChar существенно упрощают коды. Дело в том, что эти типы совместимы со строковыми константами. Например, объявление и использование переменной типа PChar может иметь вид: var P: PChar; ... P := 'Привет!'; Это эквивалентно операторам const SHello: array[0..7] of Char = 'Привет!'#0; var P: PChar; ... P := @SHello; А вот, что написано про тип String Dprus14.hlp писал(а): Со строками можно оперировать как с индексированными массивами символов. Например, S[i] - это символ, расположенный в строке в позиции i (индексы отсчитываются от 1, т.е. индекс 1 соответствует первому символу)
Вот только я припоминаю, что где-то на форуме писали, что 0-й индекс содержит длину строки. |
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
тип PChar можно представить так:
никаких длин он нигде не хранит. Видимо перепутано с:
|
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
В твоем примере P^ = 'П' - и всего делов.
Причем тут какой-то нулевой индекс - не пойму.... |
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Galkov, ну что, все же, содержит s[0]
|
|||
карма: 22 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
Dilma писал(а): вот тут в 0-м символе содержится длина(не путать с типом string) |
|||
карма: 27 |
|
Ответов: 9906
Рейтинг: 351
|
|||
nesco писал(а): Galkov, ну что, все же, содержит s[0] Первое: я не вижу определения переменной s Но, если это string, то авторы софта утверждают: не твое это собачье дело. И никак иначе. Т.е., именно так, как я сказал: Galkov писал(а): Не факт что нулевая, не факт что содержит, не факт, что длину строки |
|||
карма: 9 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
еще раз: длинну строки в 0-м символе содержит Pascal нотация времен DOS, которая была представлена выше. Строка типа string в 0-м символе может содержать все, что угодно в зависимости от версии компилятора.
|
|||
карма: 27 |
|