Re: И снова про optiona typing
От: Пётр Седов Россия  
Дата: 12.09.07 07:19
Оценка: :)))
Здравствуйте, Курилка.
Статическая и динамическая типизация в рамках одного языка давным давно есть в Delphi. В основном там статическая типизация, но для IDispatch динамическая типизация. (Через COM-интерфейс IDispatch, например, можно получить доступ к программному интерфейсу Excel-а.) Именно поэтому в Delphi работать с IDispatch гораздо удобнее, чем в C++.
uses
  ComObj;

procedure DynamicTyping;
var
  Excel: Variant; // хранит указатель на IDispatch
begin
  Excel := CreateOleObject('Excel.Application'); // Excel должен быть установлен на компьютере
  Excel.Visible := True; // вызов IDispatch::Invoke
  Excel.Nonsense; // вызов IDispatch::Invoke
  // компилируется, но будет run-time ошибка:
  //   класс исключения: EOleError
  //   сообщение: Method 'Nonsense' not supported by automation object.
end;

procedure StaticTyping(Form: TCustomForm);
begin
  Form.Visible := True; // вызов TCustomForm.SetVisible
  Form.Nonsense; // не компилируется
end;
Пётр Седов (ушёл с RSDN)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.