![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что такое ^P?
AlexKniga © (2006-08-14 12:23:00)var P: Pointer;
P^ то куда указывает P.
А что такое ^P ?
Anatoly Podgoretsky (2006-08-14 16:34:00) [1]Тип типизированый указатель, используется только для указания типа в объявление типа.
Это документировано начиная с 1971 года.
AlexKniga (2006-08-14 16:10:00) [2]Вот к чему приводят однобуквенные имена:
var
P: ^Integer;
B: Integer;
begin
GetMem(P, 4);
P^ := 123;
B := Integer(^P); // B = 16
{... с помощью конструкции вида ^C, где C - код соответствущего управ-
ляющего символа, при этом значение C должно быть на 64 больше
кода управляющего символа.}
B := Integer(P^); // B = 123
FreeMem(P);
end;
Zeqfreed (2006-08-14 15:30:00) [3]> [47] MBo © (14.08.06 14:38)
Спасибо :) А то я всю документацию к Delphi перерыл, так и не нашёл.
MBo (2006-08-14 14:38:00) [4]>Кто знает где данная фича описана в документации (или других, возможно не официальных, источнииках),
Это поддерживаемое для совместимости наследие старинного Паскаля (уже в руководстве по языку TP7 такой способ задания символьных констант не упоминался)
http://www.codenet.ru/progr/other/lpas1.php
Zeqfreed (2006-08-14 14:10:00) [5]Вот вполне компилирующийся код :)
var
s : String;
begin
s := ^P;
P.S. Кто знает где данная фича описана в документации (или других, возможно не официальных, источнииках), пожалуйста, поделитесь информацией. А то никак не могу найти.
Сергей М. (2006-08-14 13:57:00) [6]
> Было примерно так
Скорее всего было так
FillChar(Pointer(pMemMap ^), 1024, #0);
А поскольку Pointer здесь лишний, то можно еще короче
FillChar(pMemMap ^, 1024, #0);
AlexKniga (2006-08-14 13:51:00) [7]Elen
Компилировалась в выполнении кода.
Счас
var pMemMap: Pointer;
...
FillChar(pMemMap^, 1024, #0);
Было примерно так:
var pMemMap: Типа специализированный указатель;
...
FillChar(Pointer(^pMemMap), 1024, #0);
Elen (2006-08-14 13:16:00) [8]Ну закрыта так закрыта
Elen (2006-08-14 13:15:00) [9]
> Ситуация когда ^P компилировалась
Компилировалась в выполнении кода или при обьявлениях переменных или типов? код приведи сегодняшний
AlexKniga (2006-08-14 13:15:00) [10]Тема закрыта.
AlexKniga (2006-08-14 13:14:00) [11]Попробовал несколько вариантов, НЕ получается скомпилировать это ^P. Ситуация когда ^P компилировалась, была в пятницу. После выходных уже не вспомнить. ^P компилировалось скорее всего из-за явного преобразования типов. Повторяю: счас мне не удалось это повторить.
AlexKniga (2006-08-14 13:00:00) [12]Elen, Lamer@fools.ua
Код уже затер. Возпроизвести момент когда это ^P компилировалось не смог (много воды утекло). Но Watch list этот ^P съедает.
MBo (2006-08-14 13:00:00) [13]>А что такое ^P ?
>Недопустимая конструкция
Ну почему же недопустимая ;)
^P - Это один из способов ввода символа #16 (DLE) (подобно ^C = Ctrl-C = #3 = ETX)
Lamer@fools.ua (2006-08-14 12:51:00) [14]> А что такое ^P ?
Недопустимая конструкция. "Крышка" (^) указывается либо перед типом (указатель на тип), либо после переменной (разыменование).
Сергей М. (2006-08-14 12:29:00) [15]
> что такое ^P ?
Указатель на указатель.
Ega23 (2006-08-14 12:28:00) [16]P^ - значение, которое лежит по тому адресу, на который указывает P.
Elen (2006-08-14 12:28:00) [17]You can declare a pointer to any type, using the syntax
type pointerTypeName = ^type
Кажись такая запись используется только в обьявлениях переменных
А что за код?
AlexKniga (2006-08-14 12:24:00) [18]Компилятор съедает это ^P, но прога дает AV.