Спасибо, нашёл.
unit Data;
interface
procedure p1(b:byte);
implementation
procedure p1;
begin
end;
end.
Это компилируется нормально. Это ошибка?
Нет
Почему?
В паскале можно (но нами не рекомендуется) сокращать реализацию подпрограммы.
begin
var p:^integer; //работает
//var p2:integer^; //ошибка
new(p);
var i1 := ^p; //работает
var i2 := p^; //работает
p^ := i1; //работает
//^p := i2; //ошибка
end.
Так и задумано? В чём вообще разница между p^ и ^p?
Я тоже заметил. Только один из этих вариантов неправильно форматируется.
^p – это указатель на p. p^ – аналог имени динамической переменной, расположенной по адресу, на который ссылается p. У Вас получается p – указатель на целое. p2 – непонятно что. По смыслу разыменовывать можно только указатель, но не имя типа.
Но оно почему-то у меня работало одинаково. А вообще, почему этого нет в справке? Про p^ - особенно интересно.
Тут вообще все несколько интереснее.
begin
var a := 3;
var b := @a;
var c := b^;
var d := ^b;
Writeln(a, ' ', b, ' ', c, ' ', d); // 3 $2AED04 3 3
Println(c.GetType, d.GetType); // System.Int32 System.Int32
end.
Если использовать автоформатирование, ему не понравится ^b и оно превратится в b !!!
Да, загадка…
Ну, integer^ я добавил только ради порядка (для всего остального в этом тесте есть 2 варианта в том же стиле). А основной вопрос - почему ^p и p^ работают одинаково на чтение, но по разному на запись (и, оказывается, ещё и на форматирование)?
Думается, не фича это, но бага ))
Надеюсь, исправят. Хотя… Не понятно, как такое вообще возможно.
А для чего, кстати, вы использовали для первого вывода Writeln с пробелами, хотя Println как и для второго вывода имеет больше смысла (всм он сам пробелы добавляет) ?))
Не забываем про это 
Вряд ли RAlex забыл. Print не умеет печатать адреса (почему-то). А Write умеет. Попробуйте.
А они в каком виде нужны? Можно так написать:
var adr := Int32(p).ToString();
И передать его в виде строки куда угодно.
Можно просто вывести с новой строки:
Console.WriteLine(adr);
Именно так.
Нет, ну это точно не правильно…
Институт математики, механики и компьютерных наук ЮФУ, 2005–2021