![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я не понял, как именно надо использовать пакет System.Storage_Elements
Итак, задача такая, у меня есть тип
У него есть метод:
Последняя функция не компилируется. Что надо сделать, чтобы она скомпилировалась? Кстати, здесь мне очень важна скорость, с точностью до лишних тактов и копирований чисел туда-сюда. -------------------- |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, тогда работай с непрерывным массивом данных (или как он называется, я о flat array). Больше ничего тебе предложить не могу. Пойми: Ада создавалась для безопасного решения задач, а ты всеми путями пытаешься сделать работу как можно более опасной. В идеале я бы запрещал даже использование того блока памяти, который был выделен CreateDIBSection, любыми НЕ WinAPI-шными функциями, негоже руками туда лазить. Мало ли. Вот работает оно, работает, "потом бац, вторая смена" (С), в смысле, MS взяла и изменила формат. Безопасно? Ни в коем случае. Зато быстро. Нужна скорость в ущерб безопасности - тебе в сторону С. Из Ады наоборот убирают адресную арифметику (в Ada 83 она была, в 95 тоже, хотя и в более урезанном виде, в 2005 ее почти нет), ибо это непереносимо, и в общем случае будет работать только у тебя на машине, на другом процессоре или на другой версии ОС работоспособность не гарантируется, могут быть другие размеры, другие выравнивания, и т.д. Ты пробовал свои программы запускать на 64-битных ОСях? На WinXP x64 Edition, например? Я уж не спрашиваю про Win7...
Если интересно, как организовать flat array - то вот так: Max_X : constant Integer := 1024; -- какие-то значения, заведомо бОльшие |
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 13:51 |