Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.23 c
15-1162313273
ProgRAMmer Dimonych
2006-10-31 19:47
2006.11.19
Прошу прощения за тупой вопрос, но...


2-1162383897
Сергей И
2006-11-01 15:24
2006.11.19
Помогите с вопросом Ini файлов!


1-1160372158
Dust
2006-10-09 09:35
2006.11.19
Нужен конмпонент, подскажите если есть такой


8-1144648634
Wolfram
2006-04-10 09:57
2006.11.19
Где взять исходник работающей программы для записи звука?


2-1162556275
NewUser0
2006-11-03 15:17
2006.11.19
Список запушенных приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский