Главная страница
    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.045 c
15-1162385746
davinchi
2006-11-01 15:55
2006.11.19
Подскажите где найти прогу для проектирования Visual UML 2.7.2


15-1162464326
GRAND25
2006-11-02 13:45
2006.11.19
А как вам звонят 1С франчайзи?


5-1143047689
Калям
2006-03-22 20:14
2006.11.19
Перехват сообщений мыши и клавиатуры


1-1160550187
Calibr
2006-10-11 11:03
2006.11.19
Количество строк в файле


15-1162377647
Kerk
2006-11-01 13:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский