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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2017, 19:34   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Возврат TStringList из функции. Warnings

Хочу получить от функции ответ типа TStringList
Код:
function Test: TStringList;
begin
  Result.Add('second string');
end;

procedure TForm27.Button2Click(Sender: TObject);
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  SL.Text := Test.Text;
  ShowMessage(SL.Text);
  FreeAndNil(SL);
end;
Код работает, но напрягает предупреждение [dcc32 Warning] Unit27.pas(43): W1035 Return value of function 'Test' might be undefined

Как правильно организовать передачу TStringList из функции?
Стоит ли пользоваться данным способом?
Код:
function GetStringList: TStringList;
begin
  Result := TStringList.Create;
  Result.Add('an item') ;
end;
...
var
  SL : TStringList;
begin
  SL := GetStringList;
  try
    ShowMessage(SL[0]) ;
    // или, например,
    // ListBox1.Items.Assign(SL) ;
  finally
    FreeAndNil(SL);
  end;
end;
Shouldercannon вне форума Ответить с цитированием
Старый 24.12.2017, 19:52   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

как правило лучше ПЕРЕДАТЬ этот список как параметр для заполнения и использовать БАЗОВЫЙ тип(TStrings)
Код:
procedure test(x: TStrings);
begin
  x.Add('....');
end;

  ....
  Test( ListBox1.Items ); // ЭТО все что может остаться в основном коде
Код:
begin
  sl:=TStringList.Create;
  try
    Test(sl);
    ShowMessage(sl.strings[0]);
  finally
    sl.Free;
  end;
end;
если нужна именно строка с "построчным" заполнением, можно так
Код:
function Test: string;
var
   x: TStringList;
begin
  x:=TstringList.Create;
  result:='';
  try
  x.Add('....');
...
  result:=x.Text;
  finally
  x.Free;
  end;
end;

....
ListBox1.Items.Text:=Test;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.12.2017 в 20:10.
evg_m на форуме Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат TStringlist из функции mavurece Общие вопросы Delphi 8 26.04.2017 14:46
Возврат рекурсивной функции DarkHacker Общие вопросы Delphi 3 30.11.2014 20:27
возврат строки из функции Kaela Общие вопросы C/C++ 21 27.05.2012 20:00
Возврат массива из функции max_prorok Помощь студентам 2 06.10.2011 12:39
Мини бэйсик:объявление функции, вызов функции , возврат. AL_LORD Помощь студентам 2 14.10.2010 17:48