Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 24.12.2017, 20:34   #1
Shouldercannon
Профессионал
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Адрес: Пенза
Сообщений: 1,757
Репутация: 226

icq: 473732523
Вопрос Возврат 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, 20:52   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,656
Репутация: 2097
По умолчанию

как правило лучше ПЕРЕДАТЬ этот список как параметр для заполнения и использовать БАЗОВЫЙ тип(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 в 21:10.
evg_m вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат TStringlist из функции mavurece Общие вопросы Delphi 8 26.04.2017 15:46
Возврат рекурсивной функции DarkHacker Общие вопросы Delphi 3 30.11.2014 21: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


16:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru