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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2012, 02:45   #1
yasic
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 44
По умолчанию closure delphi

Всем привет! Есть вопрос по closure в Delphi.

Код:
TFunc = reference to function: TList<Integer>
далее

Код:
A: TFunc;
далее

Код:
function F (I: Integer): TFunc;
далее

Код:
procedure *MouseDown(.....);
begin
 A := F(...);
 ....
end;
далее

Код:
function F (I: Integer): TFunc;
begin
 Result := function(): TList<Integer>
    begin
       if I > 10 then
         Result.Add(I)
       else begin
         Result.Clear;
         Result.Add(I);
       end;
   end;
end;
при выполнение функции AV. если добавить в начало функции
Result := TList<Integer>.Create(); то все работает. НО... в TList<Integer> находится только один элемент, даже если условие True. и создается почему то еще один TList<Integer>. подскажите, где ошибка может быть.
yasic вне форума Ответить с цитированием
Старый 27.12.2012, 03:28   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Delphi не пользуюсь, и код проверить не могу, но попробуйте:
Код:
function F (I: Integer): TFunc;
var
  List: TList<Integer>;
begin
  List := TList<Integer>.Create();
  Result := function(): TList<Integer>
    begin
      if I > 10 then
        List.Add(I)
      else begin
        List.Clear;
        List.Add(I);
      end;
      Result := List;
    end;
end;
netrino вне форума Ответить с цитированием
Старый 27.12.2012, 13:07   #3
yasic
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 44
По умолчанию

не-а. все равно один элемент в TList. и AV тоже
yasic вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание модуля Delphi для поворота растровых изображений.delphi Romka62 Помощь студентам 1 18.11.2012 15:22
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54