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

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

Функция с указателем на массив (чайник) [D6, Win2k]


Страницы:   1 2

Pavelkq ©   (2005-02-21 10:26:00) 

Здравствуйте! Впервые решил не перебрасывать в функцию весь массив, как делал раньше, а передать ей только указатель на первый элемент и вернуть такой же указатель. В теории понимаю, как это работает, но каков синтаксис, не знаю:-( Помогите пожалуйста!
 Имею динамический массив
var Indexses: array of MyType;
Надо сделать функцию сортировки (это естественно сам сделаю) и вызов типа:
Indexes:=SortInd(Indexes)
но через указатели!


Anatoly Podgoretsky   (2005-02-23 13:26:00) [1]

Pavelkq   (21.02.05 12:30) [5]
function SortInd(const Indexses: TIndexses): TIndexses;


Юрий Зотов   (2005-02-23 13:15:00) [2]

> begin...end ©   (21.02.05 14:08) [21]

В одну сторону - да. В другую - надо.


begin...end   (2005-02-21 14:08:00) [3]

> Юрий Зотов ©   (21.02.05 14:00) [20]

>> В TStrings хранятся TObject, в TList -- Pointer.
>  Это одно и то же. Надо просто привести тип.

Его даже не надо приводить явно. Вероятно, он приводится автоматически.


Юрий Зотов   (2005-02-21 14:00:00) [4]

> Чапаев

Ох, неправы Вы, Василий Иванович.

> если type MyType=Byte, то придётся что-то придумывать, чтобы
> байт представить в виде указателя

Не придется. Один байт и так отлично укладывается в 4-байтовую область. Надо просто привести тип.

> В TStrings хранятся TObject, в TList -- Pointer.

Это одно и то же. Надо просто привести тип.


Чапаев   (2005-02-21 13:59:00) [5]

> Хотя я бы для данной задачи оставил бы всё в массиве и не плодил "сущностей без необходимости".
Согласен. ;-)


begin...end   (2005-02-21 13:48:00) [6]

> Чапаев ©   (21.02.05 13:43) [17]

> Так к чему там было о "динамическом выделении памяти"?
Ну я имел в виду, что почему бы под элементы не выделять память динамически, получая указатель на каждый элемент, а затем заносить указатели в экземпляр TList?

Хотя я бы для данной задачи оставил бы всё в массиве и не плодил "сущностей без необходимости".


Чапаев   (2005-02-21 13:43:00) [7]

> Автор ветки ничего не говорил о том, что такое TMyType.
Потому и растекаюсь мыслию по древу.

> Ась?
Так к чему там было о "динамическом выделении памяти"?


begin...end   (2005-02-21 13:34:00) [8]

> Чапаев ©   (21.02.05 13:31) [15]

> В TString хранятся TObject, в TList -- Pointer.
> обычно удобнее таки с TObject работать.
Автор ветки ничего не говорил о том, что такое TMyType.

> Га?
Ась?


Чапаев   (2005-02-21 13:31:00) [9]

> Так а почему TStrings лучше, чем TList?
В TString хранятся TObject, в TList -- Pointer. Конечно, однозначно говорить "удобнее" нельзя, но обычно удобнее таки с TObject работать.

> А как же динамическое выделение памяти?
Га?


begin...end   (2005-02-21 13:27:00) [10]

> Чапаев ©   (21.02.05 13:23) [13]

> Если MyType -- объектный тип, то TList/TStrings
> подходит очень хорошо.
Так а почему TStrings лучше, чем TList?

> А вот если type MyType=Byte, то придётся что-то
> придумывать, чтобы байт представить в виде указателя
> (скорее всего, будет что-то вроде type MyType=class
> MyField:Byte end;).
А как же динамическое выделение памяти?


Чапаев   (2005-02-21 13:23:00) [11]

> var Indexses: array of MyType;
Если MyType -- объектный тип, то TList/TStrings подходит очень хорошо. А вот если type MyType=Byte, то придётся что-то придумывать, чтобы байт представить в виде указателя (скорее всего, будет что-то вроде type MyType=class MyField:Byte end;).


begin...end   (2005-02-21 13:09:00) [12]

> Pavelkq   (21.02.05 12:57) [7]

> то данные будут отсортированы в памяти
Будут. Если Вы их отсортируете.

> указатель массива останется на первом элементе?
Непонятный вопрос.

> Кстати, Джулиан Бакнелл рекомендует использовать
> экземпляр TList.
Рекомендует для чего?


Инструктор   (2005-02-21 13:02:00) [13]

> [8] Чапаев ©   (21.02.05 13:00)

А... можно подробнее про Tstrings и TList? В чем воробьи?


Чапаев   (2005-02-21 13:02:00) [14]

> Имею в виду все корректро будет?
От тебя зависит. ;-)

> Кстати, Джулиан Бакнелл рекомендует использовать экземпляр TList. Не бует проблем?
Ну... Проблем-то не будет. Но TList оперирует с указателями. Нередко это -- стрельба из пушки по воробьям. Обычно практичнее оперировать с наследниками TStrings.


Чапаев   (2005-02-21 13:01:00) [15]

> Имею в виду все корректро будет?
От тебя зависит. ;-)

> Кстати, Джулиан Бакнелл рекомендует использовать экземпляр TList. Не бует проблем?
Ну... Проблем-то не будет. Но TList оперирует с указателями. Нередко это -- стрельба из пушки по воробьям. Обычно практичнее оперировать с наследниками TStrings.


Чапаев   (2005-02-21 13:00:00) [16]

> Имею в виду все корректро будет?
От тебя зависит. ;-)

> Кстати, Джулиан Бакнелл рекомендует использовать экземпляр TList. Не бует проблем?
Ну... Проблем-то не будет. Но TList оперирует с указателями. Нередко это -- стрельба из пушки по воробьям. Обычно практичнее оперировать с наследниками TStrings.


Pavelkq   (2005-02-21 12:57:00) [17]

А если это процедура, как вы указали, то данные будут отсортированы в памяти и указатель массива останется на первом элементе? Имею в виду все корректро будет?
 Кстати, Джулиан Бакнелл рекомендует использовать экземпляр TList. Не бует проблем?


Чапаев   (2005-02-21 12:38:00) [18]

> Только мне нужна функция, которая вернет тоже массив.
Зачем именно функция? В принципе, можно и функцией, но вот если, к примеру, ты потом эту функцию запихаешь в dll и будешь импортировать в основную программу, будут проблемы...


Pavelkq   (2005-02-21 12:30:00) [19]

Вот это уже интереснее. Только мне нужна функция, которая вернет тоже массив.


Чапаев   (2005-02-21 12:24:00) [20]

> Indexes:=SortInd(Indexes)
А вот так делать крайне нежелательно... Лучше уж procedure SortInd(const InArr:TArray; var OutArray:TArray).


Страницы:   1 2

Наверх

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