0

古い Delphi アプリケーション (Borland Delphi 6 でビルド) をバージョン 13 の Crystal レポートに移行したいと考えていました。SAP が投稿した do-it- yourselfガイドに記載されている手順を使用する前に、バージョン 10.2 にアップグレードされていました。

同じ変更を再度コミットし、10.2 レジストリ キーから 13 レジストリ キーを指し、VCL のバージョン チェックを更新しました。VCL コンポーネントは CRPE32.dll を適切な場所から正常にプルするようになりましたが、pvlocal-1-0.dll や local_fallback-4-0.dll などの関連する Dll ファイルを見つけることができません。すべての Dll をアプリケーションと同じフォルダに移動すると、それらは見つかりますが、16 個すべての Dll とライセンス ファイルをアプリケーションと一緒にパックする必要があるかどうかわかりません。

問題を次のメソッドのLoadLibrary呼び出しに絞り込みました。残念ながら、この問題を解決する方法に関する情報を見つけることができず、コミュニティがそれを修正する方法を知っていることを望んでいました:

     function TCrpeEngine.PELoadCrpeDll(const CrpeLocation: string) : Bool;
var
  s1,s2 : string;
begin
  Result := False;
  s1 := Trim(CrpeLocation);
  CRDEngine := LoadLibrary(PChar(s1));
  {If an error occured, set the flag}
  if (CRDEngine < HINSTANCE_ERROR) then
  begin
    CRDEngine := 0;
    s2 := SysErrorMessage(GetLastError);
    if Trim(s2) = '' then
      s1 := CRD_ERROR_LOADING + Chr(10) + 'Windows Error Number: ' + IntToStr(GetLastError)
    else
      s1 := CRD_ERROR_LOADING + Chr(10) +
        'Windows Error Number: ' + IntToStr(GetLastError) + ' - ' + Trim(s2);
    CRDEngineError(s1);
  end
  else
    Result := True;
end;
4

2 に答える 2

2

問題は、CRPE32.dll がロードされているが、他の DLL が検索パスにないため、どこにあるかがわからないことです。

いくつかのオプションがあります。

  1. DLL を格納するパスを使用してSetDLLDirectoryを呼び出すことができます。
  2. ファイルが配置されているディレクトリをシステム パスに追加します。
  3. 検索パスにすでに存在するディレクトリにファイルを追加します。
  4. ファイルを作業ディレクトリに追加します。
于 2013-08-06T17:16:46.380 に答える
-1

CR バージョン 13 > Delphi では使用できません。CR V13 は .NET

現在、Delphi XE2 で CR V13 を使用しています。C# または Delphi Prism を使用して .NET ラッパーを作成し、Delphi から呼び出す必要があります。

于 2013-08-06T17:57:52.597 に答える