Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #6  
Старый 10.10.2011, 13:56
Lucky192 Lucky192 вне форума
Прохожий
 
Регистрация: 04.10.2011
Сообщения: 28
Репутация: 1351
По умолчанию

Просто поставьте ключевое слово const перед параметром и ваша функция заработает с массивом любого размера:
Код:
function _Find_Min(const _data: array of integer): integer;
var
  _i, _value : integer;
begin
  _value := _data[0];

  for _i := 1 to Length(_data)-1 do
    _value := min(_value, _data[_i]);

  _Find_Min := _value;
end;
Если переменная передается без указания const или var, будет сделана ее копия (при изменении значения параметра в теле функции оригинальная переменная не изменится). В данном случае происходит создание локальной копии массива в стеке. Так как размер стека ограничен - получаете Stack overflow на больших массивах.
P.S. При работе с указателями можно легко понаделать ошибок, которые потом будет сложно найти. Так что лучше без надобности их не использовать.

Последний раз редактировалось Lucky192, 10.10.2011 в 14:08.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025