Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Pointer   Найти похожие ветки 

 
мндэмс   (2006-10-31 18:50) [0]

Смотрю чужой исходник (сам только учусь, поинтеры ещё особо не читал), и заинтересовал такой вопрос:

Есть некоторый рекорд
PMyRecord = ^TMyRecord;
TMyRecord = record
 l1: Integer;
 l2: Integer;
end;


Потом где-то заполняют его и передают в другую функцию, при этом передают в функцию его, как поинтер.

var
 myRec: TMyRecord;
begin
 myRec.l1 := $000f;
 myRec.l2 := $000e;
 myProc(@myRec);
end;

procedure myProc(myRec: PMyRecord);
begin
....myRec^.l1 .....
end;


Какой смысл передавать в процедуру этот рекорд как поинтер? Почему не передать просто сам myRec?


 
MetalFan ©   (2006-10-31 18:56) [1]

можно и так
var
myRec: TMyRecord;
begin
myRec.l1 := $000f;
myRec.l2 := $000e;
myProc(myRec);
end;

procedure myProc(var myRec: TMyRecord);
begin
....myRec.l1 .....
end;


 
мндэмс   (2006-10-31 19:01) [2]

А какой в этом смысл, только в том что бы передавать переменную как var?


 
Palladin ©   (2006-10-31 19:13) [3]

да, скорее всего


 
Anatoly Podgoretsky ©   (2006-10-31 20:09) [4]

> MetalFan  (31.10.2006 18:56:01)  [1]

И будет передан тот же указатель.


 
MetalFan ©   (2006-10-31 20:26) [5]


> Anatoly Podgoretsky ©   (31.10.06 20:09) [4]
>
> > MetalFan  (31.10.2006 18:56:01)  [1]
>
> И будет передан тот же указатель.


ну да, я и не спорю)

> мндэмс   (31.10.06 19:01) [0]
> ....
> Какой смысл передавать в процедуру этот рекорд как поинтер?
>  Почему не передать просто сам myRec?
> мндэмс   (31.10.06 19:01) [2]
>
> А какой в этом смысл, только в том что бы передавать переменную
> как var?


почитай чтоли умные книжки, а?
если ее изменять не надо, то можешь хоть как const передавать


 
Anatoly Podgoretsky ©   (2006-10-31 20:29) [6]

> MetalFan  (31.10.2006 20:26:05)  [5]

Если говорить в терминах Дельфи, то будет передан не указатель, а
типизированая ссылка, все ссылки являются указателями, но не все
типизированые.


 
MetalFan ©   (2006-10-31 20:32) [7]


> Anatoly Podgoretsky ©   (31.10.06 20:29) [6]


усе, молчу... ) а то еще ченить сморожу


 
Anatoly Podgoretsky ©   (2006-10-31 20:36) [8]

> MetalFan  (31.10.2006 20:32:07)  [7]

Да не стесняйся и нам весело, со временем холодов будет меньше. А будешь
молчать дураком помрешь и не догадаешься об этом.


 
Desdechado ©   (2006-10-31 20:51) [9]

> поинтеры ещё особо не читал
почитай, потом удивляйся чужим исходникам


 
мндэмс   (2006-10-31 21:41) [10]

Тем кто ответил - спасибо!

Абослютно не нравиться высказывания "что за лох, иди читай книжки, нам гуру программирования некогда на такие тупые вопросы отвечать". Лучше промолчать, в таких случаях.


 
@!!ex ©   (2006-10-31 21:45) [11]


> мндэмс   (31.10.06 21:41) [10]

Лучше чем спрашивать, сначала пойти почитать книжки...
Или на крайня в гугле порыться.

Здесь никто не понтуется.
Просто пытаться делать выводы о работе какого то кода не понимая принципов, ИМХО не есть гуд. О чем вам уже и сказали.

Собственно по сабжу.
Подумай, что будет быстрее, выделить память под копию передаваемого рекорда и скоипировать туда данные или просто передать указатель на этот рекорд?
Особенно если размеры рекорда несколько десятков мегабайт......

Читай книжки.


 
Anatoly Podgoretsky ©   (2006-10-31 23:38) [12]

Ой у нас очень умный появился.



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
15-1162179130
Reg1
2006-10-30 06:32
2006.11.19
Как зарегиться на YouTube ?


15-1162105239
Pazitron_Brain
2006-10-29 10:00
2006.11.19
Сколько тратит IP телефония трафика?


15-1162042337
Владимир_мпп
2006-10-28 17:32
2006.11.19
Альтернативный WINS-Сервер


11-1133784752
Mothertrucker
2005-12-05 15:12
2006.11.19
http://www.kolnmck.ru/


15-1162303585
Crazybeaver
2006-10-31 17:06
2006.11.19
Чудеса на виражах. Каким образом выполнена эта технология?