Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.12.2008, 15:24
dmdx dmdx вне форума
Начинающий
 
Регистрация: 24.05.2008
Адрес: Москва
Сообщения: 133
Репутация: 15
По умолчанию Передача в процедуру параметров

Всем привет. Давайте подискупируем на следующую тему. Вот не пойму почему так происходит.
Например мы передаем строку для обработки в процедуру, и для обработки в нашей процедуре она сперва копируется в стек а потом производятся над ней действия. причем это не отображается на переменной которую передаем а только на его копии в процедуре. В этом случае будет передоваться информации ровно столько сколько занимает строка в памяти.
Код:
procedure GetS(Str: string);
...
Если же нам надо передать ссылку на строку которая находиться по какому либо адресу, то мы передаем указатель на эту строку. И данные обрабатываются непосредственно той строки которую мы создали. И занимает указатель всего 4 байта.
Код:
procedure GetS(PStr: ^string);
...
или
Код:
procedure GetS(PStr: Pointer);
var
 str: ^string;
begin
str := PStr;
...

Тогда как себя ведет вот такая передача?
Код:
procedure GetS(var Str: string);
...
передает ли она адрес или нет?

Но если передавать объект в процедуру вот так
Код:
procedure GetBtn(btn: TButton);
...
адрес этого объекта который уже существует. И не делается никаких копий. Интересно почему так? Если передавать переменную типа Класс то передается адрес памяти а если переменную или переменную структы, то создается копия в памяти на время выполнения процедуры.

Если у кого есть ссылки на статьи или свои домыслы очень интересное выслушать.

Спасибо за уделенное время.
__________________
Програмист приходит на стрельбище. Стреляет. Прапор смотрит на мешень и говорит
Прапор: вы не попали ни один раз.
Программист: Пули вылетели, проблемы у вас.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:15.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025