const S_NONE = $00000002; type TSendResult = ( srNoExceptionInfo = S_NONE, // = $00000002 srUnsupportedSender = E_NOINTERFACE // = $80004002 ); procedure TForm1.Button1Click(Sender: TObject); var SR: TSendResult; begin SR := srUnsupportedSender; Assert(Ord(SR) = Ord(E_NOINTERFACE)); end;Правильный ответ: НЕТ.
SR
будет равен srNoExceptionInfo
.Крепче всего спит тот, кто не подписан на QC.
P.S. По поводу задачки №17 - там ещё ответы время от времени сыплются, поэтому пока ничего не публикую, самому интересно читать...
> По поводу задачки №17 - там ещё ответы время от времени сыплются
ОтветитьУдалитьWTF? За последний месяц там отписалась всего пара неадекватов про C# да цикл с i: word. Дело конечно ваше, можете хоть через год ответы выкладывать, только некрасиво получается, когда озвучивается срок в две недели, а потом тишина на два месяца...
Никакого ужаса: значение E_NOINTERFACE не влазит в тип Integer ($7FFFFFFF) вот оно и глючит. У меня при присвоении srUnsupportedSender значения $80000000 и попытке записать его в SR, оказывается [b](out of bound) 0[/b].
ОтветитьУдалить> значения $80000000
ОтветитьУдалитьТАм ещё 4-ка в середине - ей-то куда деваться?
+ для XE2: компилятор для типа подобного TSendResult не создает RTTI :-(
ОтветитьУдалитьА можно описать что д2007 генерит? Почему такое происходит? А то не у всех же д2007 стоит, а знать такую особенность не помешает.
ОтветитьУдалитьD2007 и ниже считает SizeOf(TSendResult) = 1 со всеми вытекающими. D2009+ - полёт нормальный.
ОтветитьУдалить