| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Укразатели |
| Автор: Diesel Draft 10.7.2005, 13:22 |
| Припустим у меня есть указатель P. Мне надо увидеть (string, integer...) што в ньом записано. И Потом перетворить обратно з "видемого" типа в укразель. ТОпто я хочу читать и вручную укразевать даные для укрателя. |
| Автор: vadims 10.7.2005, 13:54 |
| Что значит 'увидеть' ??? |
| Автор: Guest 10.7.2005, 14:00 |
| ShowMessage(DWord(P)) |
| Автор: TP@MB@Y 10.7.2005, 16:27 | ||||
| Diesel Draft Если допустим у тебя есть указатель на произвольный тип (т.е. любой):
То чтобы обратиться к информации на которую он указывает надо: p^ т.е. если info имеет тип Type, то чтобы присвоить значение на которое ссылается указатель p надо так:
|
| Автор: Chrisstoff 10.7.2005, 20:41 | ||
| Мыж таки русские люди должны понимать друг друга ... но это ... ну вощем ладно ... ну а чём проблема то ... я так понимаю что когда афтор говорит "указатель P"... то подрузамевается указатель на не определённый тип ... тобишь Pointer. Вот ну а прокастовать его уже к указателю на конкретный тип помом ничё сложного ....
|
| Автор: Romtek 10.7.2005, 22:34 | ||||||
Для типизированных указателей же всё проще: никакого кастинга вообще не надо.
|
| Автор: Diesel Draft 11.7.2005, 11:02 |
| припустим указател указевает на адрес 11223344 мне надо увидеть или вручную указать куда имено он указевает |
| Автор: TP@MB@Y 11.7.2005, 17:20 |
| Diesel Draft Т.е. тебя интересут сам адрес? Если так, то он содержится непосредственно в указателе (как это не парадоксально) - 4 байта. Присваивай какой хочешь адрес и выводи на экран если хочешь посматреть. В чем проблема? |
| Автор: Diesel Draft 12.7.2005, 13:28 |
| Как мне увидеть какой имено там адрес? |
| Автор: TP@MB@Y 12.7.2005, 20:23 |
| Diesel Draft Походу просто так не вывести. Попробуй поюзать функции определения сегмента и смещения. Seg() Ofs() |
| Автор: Chrisstoff 12.7.2005, 20:41 | ||
TP@MB@Y
Если я ничего не путаю то присваивать указателю "какой хочешь адрес" нельзя! |
| Автор: TP@MB@Y 12.7.2005, 23:58 |
| Chrisstoff Проверил в паскале. Действительно нельзя. Diesel Draft Если не секрет, для чего вам надо знать конкретный адрес? Если вы хотите работать с памятью на низком уровне - юзайте асемблер (встроенный в паскаль). |
| Автор: Diesel Draft 13.7.2005, 17:18 |
| У меня меню создано на основе TWebBrozer припусти я хочу удалить елемент з списка созданого на основе указалелей. Так как список постоянно загружаетса и сортуетса я не можу работать припустим з порядковыми нолмерамы. Я ести я передам з браузера даные припустим "Del FF7812" и приму их то вся проблема решена |
| Автор: TP@MB@Y 13.7.2005, 17:59 | ||
| Diesel Draft Насколько я понял, вы "копаете не там где надо" Для работы с динамической цепочкой не нужно знать физический адрес, содержащийся в указателе какогото звена. Все делается намного проще. Вот модуль, написанный мной, для работы с динамической цепочкой:
Там он привязан к типу Elem, но ты можешь заменть на любой - принцип работы остается неизменным. |
| Автор: Diesel Draft 13.7.2005, 23:44 |
| Ето простой стандартный список. Такой так и у меня. а мне надо ПРистутим Припустим у нас есть указатель Р и любая переменная М. Р := @М; как мне узнать какой имено адрес знаходетса в Р. Надо прочетать не значение М а только адрес. Надо перевести его в стринг или в интеджер |
| Автор: TP@MB@Y 14.7.2005, 00:00 | ||
| Diesel Draft Вы пробовали юзать ф-ии Seg() и Ofs()? Адрес переменной M будет выглядеть так: "Seg(M):Ofs(M)"
|