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

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

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

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

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

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

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

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

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


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

в чем бред то, двойной указатель потеря потерь в дельфах? ))
...
Рейтинг: 0 / 0
Указать на TStringList.Object[] как?
    #40027848
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Указать на TStringList.Object[] как?
    #40027850
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

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

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

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

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

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

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

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

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

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

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

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

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

если выяснится, что это не потокобезопасно, то придется ))
...
Рейтинг: 0 / 0
Указать на TStringList.Object[] как?
    #40027873
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Указать на TStringList.Object[] как?
    #40027877
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

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


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


?

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

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

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


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