Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Указать на TStringList.Object[] как? / 25 сообщений из 64, страница 1 из 3
15.12.2020, 07:09
    #40027824
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
Что то туплю, как взять указатель на ссылку на объект в TStringList.Object[]
так не катит @(TStringList.Objects[i]), ошибка variable required
...
Рейтинг: 0 / 0
15.12.2020, 07:38
    #40027829
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
Index
...
Рейтинг: 0 / 0
15.12.2020, 07:40
    #40027831
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin,

"указатель на ссылку на объект" - в данном случае - никак, ибо TStringList.Objects[i] - свойство, возвращающее указатель на i-й объект списка.
Указатель на сылку" в данном случае - зачем? Указатель на свойство должен вернуть - что? Ссылку на метод-геттер, ссылку на метод-сеттер - ?

Если хочешь заменить один объект другим - просто присваиваешь Список.objects[i] := новое_значение, и всё.
И - не TStringList, а конкретный экземпляр класса.
...
Рейтинг: 0 / 0
15.12.2020, 07:45
    #40027834
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ,

типа "дерево" - указатель на ссылку нужен в другом TStringList, который строится на этом TStringList с его Objects, чтобы меняя в дочернем объекты - это отражалось на родителе без поиска по Index родителя.
...
Рейтинг: 0 / 0
15.12.2020, 07:46
    #40027835
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
*удалено
...
Рейтинг: 0 / 0
15.12.2020, 07:50
    #40027836
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ
свойство, возвращающее указатель на i-й объект списка

как тогда взять указатель на этот указатель?
...
Рейтинг: 0 / 0
15.12.2020, 07:52
    #40027837
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
получается мне надо в TStringList.Object[] сувать не ссылки на объекты, а сразу брать указатель на ссылку и тогда можно будет тупо присваивать
...
Рейтинг: 0 / 0
15.12.2020, 07:56
    #40027838
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
хотя не, фигня, объекты же появляются в процессе произвольно, а не сразу (
...
Рейтинг: 0 / 0
15.12.2020, 08:17
    #40027841
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
DimaBr,

да точно, логично, вместо таскание в дочерний список объектов, можно просто передавать их Index родителя
...
Рейтинг: 0 / 0
15.12.2020, 08:33
    #40027842
SOFT FOR YOU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin,

Приличным способом никак. Но как говорится, если очень хочется...
...
Рейтинг: 0 / 0
15.12.2020, 08:50
    #40027844
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
SOFT FOR YOU,

да обойдусь уж передачей Index родителя, без указателей конструкция обращения стала огромной, но полагаю что "неприличный" способ еще более громоздкий ) уже очень не хочется наследовать TStringList и там кучу всего переписывать )
...
Рейтинг: 0 / 0
15.12.2020, 08:53
    #40027845
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin
ъъъъъ
свойство, возвращающее указатель на i-й объект списка

как тогда взять указатель на этот указатель?


У вас бред, пациент.
...
Рейтинг: 0 / 0
15.12.2020, 08:55
    #40027846
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ,

в чем бред то, двойной указатель потеря потерь в дельфах? ))
...
Рейтинг: 0 / 0
15.12.2020, 09:00
    #40027848
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin
ъъъъъ,

типа "дерево" - указатель на ссылку нужен в другом TStringList, который строится на этом TStringList с его Objects, чтобы меняя в дочернем объекты - это отражалось на родителе без поиска по Index родителя.

И зачем тут ссылка на указатель?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
var 
 o : TObject;
  list1, list2 : TStringList;
  i, j : integer;
begin
...
list1.objects[i] := o;
list2.objects[j] := o;


И о, и list1.objects[i] и list2.objects[j] указывают на один и тот же объект.
...
Рейтинг: 0 / 0
15.12.2020, 09:08
    #40027850
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ,

объекты появляются в list1 в ходе работы, их там нет с общей инициализацией

если нужна конкретика, то list1 это глобальный список, который используется для заполнения и удаления объектов в других потоках, а list2 расширенный локальный список, который используется в основном потоке, где Objects "ПОЧТИ" те же самые что и в list1 + еще и дублируются.
...
Рейтинг: 0 / 0
15.12.2020, 09:11
    #40027851
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ,

поэтому и хотелось получить указатель на переменную, которая хранит указатель на объект
...
Рейтинг: 0 / 0
15.12.2020, 09:25
    #40027854
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin
ъъъъъ,

поэтому и хотелось получить указатель на переменную, которая хранит указатель на объект

Почему "поэтому"?
...
Рейтинг: 0 / 0
15.12.2020, 09:40
    #40027855
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ

Почему "поэтому"?

потому что при двойном указателе можно всегда ссылаться на один и тот же объект, а не присваивать его по нескольку раз
...
Рейтинг: 0 / 0
15.12.2020, 09:43
    #40027856
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ,

т.е. если б можно было

инициализация
list1.objects[i] := nil;
list2.objects[j] := @list1.objects[i];

затем где то
list1.objects[i] := o

и еще где то
Assigned(list2.objects[j]^) = true
...
Рейтинг: 0 / 0
15.12.2020, 09:43
    #40027857
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin,

По-моему с такой задачей проще свой велосипед написать...
...
Рейтинг: 0 / 0
15.12.2020, 09:52
    #40027861
wolverin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
alekcvp,

если выяснится, что это не потокобезопасно, то придется ))
...
Рейтинг: 0 / 0
15.12.2020, 10:30
    #40027873
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
wolverin
ъъъъъ,

т.е. если б можно было

инициализация
Код: pascal
1.
2.
list1.objects[i] := nil;
list2.objects[j] := @list1.objects[i];


...

Что это должно означать? Ну, какое действие должно выполняться, в чем отличие
Код: pascal
1.
list2.objects[j] := @list1.objects[i];


от
Код: pascal
1.
list2.objects[j] := list1.objects[i];



?
...
Рейтинг: 0 / 0
15.12.2020, 10:37
    #40027877
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ

Что это должно означать? Ну, какое действие должно выполняться, в чем отличие
Код: pascal
1.
list2.objects[j] := @list1.objects[i];


от
Код: pascal
1.
list2.objects[j] := list1.objects[i];


?

Он думает, что objects[] - это массив, тогда бы это имело смысл.
Но это индексное свойство, вот в чём облом.
...
Рейтинг: 0 / 0
15.12.2020, 10:49
    #40027878
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
alekcvp,

все равно непонятно, что бы ему дало копирование адреса массива.
...
Рейтинг: 0 / 0
15.12.2020, 10:51
    #40027881
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать на TStringList.Object[] как?
ъъъъъ
alekcvp,
все равно непонятно, что бы ему дало копирование адреса массива.

Ну я, например, иногда храню данные (записи) в одном массиве, а в другом - адреса ячеек в первом, отсортированные в нужном мне порядке - такой себе аналог индексов в БД. Суть в том, что физически у тебя хранится одна копия данных, а получить доступ к ней и изменить её ты можешь из разных мест.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Указать на TStringList.Object[] как? / 25 сообщений из 64, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]