![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Kursist |
|
|||
Unregistered |
Имеется статический 2-мерный массив, [1000х800] надо в него скопировать содержимое нескольких 2х-мерных динамических массивов с с неопределенной но более малой размерностью (например: [100х200], копироваться должно в область статического массива, начиная с произвольного элемента (напр.: [50,100]) - не с первого, Знаю для одномерных, надо использовать циклы и операторы High(VirtArray), low(VirtArray), или Copy(array,n), а как с 2х-мерными динамическими массивами - не знаю! Подскажите, кто знает. Спасибо!
|
|||
|
||||
Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Забей ты на все эти операторы, и делай так как будто у тебя статический массив, но не забывай что он начинается от нуля.
Для примера можеш посмотреть тут:
Только размерность я взял поменьше, чтобы тбе понятнее было, да и копирование происходит из одного массива а не из двух, но ты можеш сделать как захочеш... ![]() Это сообщение отредактировал(а) Zero - 8.11.2004, 19:23 |
|||
|
||||
Kursist |
|
|||
Unregistered |
Супер!!! Спасибо огромное!
|
|||
|
||||
Kursist |
|
|||
Unregistered |
Идея реализации будет следующая: создается 2-x мерный статический массив (размером Client.Width * Client.Hight) целых чисел. Далее, будут создаваться 2-x мерные динамические массивы (размером ObjectBitmap.Width * ObjectBitmap.Hight) булевых переменных. В него заносятся значения FALSE, если пиксел на битмапе непрозрачный и TRUE - если прозрачный. Далее идет вывод изображения ObjectBitmap с учетом прозрачности на TempBitmap в позицию X,Y; а в статический массив заносятся ID "Объекта" (представленного ObjectBitmap). Далее TempBitmap выводится на Canvas формы. В процедуре обработки OnMouseClick берутся координаты 'клика' X,Y и проверяется значения элемента статического массива [X,Y] - В нем ID - следовательно такой объект выделен, значит нужный ObjectBitmap необходимо заменить.
|
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
-------------------- С уважением, г-н Посол. |
|||
|
||||
Kursist |
|
|||
Unregistered |
p0s0l
Нет, не писал, но за линк спасибо! |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Опс!
![]() ![]() Я посмотрел - какие-то битмапы, маусклики - думаю, причём здесь это ? ![]() Извини ![]() У тебя с этим трудности ?:
-------------------- С уважением, г-н Посол. |
|||
|
||||
Kursist |
|
||||||
Unregistered |
Нет, спасибо, уже все нормально. Просто меня в какой-то момент заклинило ![]() Создаю простенький 2D квест (рисую много графики) - пишу свой '2D Engine' без использования OpenGL или DelphiX. Скорость вывода меня вполне устроила (использую GetTicCount() и InvalidateRect(). Хоть мне и нравится OpenGL, но его я еще недостаточно изучил (да и примеры из книги Красного по OpenGL касающиеся прозрачности материалов у меня почему-то работают без прозрачности), а создать квест не терпиться ![]() |
||||||
|
|||||||
Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Вопрос в тему.. ЕСть 2 переменные ... a,b: array of integer; после выполнение SetLength(a,100), а SetLength(b,100) и a[1]:=3; b[1]:=1000; то в a[1] будет значение 1000, это прикол такой или как ???? И можно ли этого как нить избежать ??? -------------------- Praemonitus, praemunitus |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Скорее всего, где-то после SetLength'ов у тебя строка типа:
a := b; или b := a;... -------------------- С уважением, г-н Посол. |
|||
|
||||
Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
В том то и дело ,то нет ... Строки подряд идут ... a[1]:=3; b[1]:=1000; ShowMessage (IntToStr(a[1])); Показывает 1000 -------------------- Praemonitus, praemunitus |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Ну не может такого быть...
Либо b объявлен как absolute a (или наоборот), либо идёт типа такого:
Либо где-то у тебя ошибка работы с памятью в программе, которая в последствии выливается в такое... Или ты что-то недоглядел... Вышли, plz, мне исходник. -------------------- С уважением, г-н Посол. |
|||
|
||||
Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Marriage, я не знаю чё ты там намудрил, но попробуй, запустить Delphi с нуля, потом в раздел Var, запехни
А потом на кнопку (например: Tbutton) воткни это
Если это у выведется не 3, то можеш викинуть свой комп, проблема в нём... ![]() Замечание:Мне бы тоже хотелось, глянуть на твой исходник... ![]() |
||||
|
|||||
Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
Комп выкидывать не собираюсь.
Проблема не внем, а скорее всего в настройках, т.к. на Билдере все нормально. Такое осчучение, что 1 массив накладывается на другой ... Может в настройках где-нить полазить??? Или купить лицензионную Дельфю ??? ![]() Исходник приведен выше .... Единственная может быть разница в том, что a,b:array of integer; это модуль одной проги, в которой модулей 20, и то почти все не мои ... А разбираться в чужих исходниках - это ж не есть гут .... Тем более БД ... -------------------- Praemonitus, praemunitus |
|||
|
||||
Zero |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Если ты написал так как я тебе выслал исходник, и у тебя всё равно не работает, то наверное у тебя "внатуре", Delphi глючит, я тогда могу посоветовать лишь, переустановить delphi...
Хотя может тебе Посол чё-нибудь, подскажет...
У меня она тоже не лицензионная, и работает... ![]() Это сообщение отредактировал(а) Zero - 19.11.2005, 12:37 Присоединённый файл ( Кол-во скачиваний: 19 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |