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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 13:38   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию Pointer

Код:
var
Form1: TForm1;
S1:String;
p:pointer;

S1:='Test';
p:=@S1;
if p=pointer(S1) then
ShowMessage ('Я думаю верно');
end;

Почему p не равняется pointer(S1), вед в них в обоих содержится адрес строки 'Test'
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 11.10.2009, 13:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

взятие адреса и приведение типов по вашему должно дать один результат?
лучше явно брать указатель.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.10.2009, 14:13   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Вы сравниваете адрес и указатель, надо или указатели сравнивать или адреса. Вот например сравнение адресов:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
S1:String;
p:pointer;
begin
S1:='Test';
p:=@S1;
if p=@pointer(S1) then
ShowMessage ('Я думаю верно');
end;
Или вот указателей:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
S1:String;
p:pointer;
begin
S1:='Test';
p:=pointer(S1);
if p=pointer(S1) then
ShowMessage ('Я думаю верно');
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 12.10.2009, 16:45   #4
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
взятие адреса и приведение типов по вашему должно дать один результат?
лучше явно брать указатель.
p:=@S1;//содержится адрес S1
pointer(S1)// содержится адрес S1

По моему они должны быть равны ?
Напишите что содержится в каждой переменной !

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
Вы сравниваете адрес и указатель, надо или указатели сравнивать или адреса. Вот например сравнение адресов:
Когда сравниваешь даные переменных String и PChar почему то они оказываются равными, так что так не понятно. Повторяюсь напишите чем отл-ся содержимое:

p:=@S1;//содержится адрес S1
pointer(S1)// содержится адрес S1
Skype: Lotles-XXXX

Последний раз редактировалось Stilet; 12.10.2009 в 16:56.
Superlotles вне форума Ответить с цитированием
Старый 12.10.2009, 16:55   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
pointer(S1)// содержится адрес S1
Нет не содержится.
Это ты тип привел. Но это неверная запись. Компилер может не понять Лучче через @ получать адрес.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2009, 17:24   #6
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию

Блин я кажется понял !!! Аллилуя
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель. Pointer AHTuKiLLeR Общие вопросы Delphi 6 27.05.2009 13:41
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