Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача массива в процедуру


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
тоже пробовал. Перебилдивал, удалял всё :(


Наверх

Титульная страница Поиск, карта сайта Написать письмо