![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача массива в процедуру
Cobalt © (2011-03-10 15:31:00)Есть процедура:
procedure ExportToExcel(Log: TStringList; ColsCount: Integer; HideColumns: array of Integer);
вызывал
ExportToExcel(Logs, 5, [2]);
и
ExportToExcel(Logs, 5, []);
в обоих результатах имею:
low(HideColumns) = 0
High(HideColumns) =1307616
все элементы = 0
И так
Arr: array[0..0] of Integer;
я тоже пробовал - та же фигня :-(
Дельфи 2007
Anatoly Podgoretsky (2011-03-12 11:13:00) [1]> Германн (12.03.2011 02:46:15) [15]
Я бы тоже не советовал
Германн (2011-03-12 02:46:00) [2]
> Гаврила © (11.03.11 19:34) [11]
>
>
> > Он путает Гегеля с Бабелем
>
>
> Главное - не перепутать их с Багелем
Пусть только попробует!
:)
KilkennyCat (2011-03-12 02:36:00) [3]
> Servy © (11.03.11 23:43) [12]
отлично разжевано. присоединяюсь.
KilkennyCat (2011-03-12 02:33:00) [4]
> clickmaker © (10.03.11 17:23) [5]
или так:
procedure ExportToExcel(Log: TStringList; ColsCount: Integer; HideColumns: Tarray<Integer>);
только это наверное лишь с 2010 версии
Servy (2011-03-11 23:43:00) [5]> [0]
Приведенный вами код работает вполне успешно - ровно как ожидалось. Ошибка где-то в другом месте. Если проблема все ее не решена, собирайте тестовый проект с минимумом содержимого и выкладывайте куда-нибудь, чтобы все могли лицезреть такое необычное поведение.
Пару раз у меня случалось, что врал отладчик, показывая неверные значения, хотя программа выполнялась верно. Попробуйте вывести High(HideColumns) в лог, на экран или куда-нибудь еще.
> Rhino © (10.03.11 21:08) [7]
Количество бреда в вашем сообщении зашкаливает.
> НЕ используйте множества []
Нет там никаких множеств.
> просто создайте пользовательскй тип массива
Зачем, если автор хочет открытый массив?
> и передавайте по ссылке (var)
Зачем, если он не собирается изменять внешнюю переменную внутри процедуры? То, что он не собирается ее изменять - вполне очевидно, так как в текущей реализации он использует открытый массив.
> и не используйте по возможности, динамические массивы, если
> придется код выносить в dll будут болше проблемы
Не будет никаких проблем. Проблемы будут, если эту dll захочется использовать не из программы, написанной на Делфи. Однако, в таком случае проблема будет и с отсутствием класса TStringList, так что неиспользование динамического массива не спасет.
Гаврила (2011-03-11 19:34:00) [6]
> Он путает Гегеля с Бабелем
Главное - не перепутать их с Багелем
Anatoly Podgoretsky (2011-03-11 13:43:00) [7]> RWolf (11.03.2011 13:02:09) [9]
Он путает Гегеля с Бабелем, квадратные скобки с открытым массивом.
RWolf (2011-03-11 13:02:00) [8]
> Rhino © (10.03.11 21:08) [7]
> Разрешите советНЕ используйте множества [] просто создайте
> пользовательскй тип массиваи передавайте по ссылке (var)и
> не используйте по возможности, динамические массивы, если
> придется код выносить в dll будут болше проблемы
какие?
и при чём тут множества?
Г. Остер (2011-03-10 22:06:00) [9]
> Rhino © (10.03.11 21:08) [7]
+1
Rhino (2011-03-10 21:08:00) [10]Разрешите совет
НЕ используйте множества []
просто создайте пользовательскй тип массива
и передавайте по ссылке (var)
и не используйте по возможности, динамические массивы, если придется код выносить в dll будут болше проблемы
Amoeba_ (2011-03-10 17:49:00) [11]
> procedure ExportToExcel(Log: TStringList; ColsCount: Integer;
> HideColumns: array of Integer);
Путаешь динамические массивы с открытыми, а это ведь две большие разницы. RTFM.
clickmaker (2011-03-10 17:23:00) [12]а
type TColumnArray = array of Integer;
не пробовал?
Сергей М. (2011-03-10 17:17:00) [13]А Length(HideColumns) при этом что кажет ?
stas (2011-03-10 17:13:00) [14]и D2010 тоже.
stas (2011-03-10 17:09:00) [15]А у меня работает правильно в D7
Cobalt (2011-03-10 15:37:00) [16]и
const HideColumns: array of Integer
тоже пробовал. Перебилдивал, удалял всё :(