|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.03.2010, 21:42 | #1 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Несколько параметров в SetLength
Вот код, который я нашел в System:
Код:
Код:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
20.03.2010, 22:45 | #2 | |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Несколько параметров - это для многомерных массивов.
Цитата:
|
|
21.03.2010, 11:32 | #3 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Ну это и ежу понятно. мне интересно другое. Выше я предоставил код функи. КУДА отправляется второй параметр? Там же для него места нет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
21.03.2010, 12:55 | #4 | |
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
|
А вас не смущает то, что приведённые вами функции имеют разные названия?
Цитата:
|
|
21.03.2010, 13:13 | #5 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Кроме этой _set... другой set... я в system не нашел.
Все равно. как может процедура принимать больше параметров, чем в ней указано? Если бы были несколько одинаковых функций (overload), то 1) Они бы высвечивались при наборе параметров. 2) Их бы пришлось писать около десятка тысяч - ведь я могу нарисовать и десятимерный массив и стомерный.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
21.03.2010, 13:19 | #6 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Приведенный вами код не компилируется, если параметров больше чем положено. SetLength встроена в компилятор, вы не найдете её объявления, и delphi перед компиляцией смотрит, соответствует ли кол-во параметров размерности массива.
Изобретатель велосипедов
Последний раз редактировалось Selestis; 21.03.2010 в 13:27. |
21.03.2010, 13:28 | #7 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Т.е. это не просто процедура, а самогенерирующаяся? И создать что-то подобное не получится?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
21.03.2010, 13:44 | #8 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Вроде того, насколько я знаю. А вы хотите создать свою SetLength?
Изобретатель велосипедов
|
21.03.2010, 13:52 | #9 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
Я хотел рассмотреть возможность использовать разное количество параметров для одной процедуры. Мало ли, где это может пригодиться.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
21.03.2010, 14:00 | #10 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Оно там есть. Посмотри процедуру _DynArraySetLength. SetLength является "заголовком" для неё. Размерность массива устанавливает _DynArraySetLength в числе параметров у которого есть упакованный тип tdynarraytypeinfo отвечающий за тип, размер элемента в массиве и указатель на следующую структуру в случае многомерных массивов.
Но как указано в документации "Она никогда не должна быть необходимой для вызова этой функции непосредственно, а стандартные SetLength функция должна использоваться вместо." (перевод с англ.) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SetLength никогда не стирает старые элементы массива? | TwiX | Общие вопросы Delphi | 6 | 20.03.2010 02:35 |
Вкаких случаях может быть полезной процедура SetLength | Ainur | Помощь студентам | 2 | 22.05.2009 12:01 |
Строка параметров | Rus+ick | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.12.2008 05:46 |
Передача параметров | aesoem | Общие вопросы Delphi | 8 | 15.07.2008 21:51 |
считает что ReOpArr это обычный массив и не может применить к нему процедуру SetLength. | Dunpeal | Общие вопросы Delphi | 2 | 24.12.2007 08:07 |