![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с вводом-выводом данных через параметры процедуры
Pcrepair © (2012-06-25 22:40:00)Добрый день
В МЕМО1 вводятся строки, после обработки выводятся в МЕМО2(для наглядности работы тестовой процедуры)
Версия1, работает:
procedure TForm1.Button1Click(Sender: TObject);
var DataIn,DataOut: TStringList;
begin
DataIn := TStringList.Create;
DataOut := TStringList.Create;
DataIn.AddStrings(Memo1.Lines);
CopyStrings(DataIn, DataOut);
Memo2.Text := DataOut.Text;
DataIn.Free;
DataOut.Free;
end;
procedure TForm1.CopyStrings(var T1,T2:TStringList);
var i:integer; T:TStringList;
begin
T := TStringList.Create;
T.Delimiter := ' ';
T.BeginUpdate;
try
For i := 0 to Min(T1.Count, 3)-1 do
T.Add(T1.Strings[i]);
T2.Add(T.DelimitedText);
finally
T.EndUpdate;
end;
T.Free;
end;
Версия 2. Не работает. Не возвращает в Data: string результат работы процедуры
procedure TForm1.Button1Click(Sender: TObject);
var DataIn: TStringList; Data: string;
begin
DataIn := TStringList.Create;
DataIn.AddStrings(Memo1.Lines);
CopyStrings(DataIn, Data);
Memo2.Text := Data; (*вот тут ничего не выводит*)
DataIn.Free;
end;
procedure TForm1.CopyStrings(var T:TStringList; S:string);
var i:integer; T1:TStringList;
begin
T1 := TStringList.Create; (*буферная ПЕРЕМ*)
T1.Delimiter := ' '; (*уст. тип разделителя*)
For i := 0 to Min(T.Count, 3)-1 do
T1.Add(T.Strings[i]); (*ну тут все понятно*)
S := T1.DelimitedText; (*объединяем три строки в одну*)
(* Memo2.Text := S; вот тут результат можно вывести, если в обработчике закомментировать
Memo2.Text := Data;*)
T1.Free;
end;
Вопрос: почему в Версии2 не возвращается результат. вся разница в В1 и В2 только в типе переменных на выходе
Pcrepair (2012-06-25 23:05:00) [1]вот оно чего
каждая переменная в параметрах определяется отдельно
Sha (2012-06-25 23:00:00) [2]мамочки
перед s поставь var
добрыми намерениями