Форум: "Основная";
Текущий архив: 2002.02.07;
Скачать: [xml.tar.bz2];
ВнизНаивный вопрос о св-ве 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c