ВУЗ:
Составители:
11
лишь небольшой фрагмент описания, содержащий только четыре типа). Други-
ми наследниками AutoCmd являются классы PropertyGet, Procedure и
Function, предназначенные для аналогичного использование в качестве пара-
метра Exec. PropertyGet – для считывания значения свойства, Procedure и
Function – для вызова методов диспинтерфейса. Например , перевод фрагмен-
та рассматриваемого примера на Object Pascal Delphi:
S.TypeText('Hello, World!'#13);
PosBeg := S.Start;
выглядит на С ++ следующим образом:
S.Exec(Procedure("TypeText")<<WideString("Hello, World!\n"));
PosBeg = S.Exec(PropertyGet("Start"));
Здесь для надежности использовано явное преобразование к рассмотрен-
ному ранее типу WideString. Другой способ «перевода» , с использованием
шаблонов методов Variant, выглядит так :
S.OleProcedure("TypeText",WideString("Hello, World!\n"));
PosBeg=S.OlePropertyGet("Start");
Поясним работу данного описания. Методы OleProcedure,
OleFunction, OlePropertyGet и OlePropertySet класса Variant описаны
с использованием механизма шаблонов. Это дает возможность использовать
при их вызовах параметры произвольных типов. Более того, эти шаблоны пере-
гружены , что позволяет передавать произвольное количество параметров.
Можно убедиться, рассматривая соответствующий заголовочный файл, что до-
пустимо использовать вплоть до десяти параметров (помимо основного, обяза-
тельного параметра, означающего имя метода диспинтерфейса). В нашем при-
мере на Delphi мы задавали диапазон для преобразования его в таблицу :
D.Range(PosBeg,PosEnd)
Два способа написания этого на C++:
D.OleFunction("Range",PosBeg,PosEnd)
D.Exec(Function("Range")<<PosBeg<<PosEnd)
Как видно, использование шаблонов методов Variant в большинстве
случаев более наглядно. Однако метод Exec незаменим , если требуется пере-
дать именованные параметры. В нашем примере вызов метода
ConvertToTable использует именованные параметры :
ConvertToTable(Separator:=#9,
AutoFit:=True,AutoFitBehavior:=1,DefaultTableBehavior:=1)
Реализация такого вызова на C++ выглядит так :
11 лишь небольшой фрагмент описания, содержащий только четыре типа). Други- ми наследниками AutoCmd являются классы PropertyGet , Procedure и Function , предназначенные для аналогичного использование в качестве пара- метра Exec. PropertyGet – для считывания значения свойства, Procedure и Function – для вызова методов диспинтерфейса. Например, перевод фрагмен- та рассматриваемого примера на Object Pascal Delphi: S.TypeText('Hello, World!'#13); PosBeg := S.Start; выглядит на С++ следующим образом: S.Exec(Procedure("TypeText")<
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »