2

コンテキストについて詳しく説明するために、これを再現する方法を説明します。

  • Delphi 7(ただし、おそらくより新しいバージョンも)
  • タイプライブラリ「MicrosoftVBScript正規表現5.5」のインポート

このコードを中心にプログラムを作成します。

var
  re:RegExp;
try
  re:=CoRegExp.Create;
  re.Pattern:='(';//is an invalid regex, but see below
  re.Test('');
except
  on e:Exception do
    Caption:=e.ClassName+' '+e.Message;
end;

これは例外をスローしますEOleError OLE error 800A139C

これは、SysErrorMessageがこのコードで空の文字列を返し、EOleSysErrorコンストラクターがデフォルトでSOleErrorリソース文字列を使用して何かを返すためです。

より良いエラーの説明を取得するためのSysErrorMessageの代わりにwinapiはありますか?少しグーグルすると、コードは「括弧がありません」エラーを表しますが、システムから(ローカライズされた)説明を取得する方法がある場合は、次の列挙を追加するよりも、それを使用することをお勧めします私のプロジェクトのエラー記述定数。

4

1 に答える 1

2

これはCOMエラーです。テキストによる説明を取得するには、GetErrorInfoを呼び出してから、IErrorInfo.GetDescriptionを呼び出します。しかし、有用なものが何も返ってこなくても驚かないでください。

于 2012-04-05T22:48:54.790 に答える