Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.08.2012, 13:41
Alexs55 Alexs55 вне форума
Прохожий
 
Регистрация: 11.07.2012
Сообщения: 14
Репутация: 10
По умолчанию И снова ^

В одной из книг прочитал, что указатель может ссылаться на любой объект.
Решил попробовать
Код:
var
  Name : PString;
........
........
........
  Name := @Edit1.Text;   //[DCC Error] U_RegTable.pas(91): E2036 Variable required
В комментарии то, куда послал меня компилятор на этой строке.
Причин ошибки скорее всего может быть две.
1. Ошибка в конструкции оператора.
2. Указатель может ссылаться на объект, но ни на его часть.
А может быть ещё что то третье? Помогите разобраться.
__________________
Windows 7, Delphi XE, Firebird 2.5, IBExpert
Ответить с цитированием
  #2  
Старый 29.08.2012, 13:45
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Alexs55
В одной из книг прочитал, что указатель может ссылаться на любой объект.
Решил попробовать
Код:
var
  Name : PString;
........
........
........
  Name := @Edit1.Text;   //[DCC Error] U_RegTable.pas(91): E2036 Variable required
В комментарии то, куда послал меня компилятор на этой строке.
Причин ошибки скорее всего может быть две.
1. Ошибка в конструкции оператора.
2. Указатель может ссылаться на объект, но ни на его часть.
А может быть ещё что то третье? Помогите разобраться.
Edit1.Text - это свойство. Нельзя получать указатель на свойство.
Ответить с цитированием
  #3  
Старый 29.08.2012, 14:01
Alexs55 Alexs55 вне форума
Прохожий
 
Регистрация: 11.07.2012
Сообщения: 14
Репутация: 10
По умолчанию

Судя по Вашему ответу, создать указатель на данный текст невозможно?
__________________
Windows 7, Delphi XE, Firebird 2.5, IBExpert
Ответить с цитированием
  #4  
Старый 29.08.2012, 14:02
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

http://www.delphisources.ru/forum/sh...85&postcount=5
но код там в общем страшный, можно взять только суть
__________________
>woweook<
Ответить с цитированием
  #5  
Старый 29.08.2012, 14:07
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Alexs55
Судя по Вашему ответу, создать указатель на данный текст невозможно?
На текст возможно, на свойство нельзя. Чтобы создать указатель на текст нужно его сначала куда-то сохранить (в переменную). Так как в свойстве данные не хранятся, то и указателя на эти данные невозможны.
Ответить с цитированием
  #6  
Старый 29.08.2012, 16:14
robt robt вне форума
Активный
 
Регистрация: 17.02.2011
Сообщения: 298
Репутация: -1806
По умолчанию

Цитата:
Сообщение от poli-smen
Так как в свойстве данные не хранятся, то и указателя на эти данные невозможны.
свойства бывают 2х типов, либо результат функции либо переменная
Ответить с цитированием
  #7  
Старый 29.08.2012, 23:12
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Не думаю, что указатели подходят для решения поставленной тобой задачи. обычно в таких случаях юзают:
Код:
function GetText(Edit: TEdit): string;
begin
  Result:='N/A';
  if Assigned(Edit) then
   Result:=Edit.Text;
end;

...

var
  Name : string;

begin
  Name:=GetText(Edit1);

...

И помни про ООП - пихай почти ВСЕ в классы!
__________________
00110001 00101100 00110110 00110001 00111000 00110000 00110011 00110011 00111001 00111000 00111000 00110111 00110100 00111001 00111000 00111001 00110100 00111000 00110100 00111000 00110010 00110000 00110100 00110101 00111000 00110110 00111000 00110011 00110100 00110011 00110110 00110101 00110110
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter