![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поменять местами два объекта
н083нький © (2009-01-19 02:55:00)Всем привет, я новенький, возник вопрос.
Есть массив объектов (экземпляров класса). Я их всех в цикле об-Create-ил. Теперь мне надо поменять местами 2 элемента. Например, чтоб на месте пятого элемента стоял шестой, а на месте шестого - пятый. Как это сделать с объектами? заранее спасиб0.
Юрий Зотов (2009-01-19 06:29:00) [1]> н083нький (19.01.09 03:12) [4]
Любая объектная переменная, даже если она является элементом массива (да и вообще чем угодно) фактически представляет собой типизированный указатель. Это означает, что она хранит в себе не сам объект, а его адрес в памяти; сам же объект хранится отдельно (по этому адресу) и ни про какие там переменные даже и не знает ничего (тем более, что их может быть и не одна, а сколько угодно).
Поэтому в Вашем массиве реально хранятся не сами объекты, а их адреса в памяти. То есть, обыкновенные целые числа.
Что из этого следует - видимо, уже ясно.
:о)
н083нький (2009-01-19 03:12:00) [2]согласен :) спасиб0
Германн (2009-01-19 03:10:00) [3]
> p177-bu11 inno 69 (19.01.09 03:05) [2]
>
> значит нет разницы, что с объектами?
>
> var
> b: TStudent;
> ar: array of TStudent;
> //......
> b := ar[5];
> ar[5] := ar[6];
> ar[6] := b;
> //......
>
> так правильно будет? Ничего, что там объекты используются?
>
Правильно. И объекты тут ни при чём.
Но "учебник" лучше всё-таки иметь под рукой.
p177-bu11 inno 69 (2009-01-19 03:05:00) [4]значит нет разницы, что с объектами?
var
b: TStudent;
ar: array of TStudent;
//......
b := ar[5];
ar[5] := ar[6];
ar[6] := b;
//......
так правильно будет? Ничего, что там объекты используются?
Германн (2009-01-19 03:01:00) [5]
> Например, чтоб на месте пятого элемента стоял шестой, а
> на месте шестого - пятый. Как это сделать с объектами? заранее
> спасиб0.
>
А при чём тут объекты?