Показать сообщение отдельно
  #8  
Старый 08.08.2008, 17:05
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию

Интересная картина получается. Если использовать var в процедурах то передовать можно только переменные. Прямой текст (данные) передавать нельзя.

Код:
прокатит

procedure TForm1.Button1Click(Sender: TObject);
 procedure GetText(Text: string);
 begin
  Edit1.Text:=Text;
 end;
var
 r: string;
begin
 r:='Welcome';
 GetText(r);
end;

не прокатит

procedure TForm1.Button1Click(Sender: TObject);
 procedure GetText(Text: string);
 begin
  Edit1.Text:=Text;
 end;
begin
 GetText('welcome');
end;

и ещё один плюс процедура с использованием var в машинном коде занимает менюше места и соответственно выполняется быстрее.
файлик with_out_var без использования var в процедуре
Код:
procedure TForm1.Button1Click(Sender: TObject);
 procedure GetText(Text: string);
 begin
  Edit1.Text:=Text;
 end;
var
 r: string;
begin
 r:='Welcome';
 GetText(r);
end;

файлик with_var c использования var в процедуре
Код:
procedure TForm1.Button1Click(Sender: TObject);
 procedure GetText(var Text: string);
 begin
  Edit1.Text:=Text;
 end;
var
 r: string;
begin
 r:='Welcome';
 GetText(r);
end;

и наглядно видно что asm операторов меньше с использованием var. это наверное обуславливается тем что. при запуске процы без var переменная text создается, а проца с var истолькует в себе глобальную переменную!?
Изображения
Тип файла: jpg with_out_var.JPG (97.2 Кбайт, 3 просмотров)
Тип файла: jpg with_var.JPG (85.7 Кбайт, 3 просмотров)
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием