Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 10:44   #1
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию Указатель. Pointer

Вопрос такой.
Для простоты понимания пример такого типа.
На форме расположены Edit, Label, Panel и Button.
При нажатии на кнопку необходимо чтобы переменая из Эдита прописалась в label.Caption и Panel.Caption, но не напрямую а через массив указателей, который предварительно инициализируется.
Вопрос заключается как раз как его инициализировать?
Чтобы при записи в элементы массива происходила замена названия у лэйбла и панели. Что-то вроде этого
Код:
PointerArray[0]:=Edit1.Text; //изменяем название лэйбла
PointerArray[1]:=Edit1.Text; //изменяем название панели
Ну или подскажите как удобно присвоить значение различным элементам(Label.Caption, Panel.Caption). Чтобы непострочно, а через массив.

Последний раз редактировалось AHTuKiLLeR; 27.05.2009 в 10:53. Причина: правка грамм. ошибок
AHTuKiLLeR вне форума Ответить с цитированием
Старый 27.05.2009, 10:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обьясните что вы хотите
а то по коду написано одно а по комментам должно быть иное
кстати если там указатели то надо так писать:
Код:
PointerArray[0]:=@Edit1.Text;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.05.2009, 11:05   #3
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию

Я хочу создать массив, в которых буду храниться указатели к компонентам, чтобы присваивая стринговую переменную(текст) этот текст присваивался компонентам.
Тоесть будет массив PointerArray. При присвоении элементам этого массива значения 'New text' на форме компоненты Label или Panel стали отображать эту строку.
AHTuKiLLeR вне форума Ответить с цитированием
Старый 27.05.2009, 11:17   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

со свойствами так работать нельзя
а почему бы не написать просто Edit1.Text:='New Text'?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.05.2009, 11:32   #5
AHTuKiLLeR
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а почему бы не написать просто Edit1.Text:='New Text'?
Так это мне не надо. Мне надо текст из эдита записать в названия лэйблом(TLabel) и панелей(TPanel) через указатель. Это осуществимо?
Или всетаки придется работать построчно. Вроде такого
Код:
Label1.Caption:=Edit1.Text;
Label2.Caption:=Edit1.Text;
Panel1.Caption:=Edit1.Text;
AHTuKiLLeR вне форума Ответить с цитированием
Старый 27.05.2009, 11:35   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поймите Edit1.Text это свойство, а не переменная
указатель указывает или на функцию или на переменную
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.05.2009, 13:41   #7
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Дак это свойство же ссылается на строку в итоге? Или нет...
--------Разве нельзя сместить указатель или они идут подряд в памяти?
(нат попробовать)*Ушёл пробовать*
-------------------------------------
Цитата:
После слова read указывается поле или метод, к которому происходит
обращение при чтении значения свойства, а после слова write – поле или
метод, к которому происходит обращение при записи свойства. Атрибуты read
и write называют спецификаторами доступа. Если один из них опущен, то
свойство можно только читать (задан read) или только записывать (задан
write). Метод чтения поля – это всегда функция, возвращающая значение того
же типа, что и свойство. Метод записи свойства – это всегда процедура,
принимающая параметр того же типа, что и тип свойства. Один и тот же метод
может использоваться для получения (установки) значений нескольких свойств
одного типа. В этом случае каждому свойству назначается целочисленный
индекс, который передаётся в метод первым параметром.
При работе с объектом свойства выглядят как поля: они принимают
значения и участвуют в выражениях. Но в отличие от полей, свойства не
занимают места в памяти, а операции их чтения и записи ассоциируются с
обычными полями и методами. Так как свойства не имеют адреса в памяти, к
ним нельзя применить операцию @ и их нельзя передавать в качестве
параметров-переменных (Var) процедур и функций.
Технология ООП в Delphi предписывает избегать прямого обращения к
полям, создавая вместо этого свойства.
Источник
Из вопроса я понял что вы не столько хотите сэконмить память, как мне хочется
[Я то хотел что бы Все строки брались из одной памяти]
Поэтому Вам достаточно ИМХО указателей на объекты, а не на их свойства.

Код:
PointerArray[0]:=@Edit1;
Или хотя вспомнил, вот Как (указатель на память с началом Вашего текста, только надо сначала подогнать размер перед изменением):
Код:
P:=@Edit1.Text[1];
Don't worry be happy

Последний раз редактировалось Izhic; 27.05.2009 в 14:13.
Izhic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Pointer Operation Unconnected Общие вопросы Delphi 3 21.02.2009 20:23
handle <> pointer Altera Общие вопросы Delphi 8 08.10.2008 21:11
Invalid pointer operation Димарик Общие вопросы Delphi 2 05.11.2007 09:53
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38