Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.07;
Скачать: CL | DM;

Вниз

Наивный вопрос о св-ве Tag   Найти похожие ветки 

 
Satrap   (2002-01-23 09:54) [0]

Рискуя навлечь на себя гнев профессионалов все же спрошу. В help-е прочел, что в свойстве Tag
можно располагать любые типы данных размером 4 байта. Пытаюсь поместить в Tag указатель, но
ничего не получается. Размещаю так

Tag:=LongInt(P); , где P:Pointer

Получаю указатель так

P:=@Tag;

После этого указатель указывает на все что угодно, кроме нужной переменной.
Чтоя делаю не так, подскажите, или может я не так понял help?


 
Виктор Щербаков   (2002-01-23 10:11) [1]

Tag := Integer(P);
P := Pointer(Tag);


 
Digitman   (2002-01-23 10:13) [2]

св-во Tag многих VCL-классов объявлено как Longint.
размерность типа Longint - 4 байта, размерность типа Pointer - тоже 4 байта. Поэтому для присвоения тэгу значения указательного типа достаточно сделать явное преобразование типа вот так :
var Ptr: Pointer;
..
Object.Tag := Longint(Ptr);

тем самым ты сообщаешь компилятору, что значение, хранящееся в переменной Ptr, ему следует рассматривать не как указатель, а как длинное целое (что вполне допустимо, т.к. размеры этих типов совпадают), и тем самым - подавить потенциальное сообщение компелятора о несоответствии типов в этом выражении


 
Satrap   (2002-01-23 11:30) [3]

Простите, погорячился, в следующий раз буду думать в 2 раза дольше. Или даже в три. Спасибо всем кто откликнулся.



Страницы: 1 вся ветка

Текущий архив: 2002.02.07;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.004 c
3-18704
dim-
2002-01-09 12:35
2002.02.07
FreeReport


14-18951
paul_shmakov
2001-12-17 16:28
2002.02.07
сортировка по датам в поиске


1-18872
AndrewK
2002-01-23 09:54
2002.02.07
Как правильно создать и уничтожить форму


7-18994
CAHEK
2001-10-22 19:00
2002.02.07
Как отобразить окно SysTray в своем приложении


14-18960
SP
2001-12-18 16:15
2002.02.07
Размере откомпилированного файла...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский