Los ejemplos de C# se aplican a Windows. Los ejemplos de C++ se aplican a todos los sistemas operativos compatibles.
Tipos de propiedades en Linux y macOS
Tipos de propiedades en Linux y macOS
Para C++, una propiedad es un par de métodos (
get y put para las propiedades de lectura y escritura) o un único método get (para las propiedades de solo lectura).Las propiedades de ABBYY FineReader Engine pueden ser de los siguientes tipos:- VARIANT_BOOL (con dos valores: VARIANT_TRUE o VARIANT_FALSE)
- int
- double
- BSTR, un puntero a una cadena Unicode. El valor cero especifica una cadena vacía.
- __int64
- HANDLE*
- interfaz derivada de IUnknown
- enum
Tipos de propiedades en Windows
Tipos de propiedades en Windows
Los usuarios de C# y Visual Basic están familiarizados con el concepto de propiedad.Para un usuario de C++, una propiedad es un par de métodos (
get y put para las propiedades de lectura y escritura) o un único método get (para las propiedades de solo lectura).Sin embargo, la característica “Native COM support” de Microsoft C++ hace que la forma de manejar las propiedades se parezca más a la que se usa en C#.Las propiedades de ABBYY FineReader Engine pueden ser de los siguientes tipos:| IDL | C++ | C# | Visual Basic .NET |
|---|---|---|---|
| VARIANT_BOOL (VARIANT_TRUE o VARIANT_FALSE) | VARIANT_BOOL (VARIANT_TRUE o VARIANT_FALSE) | bool (true o false) | Boolean (True or False) |
| int | int | int | Integer |
| double | double | double | Double |
| BSTR, un puntero a una cadena Unicode. El valor cero especifica una cadena vacía. | BSTR | string | String |
| __int64 | __int64 | Int64 | Int64 |
| HANDLE* | void* | IntPtr | IntPtr |
| interfaz derivada de IUnknown | interfaz derivada de IUnknown | object | Object |
| enum | enum | enum | Enum |
Trabajar con propiedades simples
Trabajar con propiedades simples
Usaremos una propiedad Boolean como ejemplo de cómo se usan las propiedades simples. La propiedad se describe en la biblioteca de tipos de la siguiente manera:Si la biblioteca de tipos solo define el método “get” para una propiedad simple, esta propiedad se denomina de solo lectura. El usuario no puede cambiar su valor; solo puede acceder a él para “leerlo”.Un usuario de C# maneja una propiedad simple de la siguiente manera:Por otro lado, un usuario de C++ utiliza dos métodos para trabajar con esta propiedad. Estos métodos tienen los prefijos
get_ y put_. El código correspondiente en C++ debería tener el siguiente aspecto:Sin embargo, “Native COM support” en Windows simplifica el procedimiento, y el código correspondiente debería tener el siguiente aspecto:Uso de propiedades string
Uso de propiedades string
Trabajar con propiedades string es muy similar a trabajar con propiedades simples, pero tiene sus particularidades. Un usuario de C++ que trabaje con propiedades string debe liberar las cadenas que se pasan a los métodos set, así como las que devuelven los métodos get.Un usuario de C++ trabaja con esta propiedad de la siguiente manera:Windows:Linux:
- En Windows, esto se hace automáticamente en C#, Visual Basic y en C++ con Native COM support.
- En Linux, use las funciones FREngineAllocString y FREngineFreeString para asignar y liberar la memoria de las cadenas.
Uso de propiedades de objeto
Uso de propiedades de objeto
Un usuario de C++ dirá que los parámetros de los métodos “get” de las propiedades de objeto son punteros al puntero de interfaz de un objeto. Como las interfaces de los objetos se derivan de IUnknown, pueden pasarse como punteros IUnknown a las propiedades o métodos que usan objetos de varios tipos como parámetros de entrada o salida (aunque puede obtener la interfaz que necesita llamando al método QueryInterface).Un método “put” para una propiedad de objeto, si existe, admite clear put, descrito por la palabra clave propput en la biblioteca de tipos. Esto significa que el objeto se copia, en lugar de pasar un puntero a la interfaz de un objeto existente.Supongamos de nuevo que el objeto MyObject admite la propiedad MyObjectProperty, que hace referencia a un objeto de tipo MyChildObject.Un usuario de C++ escribirá este código de la siguiente manera:Tenga en cuenta que en C++ debe llamar al método Release para un objeto obtenido mediante una propiedad. Native COM support en Windows llama automáticamente a los métodos AddRef y Release mediante punteros automáticos.
Trabajar con propiedades de objeto de solo lectura
ILayout::Blocks, que se representa mediante una colección de solo lectura:
