1

私は、quickreports 5 を使用していくつかのレポートを生成するプログラムを持っています。プログラムは、常に 1 台の特定の PC でコンパイルされています。他のマシンでプログラムを開発したいのですが、クイックレポートに大きな問題があります。

新しいマシンに同じバージョンの QuickReports (5.0.2) をインストールしましたが、プログラムを動作させることができません。新しいマシンでクイック レポートを含むフォームを開くとすぐに、次のエラーが表示されます。

FrmMyReport.PreviewLeft の読み取りエラー: プロパティ PreviewLeft が存在しません。...

プログラムをコンパイルできますが、クイックレポートを含むフォームを使用するとすぐに、次の例外が発生します。

プロジェクト MyProject.exe で例外クラス EReadError が発生し、「Property PreviewLeft が存在しません」というメッセージが表示されました。

ここで休憩すると で止まりTCustomQuickRep.Createます。デバッグ後、それはTCustomQuickRep.SetBandValuesat the Line で発生するようif assigned(FPage) and assigned(FBandList) andです。

また、コンパイル-インストールを使用して、パッケージの手動インストールを試み、可能なすべてのディレクトリをライブラリパスに追加しました。何も機能しません。正常に動作する古いマシンと新しいマシンの違いはわかりません。

誰かがこの問題を解決するのを手伝ってくれることを願っています。このアプリケーションを新しいマシンで開発できることは非常に重要です。助けてくれてありがとう。

4

2 に答える 2

1

古いマシンと新しいマシンに同じバージョンの QuickReport がインストールされていると確信していますか? 通常、エラー メッセージは、使用しているバージョンよりも新しいバージョンで作成された DFM のコンポーネントの説明がある場合に発生するためです。

  • コンポーネントのバージョン x は新しいプロパティを導入しますPreviewLeft
  • バージョン x で開発している場合、プロパティは DFM に保存されます。
  • プロパティを持たないコンポーネント バージョン x-1 でプロジェクトをコンパイル/開くと、コンポーネントの古いバージョンでプロパティが見つからないため、ストリーミング システムで例外が発生します。

新しいバージョンが (廃止された) プロパティを削除する可能性もありますが、その場合、コンポーネント ベンダーは通常、ストリーミング中にプロパティを静かに無視するように注意するため、例外は発生しません。したがって、新しいマシンに古いバージョンの QuickReport がインストールされているのではないかと思います。私自身は QuickReport を使用していないので、PreviewLeftプロパティがいつ導入されたのか、そのために何が必要なのかわかりません...プレビュー ウィンドウの座標のままであれば、それを無視してきれいにしても無害だと思いますDFM から取得します。難しいのは、IDE でレポートを 1 つずつ開き、エラー dlg で [無視] をクリックすることです。簡単な方法は、何らかのツールを使用することです。つまり、Jediにはそのようなツールがあると思います。

更新 Jedi ツールは DFMcleaner と呼ばjvcl\devtools\DFMCleanerれ、Delphi 5 インストールのディレクトリにあります。

于 2011-09-06T10:45:21.177 に答える
0

一部の機能を追加/修正するためにサードパーティのライブラリをハッキング/拡張した状況に遭遇しました。次に、新しいPCに移動して(またはベンダーからアップデートをダウンロードして)、新しいプロパティを失います。このようなファウルアップの合間には数ヶ月から数年かかることが多いので、私は通常それを追跡するのに半日を失い、それからそれは「D'OH!Deja-vualloveragain」です。次のようなプロパティを実際に追加したコンポーネントが1つあります。

property ThisLibraryWontCompileUntilItsBeenHackedByChris : boolean;

コンパイラがそれで止まるとき、私はどこを見るべきかを知っています。

クリス

于 2011-09-06T13:51:09.587 に答える