OberonCore https://forum.oberoncore.ru/ |
|
SDL (Simple DirectMedia Layer) https://forum.oberoncore.ru/viewtopic.php?f=47&t=2019 |
Страница 3 из 3 |
Автор: | Пётр Кушнир [ Суббота, 01 Март, 2014 10:38 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Код: VAR pointer: PPoint;
BEGIN pointer:=SYSTEM.VAL(PPoint, SYSTEM.ADR(points^)); |
Автор: | Иван Кузьмицкий [ Суббота, 01 Март, 2014 12:11 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Спасибо, заработало! |
Автор: | Илья Ермаков [ Суббота, 01 Март, 2014 14:23 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Попробуйте так: Sdl2Win.RenderDrawLines(renderer(Renderer).r, SYSTEM.VAL(Sdl2Win.PPoint, S.ADR(points[0])), count) |
Автор: | Илья Ермаков [ Суббота, 01 Март, 2014 14:28 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Оп, не заметил, что Пётр уже ответил )) Но я обычно беру в таких случаях адрес от нулевого элемента... Как-то надёжнее ))) Насчёт варианта Петра: - тут интересный языковый вопрос. POINTER TO ARRAY OF CHAR - это динамический массив неизвестного размера. Какой тип является результатом ^ для указателя на динамический массив? Открытый массив? Технически же - у дин. массива в начале лежит заголовок с размерами по всем измерениям. Т.е. S.VAL(untagged_p_array, pArray) - даст указатель отнюдь не на данные... А S.VAL(utagged_p_array, S.ADR(pArray^)), значит, т.к. Вы опробовали, даёт эффект, эквивалентный S.VAL(utagged_p_array, S.ADR(pArray[0])) |
Автор: | Пётр Кушнир [ Суббота, 01 Март, 2014 14:54 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Я тут недавно ковырял, вроде, по косвенным данным стало понятно, что разыменованый указатель дает массив анонимного типа (ARRAY 41 OF CHAR например), то есть фактический массив получается статическим и вполне определенной длины. Затем я сравнил размер типов, через SIZE: ARRAY 41 OF RECORD END и ARRAY 41 OF RECORD [untagged] END - размеры совпали. Размер untagged и обычного рекорда совпал. Ну я и подумал, что надо просто создать указатель на этот разыменованный массив. А указатель уже известно как создать - записать в указательный тип адрес рекорда. |
Автор: | Илья Ермаков [ Суббота, 01 Март, 2014 16:55 ] |
Заголовок сообщения: | Re: SDL (Simple DirectMedia Layer) |
Я имею в виду статическую типизацию, с точки зрения компилятора! Т.е., если разыменовываете POINTER TO ARRAY OF CHAR, то получиться тип ARRAY 41 OF CHAR никак не может! Может получиться тип ARRAY OF CHAR - открытый массив... И SIZE, по идее, не должен быть применим. Вот если POINTER TO ARRAY 41 OF CHAR, то да, тогда будет анонимный тип массив фиксированного размера. |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |