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

Вниз

Как работать с адресом?   Найти похожие ветки 

 
Mozaika_81   (2006-04-03 11:06) [0]

Добрый день! Вот пытаюсь разобрать вчерашнюю лекцию про адреса...
Сразу скаже, мало ясно, но хотелось бы при помощи Настоящих Мастеров разобраться в теме с мааааааленьким примерчиком и пояснением к нему :) Буду благодарна за любую подсказку.
p.s. Про F1 и Help не предлагать - СПРАВКА БИТАЯ :(((


 
Ega23 ©   (2006-04-03 11:08) [1]


> p.s. Про F1 и Help не предлагать - СПРАВКА БИТАЯ :(((
>


Лечи, ибо без этого - никуда.


 
sniknik ©   (2006-04-03 11:14) [2]

> но хотелось бы при помощи Настоящих Мастеров
настоящие мастера мелочами не занимаются... отвлекаясь на всякую фигню мастером не станеш. (вот "развеятся" и потрепатся, можно.)

=======================================
если к вам офис пришол посетитель, и непременно требует "Самого Главного"... гоните его прочь, это наверняка сумашедший... © ктото из великих.


 
Mozaika_81   (2006-04-03 11:15) [3]

Лечи, ибо без этого - никуда

Эх, легко сказать! Город маленький и бедный, нормальных дисков почти нет.
Третий диск по дельфи уже купила. И в который раз установка дельфи с ошибками. На одном вообще справки и даже Demo нету :(

Ребята, мне хотя бы простой маленький пример, а остальное я может и схвачу. Только укажите, куда мне топать :)


 
balepa ©   (2006-04-03 11:27) [4]

А про какие адреса ?
А топать надо в др. город где есть нормальная Delphi


 
Mozaika_81   (2006-04-03 11:30) [5]

А про какие адреса ?

Ну народ....
Про pointer (или ^).

А топать надо в др. город где есть нормальная Delphi

А денег дашь на поезд туда и обратно?


 
Плохиш ©   (2006-04-03 11:35) [6]


> Mozaika_81   (03.04.06 11:06)  
> Добрый день! Вот пытаюсь разобрать вчерашнюю лекцию про
> адреса...
> Сразу скаже, мало ясно

Вот, препод - гад! Ни лекцию прочитать, ни на вопросы не отвечает. Куды беднаму стьюденту податьси?


 
Ega23 ©   (2006-04-03 11:36) [7]


> Про pointer (или ^).


А что с ними не ясно?


 
Mozaika_81   (2006-04-03 11:40) [8]

А что с ними не ясно?

Ega23! Прошу тебя помоги!
Мне не понять, как работать! Ну хотя бы как сослаться и для чего это нужно? А на счет бедности... такова жизнь :(


 
balepa ©   (2006-04-03 11:40) [9]


> Mozaika_81   (03.04.06 11:30) [5]
> А про какие адреса ?
>
> Ну народ....
> Про pointer (или ^).

Молчала бы уж.. Еще бывают адреса переменных, процедур, функций и методов.(@)
А чего непонятно ?


> А топать надо в др. город где есть нормальная Delphi
> А денег дашь на поезд туда и обратно?

А че ближайший город Нью-Йорк. Можно в инете книжку поискать.


 
Ega23 ©   (2006-04-03 11:43) [10]

Ты представляешь себе, сколько придётся здесь писать, чтобы объяснить, что такое адрес, что такое указатель, что такое указатель на указатель и как со всем этим работать?
И поверь, никто этим заниматься не будет, т.к. все люди весьма занятые.
Ты можешь получить конкретный ответ на конкретный вопрос. А на вопрос, типа

> Мне не понять, как работать! Ну хотя бы как сослаться и
> для чего это нужно?

рекомендую обратиться к лектору. Он объяснит. У него работа такая


 
Mozaika_81   (2006-04-03 11:45) [11]

Еще бывают адреса переменных, процедур, функций и методов.(@)
А чего непонятно ?


Вот про это я пытаюсь что-нить узнать :)

Да и молчу.... Такой я человек.

А че ближайший город Нью-Йорк. Можно в инете книжку поискать

Ищу - не найду..

Я уже говорила, что денег нету. А инет это папа исключение сделал (пузырек мужикам в АСУ и все дела) но на один день, что очень огорчает.


 
Плохиш ©   (2006-04-03 11:45) [12]


> Mozaika_81   (03.04.06 11:06)  
> p.s. Про F1 и Help не предлагать - СПРАВКА БИТАЯ :(((

Без проблем, на не битую, прочитаешь продолжение получишь.

Das folgende Beispiel zeigt, wie Zeiger funktionieren:

1    var
2      X, Y: Integer;   // X und Y sind Integer-Variablen
3      P: ^Integer;     // P zeigt auf eine Integer
4    begin
5      X := 17;         // X einen Wert zuweisen
6      P := @X;         // Adresse von X an P zuweisen
7      Y := P^;         // P dereferenzieren, Ergebnis Y zuweisen
8    end;

In Zeile 2 werden X und Y als Integer-Variablen deklariert. Zeile 3 deklariert P als Zeiger auf einen Integer-Wert. P kann also auf die Position von X oder Y zeigen. In Zeile 5 wird X ein Wert zugewiesen. Zeile 6 weist P die Adresse von X (angegeben durch @X) zu. Schließlich wird in Zeile 7 der Wert an der Adresse ermittelt, auf die P zeigt (angegeben durch ^P), und Y zugewiesen. Nach der Ausführung dieses Programms haben X und Y denselben Wert (17).

Der Operator @ wird hier verwendet, um die Adresse einer Variablen zu ermitteln. Sie können diesen Operator aber auch für Funktionen und Prozeduren einsetzen. Weitere Informationen hierzu finden Sie unter Der Operator @ und Prozedurale Typen in Anweisungen und Ausdrücken.

Wie das obige Beispiel zeigt, erfüllt das Symbol ^ zwei Funktionen. Es kann vor einem Typbezeichner stehen. Beispiel:

^Typname

In diesem Fall bezeichnet das Symbol einen Typ, der Zeiger auf Variablen des Typs Typname darstellt. Das Symbol ^ kann aber auch auf eine Zeigervariable folgen:

Zeiger^

In diesem Fall dereferenziert das Symbol den Zeiger, liefert also den Wert an der Speicheradresse, die der Zeiger angibt.


 
Gydvin ©   (2006-04-03 11:50) [13]

balepa ©   (03.04.06 11:40) [9]
Ну зачем так с девушкой.

Mozaika_81
Сходи сюда, может найдешь что тебе нужно
http://www.intuit.ru/department/pl/plpascal/10/


 
Mozaika_81   (2006-04-03 11:56) [14]

Сходи сюда, может найдешь что тебе нужно

Хочу сказать БОЛЬШОЕ СПАСИБО за помощь!!!!!!!
То чно нужно, то что искала!!!
Сейчас все перепишу!!!

ОЧЕНЬ-приОЧЕНЬ БЛАГОДПРНА Gydvin"у за ОЧЕНЬ хорошую ссылку нужной мне теме! :)))))))))))))))))))))


 
Gydvin ©   (2006-04-03 12:02) [15]

Mozaika_81   (03.04.06 11:56) [14]

Вообще гугл реально рулит))


 
Юрий Зотов ©   (2006-04-03 12:20) [16]

> Mozaika_81

Все очень просто. Когда программа работает, ее машинный код и данные, которые он обрабатывает, расположены в памяти. Память можно представить, как непрерывную цепочку байтов и адрес в памяти - это просто номер байта в этой цепочке, считая от нуля. По этому адресу (т.е., в байте с этим номером) могут быть расположены либо код программы, либо ее данные.

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

Пусть, например, есть такой фрагмент программы:

type
 TProc: procedure; // Это тип процедуры без параметров.

var
 I: Integer;     // Эта переменная может содержать целое число.
 PI: ^Integer; // А эта переменная может содержать АДРЕС целого числа.
 PP: TProc;     // А это будет адрес начала кода процедуры типа TProc

procedure Proc1;
begin
 I := 3;     // Теперь I равно 3;
 PI := @I; // Теперь PI содержит адрес I
 PI^ := 5; // А теперь I равно уже 5;
end;

procedure Proc2;
begin
 PI^ := I + 7; // Число, расположенное по адресу, который хранится в PI,
                   // будет сдержать сумму I и 7.
end;

begin
 PP := @Proc1; // Теперь PP хранит адрес Proc1;
 PP;                // Вызвали Proc1 и I стало равно 5, а PI хранит адрес I;
 PP := @Proc2; // А теперь PP уже хранит адрес Proc2;
 PP;                // Вызвали Proc2 и I стало равно 12;


Вот и вся наука. Для завершения темы разберитесь с New-Dispose и GetMem-FreeMem.



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

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

Наверх




Память: 0.51 MB
Время: 0.941 c
4-1138113016
Ландграф Павел
2006-01-24 17:30
2006.04.16
Координаты компонента относительно экрана


2-1144099736
ctudent
2006-04-04 01:28
2006.04.16
TreeView+База данных


2-1143693035
Sw
2006-03-30 08:30
2006.04.16
DBGrid


2-1143782019
Рафик
2006-03-31 09:13
2006.04.16
Char в Integer


15-1143125776
ZeFiR
2006-03-23 17:56
2006.04.16
Преобразование картинки в ASCII символы