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