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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2010, 15:04   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию SetLength 16*16

Хочу создать 16*16 массив (256).
Пишу:
Код:
SetLength(A, $F, $F);
Или надо так?:
Код:
SetLength(A, $10, $10);
Я совсем запутался.

P.S. Что-то часто в последнее время SetLength мелькает.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.03.2010, 15:09   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

А так
Код:
SetLength(A, 16, 16);
чем не устроило?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.03.2010, 15:15   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ясно, т.е. $10.

Думал, что $F, тогда общий стиль программы не нарушался. Допишу, опубликую
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.03.2010, 15:22   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Эта путаница меня всегда раздражала - длина указывается в абсолютных величинах, а счетчик всегда на единицу меньше (поскольку нумерация идет от нуля).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.03.2010, 15:29   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
поскольку нумерация идет от нуля
Так проще тем кто на ассемблере пишет. Там же первый же элемент массива имеет координату 0, а уже следующий на размер типа элемента больше
Поэтому 0 - это фактическая координата, а не индекс массива. Это просто Вирт такой заботливый попался что понял что не удобно с нуля начинать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.03.2010, 15:37   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ясно, теперь и я окончательно разобрался. все время путал.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.03.2010, 15:48   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

А по-моему путаницы нет никакой. Это уже настолько привычно, что путаница как раз когда с единицы начинается. Бывает что нужно именно с единицы, например в библиотеке Фурье преобразований я встречал такое, так там на видном месте большими буквами об этом написали, чтобы бедные программисты потом отладчик не мучали
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 22.03.2010, 15:54   #8
VovanZ
Веб-разработчик
Форумчанин
 
Регистрация: 23.05.2009
Сообщений: 279
По умолчанию

А разве в делфи функция SetLength поддерживает двумерные массивы?
Я всегда думал, что надо делать вот так:
Код:
//...............................................
SetLength(a, 16);
for i:=1 to 16 do SetLength(a[i], 16);
//...............................................
VovanZ вне форума Ответить с цитированием
Старый 22.03.2010, 15:59   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

VovanZ, хоть пятимерные.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 22.03.2010, 15:59   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
А разве в делфи функция SetLength поддерживает двумерные массивы?
http://www.programmersforum.ru/showthread.php?t=89090
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setlength Smerch66 Общие вопросы Delphi 8 22.03.2010 19:32
Несколько параметров в SetLength Alex Cones Общие вопросы Delphi 9 21.03.2010 14:00
SetLength никогда не стирает старые элементы массива? TwiX Общие вопросы Delphi 6 20.03.2010 02:35
Вкаких случаях может быть полезной процедура SetLength Ainur Помощь студентам 2 22.05.2009 12:01
считает что ReOpArr это обычный массив и не может применить к нему процедуру SetLength. Dunpeal Общие вопросы Delphi 2 24.12.2007 08:07