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

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

Pchar(s)^


Страницы:   1 2

Vitec ©   (2008-04-15 19:18:00) 

подскажите пожалуйста, что означает запись: PChar(S)^
s- типа string PChar(S) - преобразуем строку в тип Pchar, а вот что означает значек ^ в конце?


Vitec   (2008-04-15 21:01:00) [21]

Тогда еще вопрос, что такое плавающий AV? и почему s[1] может не прокатить?
P.s. про указатели уже почти дочитал :)


tesseract   (2008-04-15 20:42:00) [22]


>  мы хитро на уровне compiler magic приводим string к pchar
> и спокойно разименовываем


Такие привычки надо ликвидировать, но тут сработает без проблем. "Плавающий AV " - плата за умность компилятора.


Johnmen   (2008-04-15 20:35:00) [23]


> Семеныч   (15.04.08 19:25) [2]
> По умолчанию S - это длинная строка. То есть, указатель
> на адрес ее тела (причем тело это заканчивается символом
> #0).

Не надо фантазий :)


Palladin   (2008-04-15 20:34:00) [24]


> tesseract ©   (15.04.08 20:33) [9]

я так и предполагал const или var, очень даже должно, вместо нарыва на AV при s[1], мы хитро на уровне compiler magic приводим string к pchar и спокойно разименовываем


tesseract   (2008-04-15 20:33:00) [25]


> это очень хитрый код... у меня доступа нет по http куда
> нибудь кроме delphimaster'a, но могу предположить, что объявление
> выглядит так


function MD5Buffer(const Buffer; Size: Integer): TMD5Digest;

т.е разименование тут роли сыграть не должно :-).


tesseract   (2008-04-15 20:30:00) [26]


> код как-раз прекрасно работает:


Это поймёт тебя компилятор или нет. Delphi иногда такое прощает.


Palladin   (2008-04-15 20:29:00) [27]


> Anatoly Podgoretsky ©   (15.04.08 20:21) [5]

это очень хитрый код... у меня доступа нет по http куда нибудь кроме delphimaster'a, но могу предположить, что объявление выглядит так
MD5Buffer(Var p; ...);


Vitec   (2008-04-15 20:27:00) [28]

код как-раз прекрасно работает:
http://www.delphiworld.narod.ru/base/md5.html
в нем и разбираюсь.


Anatoly Podgoretsky   (2008-04-15 20:21:00) [29]

> Vitec  (15.04.2008 20:09:04)  [4]

Это какой то бессмысленный код, вот если убрать каре, то будет рабочим.


Vitec   (2008-04-15 20:09:00) [30]

Palladin,
угу, надо почитать, с указателями не подружился еще, без них обходился
Семеныч,
спасибо за разъяснения
Anatoly Podgoretsky
Пытаюсь разобраться в md5
function MD5String(const S: string): TMD5Digest;
begin
 Result := MD5Buffer(PChar(S)^, Length(S));
end;

нужно для функции MD5Buffer, которая используется для обработки данных разных типов


Anatoly Podgoretsky   (2008-04-15 19:53:00) [31]

> Vitec  (15.04.2008 19:18:00)  [0]

А зачем такие глупости делать, для работы со строками нет нужды приводить к PChar и далее делать разименование.


Семеныч   (2008-04-15 19:25:00) [32]

По умолчанию S - это длинная строка. То есть, указатель на адрес ее тела (причем тело это заканчивается символом #0).

Тип PChar - это указатель на символ.

Значит, PChar(S) - это адрес первого символа строки S.

А PChar(S)^ - это сам первый символ строки (или символ #0, если строка пустая).


Palladin   (2008-04-15 19:22:00) [33]

разименование указателя, бежим изучать основы паскаля...


Страницы:   1 2

Наверх

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