Текущий архив: 2007.10.21;
Скачать: CL | DM;
ВнизДлина строковой переменной Найти похожие ветки
← →
Инс © (2007-09-28 16:05) [40]
> Нет, не пофиг, это сделано специально для совместимости
> с типом PChar.
Правда важно понимать, что совместимость эта в общем то односторонняя.
← →
DVM © (2007-09-28 16:07) [41]
> А функции работают не с PChar, а с ASCIIZ
О каких функциях ведете речь?
Я в том смысле, что функциям надо знать где строка оканчивается.
← →
Anatoly Podgoretsky © (2007-09-28 16:10) [42]> Инс (28.09.2007 16:05:40) [40]
Полная
← →
evvcom © (2007-09-28 16:12) [43]
> Германн © (28.09.07 15:12) [34]
>
>
> > evvcom © (28.09.07 13:56) [24]
> >
> > Опять понеслось :)
> >
>
> Во-во. Розыча на них нет :-)
у него дела и поважнее есть. Наверное, уже Пашку пропивает :)
← →
Anatoly Podgoretsky © (2007-09-28 16:12) [44]> DVM (28.09.2007 16:07:41) [41]
Естественно, но к PChar это не относится, это изобретение Борланда, указатель на символ, а функции предполагаю, что за этим символом есть еще и один из них признак окончания строки. Сама аббревиатура означает (расшифровка) - ASCII (ansi) Zero
← →
Инс © (2007-09-28 16:17) [45]
> Полная
Не сказал бы. String физически соответствует PChar-у, но не наоборот. Но это не значит, что String можно всегда приводить к PChar и это будет безопасно. На уровне PChar компилятор забывает, что это особый финализируемый тип. Так что совместимость тут вообще постольку поскольку, только на определенном уровне.
← →
Инс © (2007-09-28 16:19) [46]
> Естественно, но к PChar это не относится, это изобретение
> Борланда, указатель на символ
PChar это не просто ^Char. Это тоже особый для компилятора тип.
← →
{RASkov} © (2007-09-28 16:32) [47]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:36) [48]
> Т.е. тип String это тот же самый PChar только со служебной частью в начале...
>
Ну если вспомнить про фаберже, то да. Но в "служебной части" то и все самое важное :-)
← →
Инс © (2007-09-28 16:36) [49]
> Т.е. тип String это тот же самый PChar только со служебной
> частью в начале...
Это финализируемый тип, со всеми вытекающими. Вот две хорошие статьи:
http://www.rsdn.ru/article/Delphi/dynarrays.xml
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1206
← →
Anatoly Podgoretsky © (2007-09-28 16:47) [50]> Инс (28.09.2007 16:19:46) [46]
Особый конечно, из-за требований по работе со строками.
Но для работы с WinApi он полностью совместимый.
← →
Инс © (2007-09-28 17:02) [51]
> Anatoly Podgoretsky © (28.09.07 16:47) [50]
Из-за того, что многие думают, что PChar и String полностью совместимы, очень часто возникают ошибки, особенно часто видишь советы передавать String-и между DLL и приложением под видом PChar, при этом не упоминая ряд ограничений.
← →
Германн © (2007-09-28 17:15) [52]
> особенно часто видишь советы передавать String-и между DLL
> и приложением под видом PChar
А за такие советы надо канделябром по морде.
← →
Anatoly Podgoretsky © (2007-09-28 19:14) [53]> Инс (28.09.2007 17:02:51) [51]
Это они уже виноваты, неправильно используют string, но это к PChar отношения не имеет.
Написать неправильно можно и для Integer - например MaxInt + 1 и отключение рантайм проверки
или for byte := 1 to 255 и удивляться некоторым эффектам.
← →
Anatoly Podgoretsky © (2007-09-28 19:14) [54]> Германн (28.09.2007 17:15:52) [52]
Не страшно, но не нужно и это не про канделябр.
Страницы: 1 2 вся ветка
Текущий архив: 2007.10.21;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.044 c