Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Указатели


Страницы:   1 2

unknowing ©   (2007-12-08 21:19:00) 

type
 PMyRec = ^TMyRec;
 TMyRec = record
 B: Byte;
 I: Integer;
end;

implementation

{$R *.dfm}
function GetRes : TMyRec;
begin
Result.B:= Ord('A');
Result.I:=0;
end;

function GetResP : PMyRec;
begin
GetMem(Result,Sizeof(TMyRec));
Result^.B:= Ord('B');
Result^.I:=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GetRes;
GetResP;
end;

Здравствуйте, уважаемые мастера! Мой вопрос: в каких случаях используют подобные указатели (в моем примере PMyRec)?


unknowing   (2007-12-08 22:29:00) [21]


> Anatoly Podgoretsky ©   (08.12.07 22:24) [18]

Просто пытаюсь делать на Delphi. Все работает, но у программистов-профессионалов есть, вроде, понятие "хороший стиль". Поэтому интересно, так организовывается обмен, а Delphi просто инструмент...


Anatoly Podgoretsky   (2007-12-08 22:24:00) [22]

> unknowing  (08.12.2007 22:15:17)  [17]

Ничего не понятно, как это связано с Дельфи?


unknowing   (2007-12-08 22:15:00) [23]


> Anatoly Podgoretsky ©   (08.12.07 22:11) [16]

Про глобальные переменные... (оффтоп) Делаю так: считываю данные с сом-порта, типа, GetBuff, все что пришло передаю в парсер ParseBuf(GetBuff.data), если сообщение закончено, то заполняю глобальную переменную-запись и в цикле 10 Гц выдаю ее значения на экран... Так делают профи или нет ? :)


Anatoly Podgoretsky   (2007-12-08 22:11:00) [24]

> unknowing  (08.12.2007 22:09:15)  [15]

Ты имеешь в виду наверно ручное выделение памяти, в наше время необходимости не вижу, есть альтернативные методы. Будет необходимость в N направленых списках вот тогда может появиться необходимость.


unknowing   (2007-12-08 22:09:00) [25]


> Anatoly Podgoretsky ©   (08.12.07 22:04) [14]

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


Anatoly Podgoretsky   (2007-12-08 22:04:00) [26]

Задачи разные бывают. Если задаче требуется динамическое выделение памяти, то так тому и быть. Но если это не требуется, а программист сует не нужное, то это плохо.
Приведеные два варианта не конечные.
Пока реальных вопросов не видать.
А использовать можно, что угодно и как угодно.
За последнии несколько лет мне не потребовалось динамически выделять память под переменные (типы), хватает или глобальных или локальных простых переменных или динамических массивов, а также классов. Нужды строить списки нет.


{RASkov}   (2007-12-08 22:03:00) [27]

> [6] unknowing   (08.12.07 21:54)
> Какие преимущества?

Скорость.
Но опять же смотря в каких случаях в приведенном тобой нет преимущества...

> [10] unknowing   (08.12.07 21:59)

Вот в данном случае без указателя никак:
TRec = record
param: Integer;
Next:  PRec;
end;
PRec = ^TRec;


unknowing   (2007-12-08 22:03:00) [28]


> antonn ©   (08.12.07 22:02) [11]

Если Вас не затруднит, приведите пример.


antonn   (2007-12-08 22:02:00) [29]

в списках, где укзатели указывают на большие куски памяти :)
не собирать же их все в один массив :)


unknowing   (2007-12-08 21:59:00) [30]


> Anatoly Podgoretsky ©   (08.12.07 21:58) [9]

Конкретизирую вопрос. В каких видах задач лучше/практичней/продуктивней/пр. используют указатель?


Anatoly Podgoretsky   (2007-12-08 21:58:00) [31]

> unknowing  (08.12.2007 21:56:08)  [8]

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


unknowing   (2007-12-08 21:56:00) [32]


> Anatoly Podgoretsky ©   (08.12.07 21:52) [5]

begin
 MyB:=GetRes.B;
 MyBp:=GetResP^.B;
end;


Anatoly Podgoretsky   (2007-12-08 21:56:00) [33]

> unknowing  (08.12.2007 21:54:06)  [6]

Ближе к конкретике, а то говорить про погоду на Марсе как то неинтересно.


unknowing   (2007-12-08 21:54:00) [34]


> Джо ©   (08.12.07 21:36) [2]

А к чему динамическое управление памятью? Какие преимущества?


Anatoly Podgoretsky   (2007-12-08 21:52:00) [35]

Так твой код тоже абсолютно не понять, с одной стороны функции, а с другой плюем на них.


unknowing   (2007-12-08 21:47:00) [36]


> Если утрированно, то указатели остались в основном для совместимости,
>  и нет надобности в их использовании, только в специфичиских
> случаях, например, в своеобразных списках, но и в них уже
> сейчас мало нужды...

Ура!!! Я не понимал зачем все это.. если можно просто Trec и без явной работы с памятью!


{RASkov}   (2007-12-08 21:43:00) [37]

Вопрос не странный.... вопрос вполне нормальный а вот ответить коротко на него трудно....
В приведенном коде я не вижу смысла в GetResP, отсюда следует, что тип PMyRec = ^TMyRec; (типизированный указатель) - не к чему...

Не так давно здесь на форуме этот вопрос(или похожий) был уже, и на него был отличный ответ подкрепленный кодом... Вот только ответившего не помню :( Помоему Ю. Зотов.... Мне тот ответ очень понравился....

Если утрированно, то указатели остались в основном для совместимости, и нет надобности в их использовании, только в специфичиских случаях, например, в своеобразных списках, но и в них уже сейчас мало нужды...

С другой стороны - нетипизированные указатели довольно широко используються, например в АПИ


Джо   (2007-12-08 21:36:00) [38]

> Мой вопрос: в каких случаях используют подобные указатели
> (в моем примере PMyRec)?

Ну, вот в вашем же примере и видно, зачем.
Для динамического управления памятью. Почему же не просто указатель, а типизированный? А потому, что удобно и практЫчно.
Какой вопрос, такой и ответ, не обессудьте :)


homm   (2007-12-08 21:30:00) [39]

> [0] unknowing   (08.12.07 21:19)
> подобные указатели

Чем подобные указатели отличаются от неподобных? А вообще, вопрос очень странный, такое чувство, что на самом деле не это хотел спросить.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо