37 / 37 / 6
Регистрация: 17.04.2011
Сообщений: 444
|
|
1 | |
Как в делфи вывести указатель (то есть значение адреса) на экран?06.05.2011, 12:44. Показов 17955. Ответов 8
Метки нет (Все метки)
Как в делфи вывести указатель (то есть значение адреса) на экран? (В едит, или в сообщении). То есть как тип pointer преобразовать к текстовому?
0
|
06.05.2011, 12:44 | |
Ответы с готовыми решениями:
8
Как вывести на экран переменную из функции, которой присваиваеться значение через указатель? Определить, есть ли в списке работающих Ивановы, и, если есть, то вывести их адрес (адреса) как в делфи вывести в Edit после then слово 'Столбец с одинаковыми элементами есть' Определить, есть ли в списке Петровы (Петров, Петрова), если есть, то вывести их адрес (адреса) и записать их в стек. |
28 / 28 / 4
Регистрация: 28.04.2011
Сообщений: 79
|
|
06.05.2011, 13:11 | 2 |
IntToStr или IntToHex. Смотря для каких целей.
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
06.05.2011, 13:12 | 3 | |||||
2
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
||||||
06.05.2011, 13:15 | 4 | |||||
Ну вот пример.
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
||||||
06.05.2011, 13:18 | 5 | |||||
И ещё вот так можно:
1
|
37 / 37 / 6
Регистрация: 17.04.2011
Сообщений: 444
|
|||||||||||||||||||||
06.05.2011, 23:05 [ТС] | 6 | ||||||||||||||||||||
Спасибо, щас так попробывал - выводит, но возник ещё один вопрос)). Значение адреса равно 4530500, а если я присваиваю
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
06.05.2011, 23:18 | 7 |
@ возвращает адрес первого байта дескриптора строки.
Pointer возвращает адрес первого байта буфера строковых данных. Дескриптор строки <> буфер строковых данных.
0
|
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
|
|||||||||||
07.05.2011, 03:30 | 8 | ||||||||||
Akmas, в продолжение ответа от mss, добавлю: если объявлена переменная S : String; то S - это только указатель на область, где располагается массив символов строки. Для проверки можешь определить размер переменной S в памяти: SizeOf(S) - эта функция для любой строки вернёт значение равное 4. Таким образом, адрес первого байта, начиная с которого расположен массив символов строки, можно получить просто прочитав числовое значение, хранящееся в S:
Pointer(S) или Integer(S). Также адрес первого байта массива символов можно получить так: @S[0] или так: Addr(S[0]) - в случае непустой строки. А когда выполняются такие операции: @S или Addr(S) - здесь мы получаем адрес первого (младшего) байта, начиная с которого располагается сам указатель S. Т. е. через @S, Addr(S) мы получаем указатель на указатель, который указывает на массив символов. Строка устроена так: Строка тип String - это указатель на ячейку (байт) в памяти, начиная с которого расположен массив символов строки. Последним символом является терминальный ноль #0 - распложен в позиции: S[Length(S) + 1) Кроме этого строка содержит метаданные - это сведения о размере выделенной памяти, количестве ссылок на строку и длина строки в виде количества символов (без учёта терминального нуля). Эти метаданные расположены в младших адресах перед массивом символов строки:
2
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
07.05.2011, 15:15 | 9 |
Важно понимать, что в Делфи как и во многих "суперпуперпопулярных" ЯВУ (а-ля PHP, Java и иже с ними) представлено немало типов данных с так называемым "управляемым временем жизни". К ним относятся длинные строки, дин.массивы, вариантный тип и интерфейсные типы. Все они представлены в памяти указателями на дескрипторы (описатели) либо на элементы виртуальной таблицы методов (в случае интерф. типов)
1
|
07.05.2011, 15:15 | |
07.05.2011, 15:15 | |
Помогаю со студенческими работами здесь
9
Вывести на экран количество и значение элементов в дробной части которых есть цифра 5 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |