![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Еще вопросик по Символам
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]Если не знаешь, лучше не трогай :)
@ - унарный оператор взятия адреса.
^ - разыменование указателя/объявление типа-указателя.