C#-Beispiele gelten für Windows. C++-Beispiele gelten für alle unterstützten Betriebssysteme.
Eigenschaftstypen unter Linux und macOS
Eigenschaftstypen unter Linux und macOS
Für C++ ist eine Eigenschaft ein Methodenpaar (get und put für Lese-/Schreibeigenschaften) oder eine einzelne get-Methode (für Eigenschaften, die nur lesbar sind).Die Eigenschaften von ABBYY FineReader Engine können die folgenden Typen haben:
- VARIANT_BOOL (mit den beiden Werten VARIANT_TRUE oder VARIANT_FALSE)
- int
- double
- BSTR, ein Zeiger auf eine Unicode-Zeichenfolge. Der Nullwert steht für eine leere Zeichenfolge.
- __int64
- HANDLE*
- Von IUnknown abgeleitete Schnittstelle
- enum
Eigenschaftstypen unter Windows
Eigenschaftstypen unter Windows
C#- und Visual Basic-Benutzer sind mit dem Konzept von Eigenschaften vertraut.Für einen C++-Benutzer ist eine Eigenschaft ein Methodenpaar (get und put für Lese-/Schreibeigenschaften) oder eine einzelne get-Methode (für Eigenschaften, die nur lesbar sind).Die von Microsoft C++ bereitgestellte Funktion „Native COM support“ sorgt jedoch dafür, dass Eigenschaften eher so behandelt werden wie in C#.Die Eigenschaften von ABBYY FineReader Engine können die folgenden Typen haben:
| IDL | C++ | C# | Visual Basic .NET |
|---|---|---|---|
| VARIANT_BOOL (VARIANT_TRUE oder VARIANT_FALSE) | VARIANT_BOOL (VARIANT_TRUE oder VARIANT_FALSE) | bool (true oder false) | Boolean (True oder False) |
| int | int | int | Integer |
| double | double | double | Double |
| BSTR, ein Zeiger auf eine Unicode-Zeichenfolge. Der Nullwert steht für eine leere Zeichenfolge. | BSTR | string | String |
| __int64 | __int64 | Int64 | Int64 |
| HANDLE* | void* | IntPtr | IntPtr |
| Von IUnknown abgeleitete Schnittstelle | Von IUnknown abgeleitete Schnittstelle | object | Object |
| enum | enum | enum | Enum |
Arbeiten mit einfachen Eigenschaften
Arbeiten mit einfachen Eigenschaften
Anhand einer booleschen Eigenschaft zeigen wir, wie einfache Eigenschaften verwendet werden. Die Eigenschaft wird in der Typbibliothek wie folgt beschrieben:Wenn die Typbibliothek für eine einfache Eigenschaft nur die Methode „get“ definiert, wird diese Eigenschaft als nur lesbar bezeichnet. Ihr Wert kann vom Benutzer nicht geändert werden; es kann nur lesend darauf zugegriffen werden.Ein C#-Benutzer arbeitet mit einer einfachen Eigenschaft wie folgt:Ein C++-Benutzer hingegen verwendet zwei Methoden, um mit dieser Eigenschaft zu arbeiten. Diese Methoden haben die Präfixe get_ und put_. Der entsprechende C++-Code sollte wie folgt aussehen:Die Native COM-Unterstützung in Windows vereinfacht das Verfahren jedoch, und der entsprechende Code sollte wie folgt aussehen:
Arbeiten mit String-Eigenschaften
Arbeiten mit String-Eigenschaften
Das Arbeiten mit String-Eigenschaften ähnelt dem Arbeiten mit einfachen Eigenschaften, weist jedoch eigene Besonderheiten auf. Ein C++-Entwickler, der mit String-Eigenschaften arbeitet, muss die Strings freigeben, die an Set-Methoden übergeben werden, sowie jene, die von Get-Methoden zurückgegeben werden.Ein C++-Entwickler arbeitet mit dieser Eigenschaft wie folgt:Windows:Linux:
- Unter Windows geschieht dies automatisch in C#, Visual Basic und in C++ mit nativer COM-Unterstützung.
- Unter Linux verwenden Sie die Funktionen FREngineAllocString und FREngineFreeString, um den Speicher für die Strings zu reservieren und freizugeben.
Arbeiten mit Objekteigenschaften
Arbeiten mit Objekteigenschaften
Ein C++-Entwickler wird feststellen, dass die Parameter der „get”-Methoden von Objekteigenschaften Zeiger auf den Interface-Zeiger eines Objekts sind. Da die Interfaces der Objekte von IUnknown abgeleitet sind, können sie als IUnknown-Zeiger an Eigenschaften oder Methoden übergeben werden, die Objekte mehrerer Typen als Ein- oder Ausgabeparameter verwenden (das benötigte Interface lässt sich jedoch durch Aufruf der QueryInterface-Methode abrufen).Eine „put”-Methode für eine Objekteigenschaft, sofern vorhanden, unterstützt Clear Put, das durch das Schlüsselwort propput in der Typbibliothek beschrieben wird. Das bedeutet, dass das Objekt kopiert wird, anstatt einen Zeiger auf das Interface eines vorhandenen Objekts zu übergeben.Angenommen, das Objekt MyObject unterstützt die Eigenschaft MyObjectProperty, die auf ein Objekt vom Typ MyChildObject verweist.Ein C++-Entwickler schreibt diesen Code wie folgt:Beachten Sie, dass Sie in C++ die Release-Methode für ein über eine Eigenschaft erhaltenes Objekt aufrufen müssen. Die native COM-Unterstützung unter Windows ruft die Methoden AddRef und Release automatisch mithilfe von Auto-Zeigern auf.
