Объявление переменных не будет иметь никакого значения, я верю.
Когда вы вызываете такие функции, компилятору необходимо генерировать неявные строковые переменные, чтобы сохранить результат ваших функций.То, как вы это делаете, главным преимуществом будет то, что компилятор может решить повторно использовать временную переменную, как только он это сделает, но ничто не мешает компилятору делать то же самое с явными переменными.
На самом деле, каждыйКогда вы вызываете функцию со строковым результатом, компилятору нужно создавать временные переменные, потому что функция, возвращающая строку, фактически реализуется как процедура с дополнительным параметром var.
Например:
function GetTempPath : string;
действительно реализован таким образом
procedure GetTempPath(var S : string);
так, учитывая следующую процедуру:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text := GetTempPath;
end;
Сначала компиляторвыделить временную строковую переменную.Вызывает GetTempPath с указанной временной переменной в параметре.Как только он возвращается, он берет эту переменную и устанавливает ее в Memo1.Lines.Text.По сути, то, что он действительно делает, это:
procedure TForm1.Button1Click(Sender: TObject);
var S : string;
begin
GetTempPath(S);
Memo1.Lines.Text := S;
end;
, и если вы фактически объявляете функцию, как показано ниже, компилятор достаточно умен, чтобы не создавать дополнительную переменную.
procedure TForm1.Button1Click(Sender: TObject);
var S : string;
begin
S := GetTempPath;
Memo1.Lines.Text := S;
end;