Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Еще вопросик по Символам


Steep ©   (2006-10-20 10:26:00) 

Не подскажете что это за символы и зачем они нужны
^ @
Часто вижу их, но зачем не знаю...


Ketmar   (2006-10-21 17:57:00) [1]

>[17] Пользователь 21-Oct-2006, 12:07
изыди. не мешай флудить.


Пользователь   (2006-10-21 12:07:00) [2]

The @ operator returns the address of a variable, or of a function, procedure, or method; that is, @ constructs a pointer to its operand. For more information about pointers, see Pointers and pointer types. The following rules apply to @.

- If X is a variable, @X returns the address of X. (Special rules apply when X is a procedural variable; see Procedural types in statements and expressions.) The type of @X is Pointer if the default {$T–} compiler directive is in effect. In the {$T+} state, @X is of type ^T, where T is the type of X.
- If F is a routine (a function or procedure), @F returns F’s entry point. The type of @F is always Pointer.
- When @ is applied to a method defined in a class, the method identifier must be qualified with the class name. For example, @TMyClass.DoSomething, points to the DoSomething method of TMyClass. For more information about classes and methods, see Classes and objects.


guav   (2006-10-20 22:29:00) [3]


> [14] Ketmar ©   (20.10.06 21:08)


> таки запись по взятому адресу, ага?

Если запись повзятому адресу, следовало бы разыменование, а т.к. его нет получается запись взятого адреса. Сначала его взяли, а потом записали вместо взятого что-то ещё - спрашивается зачем брали.

Нет, @ здесь не взятие адреса, а приведение типа.


TUser   (2006-10-20 22:26:00) [4]

А все-таки, что подразумевал Анатолий? В контексте [8], имхо, Ketmar прав.


Ketmar   (2006-10-20 21:08:00) [5]

>[13] guav(c) 20-Oct-2006, 20:26
>0. Без этого оператора код компилится и работает точно так
>же.
syntactic sugar. такой же, как необязательность "^".

>1. Что бы по-твоему означало выражение со взятием адреса в
>левой части оператора присвоения ?
таки запись по взятому адресу, ага?

>2. Зачем по-товему здесь брать адрес переменной-указателя,
>если требуется изменить то куда указатель указывает, т.е.
>значение указателя.
ты можешь не верить, но запись по "адресу переменной-указателя" модифицирует эту переменную.


guav   (2006-10-20 20:26:00) [6]


> но "арименение как указатель" -- это разве (в данном случае)
> не взятие адреса?

Нет.
0. Без этого оператора код компилится и работает точно так же.
1. Что бы по-твоему означало выражение со взятием адреса в левойчасти оператора присвоения ?
2. Зачем по-товему здесь брать адрес переменной-указателя, если требуется изменить то куда указатель указывает, т.е. значениеуказателя.


> фраза ужасная.

Да и код не шибко хороший, особенно после того как убрать собаку. Такой же запутанный :-)


Ketmar   (2006-10-20 20:09:00) [7]

>[11] guav(c) 20-Oct-2006, 20:00
>Оно просто указывает применение указателя на функцию как
>указатель а не как вызов функции.
фраза ужасная. но "арименение как указатель" -- это разве (в данном случае) не взятие адреса?


guav   (2006-10-20 20:00:00) [8]


> а зачем тогда оно там, и что оно там делает?

Да незачем ! Убрал и всё равно работает.

Оно просто указывает применение указателя на функцию как указатель а не как вызов функции.


Ученик чародея.   (2006-10-20 19:59:00) [9]

>> http://diamail.com.ua/cgi-bin/annot.cgi?id=1015

И только после этого садится за Delphi с книжкой кого-то более серьезного.


Ketmar   (2006-10-20 19:49:00) [10]

>[8] guav(c) 20-Oct-2006, 19:44
>Здесь он не берёт адрес переменной EnterReaderModeHelper.
да? точно-точно? а зачем тогда оно там, и что оно там делает?


guav   (2006-10-20 19:44:00) [11]


> [6] Anatoly Podgoretsky ©   (20.10.06 12:19)
> Со вторым все одназначно, это оператор взятия адреса,

Не всегда :-)
function EnterReaderModeHelper(Wnd: HWND): BOOL; stdcall;
var EnterReaderModeHelper: function(Wnd: HWND): BOOL; stdcall;
begin
 @EnterReaderModeHelper := GetProcAddress(
   GetModuleHandle(user32), 'EnterReaderModeHelper');
 if Assigned(EnterReaderModeHelper) then
   Result := EnterReaderModeHelper(Wnd)
 else
   Result := False;
end;

Здесь он не берёт адрес переменной EnterReaderModeHelper.


Джо   (2006-10-20 12:51:00) [12]

> [4] Steep ©   (20.10.06 10:41)
> бррррррррр ;)
> а можете написать про все попроще..

Купи книгу по языку Делфи. Читай. И да воздастся :)


Anatoly Podgoretsky   (2006-10-20 12:19:00) [13]

Со вторым все одназначно, это оператор взятия адреса, а вот первый настоящий многостаточник, но чаще всего разъименование.
Ответ зависит от того, в каком контексте ты это встречал.


SergKon   (2006-10-20 10:55:00) [14]

1.2E+15


Steep   (2006-10-20 10:41:00) [15]


> Экспоненциальная часть вещественных констант обозначается
> буквой E

бррррррррр ;)

а можете написать про все попроще..


DrPass   (2006-10-20 10:39:00) [16]


> Не подскажете что это за символы и зачем они нужны

Смотря в каком контексте. Если @#$, то это не обязательно взятие адреса.

> еще кажется в константах так можно степень указать

Если и можно, то не в Паскале. Экспоненциальная часть вещественных констант обозначается буквой E


StriderMan   (2006-10-20 10:32:00) [17]


> Zeqfreed ©   (20.10.06 10:29) [1]
> ^ - разыменование указателя/объявление типа-указателя.

еще кажется в константах так можно степень указать.


Zeqfreed   (2006-10-20 10:29:00) [18]

Если не знаешь, лучше не трогай :)
@ - унарный оператор взятия адреса.
^ - разыменование указателя/объявление типа-указателя.


Наверх

Титульная страница Поиск, карта сайта Написать письмо