![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Привет.
Ребят, есть проблема. В гугле был - не нашел четкого ответа на вопрос. Есть TStringList (text.Text) с каким-то содержимым. Хочу передать этот лист в функцию, там добавить, например, строку, а потом забрать это дело оттуда и вывести в мемо. Как сделать? Я делал так: Код:
function TForm1.test(list: TStringList): TStringList;
begin
list.Add('Some string');
end;
потом в обработчике нажатия кнопки Button1:
Memo1.Text:=test(text.Text);![]() |
|
#2
|
||||
|
||||
|
Код:
function TForm1.test(list: TStringList): TStringList;
begin
Result.Add('Some string');
end;
Memo1.Text:=test(text.Text); |
|
#3
|
||||
|
||||
|
Вот пример функции:
Код:
function AppendList (AList: TStringList): Integer;
begin
Result := AList.Add('Это новая строка!');
end;Используем так: Код:
...
Index := AppendList(MyStrings);
ShowMessage('Добавлена строка с индексом ' + IntToStr(Index));
ShowMessage('Текст строки: ' + MyStrings[Index]);
... |
|
#4
|
||||
|
||||
|
Цитата:
Gravitas, я так понимаю, вылезет Access Violation в данном коде... |
|
#5
|
||||
|
||||
|
Ну я полагал, что ТС сам догадается приписать ...:=TStringList.Create или так, как вы предложили.
Последний раз редактировалось Gravitas, 12.08.2011 в 19:57. |
|
#6
|
|||
|
|||
|
Цитата:
Нет, не работает. Ругается именно на эту строку: Код:
Memo1.Text:=test(text.Text); Листинг двух этих операций: Код:
function tform1.test(list: tstringlist):tstringlist;
begin
list.Add('111');
result.Text:=list.text;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo2.Text:=test(memo1.text);
end; |
|
#7
|
|||
|
|||
|
Вот рабочий вариант:
Код:
procedure AppendList (var AList: TStringList);
begin
AList.Add('Это новая строка!');
end;Код:
procedure TForm4.btn1Click(Sender: TObject); var myList: TStringList; begin myList:= TStringList.Create(); AppendList (myList); mmo1.Text:= myList.Text; myList.Free; end; |
|
#8
|
|||
|
|||
|
Цитата:
Во! Это да. Но нужная именно функция, а не процедура Что бы она получала текст, выполняла с ним манипуляции и возвращала его ![]() |
|
#9
|
|||
|
|||
|
Код:
function AppendList (var AList: TStringList): TStringList;
begin
AList.Add('Это новая строка!');
Result:= AList;
end;Код:
procedure TForm4.btn1Click(Sender: TObject); var myList: TStringList; begin myList:= TStringList.Create(); // AppendList (myList); mmo1.Text:= AppendList (myList).Text; myList.Free; end; |
|
#10
|
|||
|
|||
|
Цитата:
Код:
function tform1.test(var list: tstringlist): tstringlist;
begin
list.Add('111');
result:=list;
end;Код:
procedure TForm1.Button1Click(Sender: TObject); begin memo2.Text:=test (memo1).Text; end; Код:
memo2.Text:=test (memo1).Text; |
|
#11
|
|||
|
|||
|
У вас переменная list имеет тип TStringList, а вы пытаетесь в функцию запихнуть компонент memo1. Разве так можно?
|
|
#12
|
||||
|
||||
|
Вопросы становятся все более интересными...
Если я тебя правильно понял ![]() Код:
function test(AList: TStrings): String;
begin
AList.Add('1111');
Result := AList.Text;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Text := test(memo1.Lines);
end;ЗЫ смысл такой процедуры не подскажешь? |
|
#13
|
|||
|
|||
|
Цитата:
Вот здесь например: Код:
... var list: tstringlist; ... begin ... memo1.text:=list.text; Тип возвращаемого значения функции у меня тоже TStringlist. Передаю в нее я тоже TStringlist. Вроде все должно работать ![]() |
|
#14
|
|||
|
|||
|
Цитата:
Я такого кода не давал ![]() |
|
#15
|
||||
|
||||
|
Не совсем то, что ты думаешь:
Memo.Lines типа TStrings, а Memo.Text: String. И объясни смысл процедуры. Код:
function test(list: tstrings): tstrings;
begin
result:=tstrings.create;
result.Assign(list);
result.Add('111');
end; |