При просмотре System.Zip(Delphi XE2), чтобы увидеть, как это работает, я нашел эту функцию:
procedure VerifyWrite(Stream: TStream; var Buffer; Count: Integer);
begin
if Stream.Write(Buffer, Count) <> Count then
raise EZipException.CreateRes(@SZipErrorWrite) at ReturnAddress;
end;
Это часть at ReturnAddress
, которая меня озадачивает.
Я не знал, что at
является допустимым ключевым словом (синтаксический маркер тоже не распознает его).
В соответствии с IDE, объявленным как System.ReturnAddress
, но я могу найти его только как метку где-то в коде (asm) procedure _HandleAnyException;
. Системный блок полон ссылок на него, хотя.
Итак, я хотел бы знать следующее:
- Что такое
ReturnAddress
? - Что именно делает
Raise Exception.Create ... at ReturnAddress
?
Бонусные баллы, если вы можете дать реальный пример того, где это будет полезной конструкцией, или если вы можете советоваться с ее использованием.