1

Delphiで画像をOCRするためにNicomsoft OCRライブラリを使用しています。それは私のタスクに適しており、Delphi ユニット ラッパーを備えているため、Delphi で簡単に使用できます。ただし、一部の OCR 関数に空の文字列をパラメータ値として渡すと、Delphi デバッガに「Range Error」メッセージが表示されます。ラッパー コードを確認したところ、DLL ライブラリ関数はパラメーターとして PWideChars を受け入れますが、ラッパーは WideString を受け入れます。unit-wrapper の内部には、次の変換があります。

function CallSomeOCRFunction(a: WideString);
var b: PWideChar;
begin
  b := @a[1];
  CallSomeDLLFunction(b); //passing "b" to DLL function that accepts PWideChar
  //.....

私はいくつかの調査を行い、多くの FAQ がそのような変換を提供していることを発見しました

「a」が空の文字列でない場合は機能しますが、空の文字列の場合は「Range」エラーが発生します。空の文字列であっても、WideString 変数の最初の文字へのポインターを正しく取得するにはどうすればよいですか? 私が理解している限り、文字列が空の場合でも、ゼロ文字が含まれている必要があり、PWideChar 変数はそれを指している必要があります。

4

1 に答える 1

2

ドキュメントPWideChar()の説明に従ってキャストを使用します。あなたの場合は次のようになります。

CallSomeDLLFunction(PWideChar(a));
于 2015-04-09T09:06:46.297 に答える