Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2021, 10:11   #1
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию Как преобразовать array в points?

Пытаюсь на delphi сделать пример который ранее был реализован на "С". Связано это с directx и вершинами куба. Добавляю массив в CopyMemory, выдает ошибку
Цитата:
[Error] primer.pas(166): Incompatible types: 'Array' and 'Pointer'
Из-за ошибки понятно, что не может сделать преобразование array в points, как исправить, вот часть кода?
Код:

function TForm1.InitGeometry: HResult;  
const   
  inds:array[0..35] of SHORT =
	( 0, 1, 2,
		2, 1, 3,
		2, 3, 4,
		4, 3, 5,
		4, 5, 6,
		6, 5, 7,
		6, 7, 0,
		0, 7, 1,
		1, 7, 3,
		3, 7, 5,
		0, 2, 6,
		2, 4, 6);
var
  pVertices: Pointer;
begin
....
MyIndexBuffer.Lock( 0, 36 * sizeof(short), pVertices, 0 );
CopyMemory( pVertices, inds, 36 * sizeof(short));
MyIndexBuffer.Unlock();
Result:= S_OK;
end;
Катя93 вне форума Ответить с цитированием
Старый 11.01.2021, 11:35   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Код:
Move(@inds[0], pVertices, 36 * sizeof(short));
Оператор @ возвращает указатель на объект, структуру и тд.
Для совместимости с динамическими элементами и FPC лучше всего указать нулевой элемент. Как сделано у меня.
И еще проверьте в вашем коде направления копирования.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 12.01.2021, 11:50   #3
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию

Спасибо, за помощь. Вот так помогло:
Цитата:
CopyMemory(pBuf, @inds, 36*SizeOf(inds));
@ - этот знак надо было указать перед inds
Катя93 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не получается преобразовать тип к array[1..6] of string к array[1..6] of string? юля123321 Помощь студентам 12 01.12.2016 15:21
преобразовать array of char в integer O.Lina Паскаль, Turbo Pascal, PascalABC.NET 2 23.10.2016 10:21
Для чего существует коммутативность array[2] == 2[array] _PROGRAMM_ Помощь студентам 10 02.11.2014 13:33
Подскажите! Как преобразовать определенный тип в array of byte BrainIce Общие вопросы Delphi 3 19.05.2009 17:22
Преобразовать из string в array of char vitalik007 Общие вопросы Delphi 6 07.09.2007 01:15