|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.02.2009, 10:08 | #1 |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Вопрос по PChar
Написал простую программу. Все работает кроме функции Convert1, почему она не работает?
Код:
Код:
String[10] равнослиен типу ShortString; Тип String в динамической памяти (почти как дин. массив), тип ShortString статический всегда равен 256 байт. Но что храниться по адресу @Str1 и @Str2 ? Вот еще код Код:
По идее Byte( @S1 ) должно быть равно 6, так как в строке 6 символов. |
10.02.2009, 10:39 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,547
|
Дело в том, что тип string сам является указателем на строку, т.е. если записать так:
Код:
Но, если при объявлении типа string мы явно указываем длину строки, то этот стринг работает как в TurboPascal - массив символов, в котором нулевой элемент содержит длину строки. Т.е. уже не указатель. Поэтому можно записать так: Код:
E-Mail: arigato.freelance@gmail.com
|
10.02.2009, 11:20 | #3 |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Спасибо, уже понятнее=)
Ещё один вопрос не могу найти в исходниках функцию Length, если на вести на неё и нажать ctrl+лкм то просто перекидывает в модуль System Поиском тоже найти не получается. Так и с некоторыми другими функциями. Как найти их код? И последнее =) Почему в первом примере Код:
Последний раз редактировалось Armorer; 10.02.2009 в 11:56. Причина: понял почему=) |
10.02.2009, 11:51 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Рекомендую так: Код:
I'm learning to live...
Последний раз редактировалось Stilet; 10.02.2009 в 11:55. |
|
10.02.2009, 12:08 | #5 | |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
То есть я никак не могу посмотреть как она и подобные функции реализованы?
Цитата:
Но всеже почему Convert2 работает, а Convert1 нет? Должны работать обе, по моему=) Код:
|
|
10.02.2009, 12:39 | #6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я никогда ТАК задачи не решал, как по мне это не лучшее решение. Цитата:
I'm learning to live...
|
||
11.02.2009, 18:51 | #7 |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Видимо никто не знает=)
Тогда еще вопрос по теме, почему возникает предупреждение компилятора Unsafe type 'PChar' ? возникает на строках вроде этой Код:
ProgramName - строковая константа. Как убрать это предупреждение и что оно означает? |
11.02.2009, 18:57 | #8 |
Участник клуба
Регистрация: 11.01.2009
Сообщений: 1,917
|
Не должно предупреждать ни о чем !
Можно текст "предупреждения" увидеть как можно полнее ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
|
11.02.2009, 19:43 | #9 |
Подтвердите свой е-майл
Регистрация: 07.04.2007
Сообщений: 120
|
Всё как я написал, выдает два Warning'a Unsafe type 'PChar'
Поискав в яндексе нашел, что это предупреждение означает, что под .NET данный код скомпилирован не будет. То есть если программу писать только под win, то на такой варнинг не надо обращать внимание. В Delphi6 такой же код ничего ничего не выдает, такое сообщение у меня появляется только в 7мом. Можно ли отключить только такие предупреждения? Я знаю только директиву {$WARNINIGS OFF} но она отключает все. |
11.02.2009, 21:10 | #10 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PChar | Роман Радер | Общие вопросы Delphi | 2 | 02.11.2008 18:50 |
String to PChar | D7_beginner | Общие вопросы Delphi | 2 | 21.11.2007 14:05 |
Access violation на строке вида StrLCopy(PChar(st1),PChar(st2),10); | malor | Общие вопросы Delphi | 1 | 11.07.2007 13:39 |
Добавление к pchar | EdNovice | Общие вопросы Delphi | 2 | 15.04.2007 17:00 |
Как из string получить PChar??? | sis | Компоненты Delphi | 4 | 11.02.2007 16:58 |