Hargen
|
Дата: Суббота, 25.05.2013, 20:46 | Сообщение # 1
|
Частый гость
Зарегистрирован: 08.05.2013
Группа: Пользователи
Сообщений: 54
Статус: Offline
|
В общем есть тип записи, ссылка на него, и процедура создания его переменных (Для примера) :
Код
type
TDataRecord = record
size:longword;
attr:longword;
addr:pointer;
end;
PDataRecord=^TDataRecord;
///////////////////////////
//сама суть ///
//////////////////////////
function CreateRecord1():PDataRecord;
begin
GetMem(result,sizeof(TDataRecord));
FillChar(result,sizeof(TDataRecord),0);
end;
procedure CreateRecord2(out rec:PDataRecord);
begin
GetMem(rec,sizeof(TDataRecord));
FillChar(rec,sizeof(TDataRecord),0);
end;
Поясните пожалуйста чайнику в чем будет разница в выполнение данных примеров
Сообщение отредактировал Hargen - Суббота, 25.05.2013, 20:50
|
|
|
|
Neo
|
Дата: Воскресенье, 26.05.2013, 08:04 | Сообщение # 2
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 252
Статус: Offline
|
Hargen, Разницы абсолютно нет никакой!Различия будут только в вызове.Например,если ты будешь использовать функцию,то код будет примерно такой:
Код
Var p:PDataRecord;
begin
p:=CreateRecord1;
end;
А если будешь использовать процедуру.то
Код
Var p:PDataRecord;
begin
CreateRecord2(p);
end;
В обоих случаях,p будет указывать на адрес TDataRecord выделенную памяти.
|
|
|
|
Hargen
|
Дата: Воскресенье, 26.05.2013, 13:00 | Сообщение # 3
|
Частый гость
Зарегистрирован: 08.05.2013
Группа: Пользователи
Сообщений: 54
Статус: Offline
|
Спасибо
|
|
|
|
Volf
|
Дата: Воскресенье, 26.05.2013, 15:03 | Сообщение # 4
|
Частый гость
Зарегистрирован: 11.04.2013
Группа: Пользователи
Сообщений: 29
Статус: Offline
|
Разница не только в вызове но и в том что функция имеет в своей структуре ответ(result),а процедура это просто набор команд |
|
|
|