Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.04 c
11-1124641394
hunn
2005-08-21 20:23
2006.04.16
изменения в ListView


15-1143267479
kilonet
2006-03-25 09:17
2006.04.16
Как обмениваться большими файлами


15-1143294974
Ehh
2006-03-25 16:56
2006.04.16
Перспективность софтерных компаний


2-1142940985
Ksenom
2006-03-21 14:36
2006.04.16
Не так всё прсто TIdPOP3


2-1143817834
Malik
2006-03-31 19:10
2006.04.16
Автозагрузка самой программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский