Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Длина строковой переменной [D7, XP]


Страницы:   1 2 3

fend ©   (2007-09-28 08:48:00) 

Как определить длину переменной string?


Anatoly Podgoretsky   (2007-09-28 19:14:00) [1]

> Германн  (28.09.2007 17:15:52)  [52]

Не страшно, но не нужно и это не про канделябр.


Anatoly Podgoretsky   (2007-09-28 19:14:00) [2]

> Инс  (28.09.2007 17:02:51)  [51]

Это они уже виноваты, неправильно используют string, но это к PChar отношения не имеет.
Написать неправильно можно и для Integer - например MaxInt + 1 и отключение рантайм проверки
или for byte := 1 to 255 и удивляться некоторым эффектам.


Германн   (2007-09-28 17:15:00) [3]


> особенно часто видишь советы передавать String-и между DLL
> и приложением под видом PChar

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


Инс   (2007-09-28 17:02:00) [4]


> Anatoly Podgoretsky ©   (28.09.07 16:47) [50]

Из-за того, что многие думают, что PChar и String полностью совместимы, очень часто возникают ошибки, особенно часто видишь советы передавать String-и между DLL и приложением под видом PChar, при этом не упоминая ряд ограничений.


Anatoly Podgoretsky   (2007-09-28 16:47:00) [5]

> Инс  (28.09.2007 16:19:46)  [46]

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


Инс   (2007-09-28 16:36:00) [6]


> Т.е. тип String это тот же самый PChar только со служебной
> частью в начале...

Это финализируемый тип, со всеми вытекающими. Вот две хорошие статьи:
http://www.rsdn.ru/article/Delphi/dynarrays.xml
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1206


Германн   (2007-09-28 16:36:00) [7]


> Т.е. тип String это тот же самый PChar только со служебной частью в начале...
>

Ну если вспомнить про фаберже, то да. Но в "служебной части" то и все самое важное :-)


{RASkov}   (2007-09-28 16:32:00) [8]

var S: AnsiString;
-8|-4| 0 | 1 | 2 | 3 | 4 |
вот строка (S) - 'ABCDE'
(992)-8 - кол-во ссылок - 1
(996)-4 - длина строки - 5
(1000)0 - A (#65)
(1001)1 - B (#66)
(1002)2 - C (#67)
(1003)3 - D (#68)
(1004)4 - E (#69)
(1005)5 - #0
Так что ли получается?
Т.е. тип String это тот же самый PChar только со служебной частью в начале...


Инс   (2007-09-28 16:19:00) [9]


> Естественно, но к PChar это не относится, это изобретение
> Борланда, указатель на символ

PChar это не просто ^Char. Это тоже особый для компилятора тип.


Инс   (2007-09-28 16:17:00) [10]


> Полная

Не сказал бы. String физически соответствует PChar-у, но не наоборот. Но это не значит, что String можно всегда приводить к PChar и это будет безопасно. На уровне PChar компилятор забывает, что это особый финализируемый тип. Так что совместимость тут вообще постольку поскольку, только на определенном уровне.


Anatoly Podgoretsky   (2007-09-28 16:12:00) [11]

> DVM  (28.09.2007 16:07:41)  [41]

Естественно, но к PChar это не относится, это изобретение Борланда, указатель на символ, а функции предполагаю, что за этим символом есть еще и один из них признак окончания строки. Сама аббревиатура означает (расшифровка) - ASCII (ansi) Zero


evvcom   (2007-09-28 16:12:00) [12]


> Германн ©   (28.09.07 15:12) [34]
>
>
> > evvcom ©   (28.09.07 13:56) [24]
> >
> > Опять понеслось :)
> >
>
> Во-во. Розыча на них нет :-)

у него дела и поважнее есть. Наверное, уже Пашку пропивает :)


Anatoly Podgoretsky   (2007-09-28 16:10:00) [13]

> Инс  (28.09.2007 16:05:40)  [40]

Полная


DVM   (2007-09-28 16:07:00) [14]


> А функции работают не с PChar, а с ASCIIZ

О каких функциях ведете речь?
Я в том смысле, что функциям надо знать где строка оканчивается.


Инс   (2007-09-28 16:05:00) [15]


> Нет, не пофиг, это сделано специально для совместимости
> с типом PChar.

Правда важно понимать, что совместимость эта в общем то односторонняя.


Anatoly Podgoretsky   (2007-09-28 16:02:00) [16]

> DVM  (28.09.2007 15:57:37)  [37]

А функции работают не с PChar, а с ASCIIZ


Anatoly Podgoretsky   (2007-09-28 16:02:00) [17]

> {RASkov}  (28.09.2007 15:50:35)  [35]

Зря думал, вредно.


DVM   (2007-09-28 15:57:00) [18]

Да оно и PChar - у пофиг, не пофиг функциям работающим с такими строками.


Инс   (2007-09-28 15:53:00) [19]


> А я почему-то думал, что пофик какой там символ в конце
> строки....

Нет, не пофиг, это сделано специально для совместимости с типом PChar.


{RASkov}   (2007-09-28 15:50:00) [20]

> [31] Инс ©   (28.09.07 14:27)
> Переменная типа AnsiString

> Строка завершается нулевым символом.

А я почему-то думал, что пофик какой там символ в конце строки....


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо