Главная страница
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.058 c
6-1151044736
yaral
2006-06-23 10:38
2006.11.19
Кодировка писма IdMessage


3-1158826551
kyn66
2006-09-21 12:15
2006.11.19
В чем разница между VarIsEmpty(NewVal) и VarIsNull(NewVal) ?


2-1162407757
despo
2006-11-01 22:02
2006.11.19
Есть ли ограничение на длину sql скрипта в TQuery?


15-1162275186
@!!ex
2006-10-31 09:13
2006.11.19
GetTickCount под досом


15-1162247853
msn777
2006-10-31 01:37
2006.11.19
Ищу компоненты плавающих панелей / окон