SSブログ

[DELPHI]QuickReportプレビュー時にエラーが発生する。 [コンピューター]

ほぼ自分用メモ。

これはDelphi4までのバージョンのQuick Reportで発生する障害です。

QuickReportで作成したフォームのPreview時に以下のエラーメッセージが表示され、プレビュー画面が表示できないという不具合があります。

EAccessViolationがモジュールhoge.exeのxxxxxxxxで発生しました。アドレスxxxxxxxxでアドレスxxxxxxxxに対する書き込み違反がおきました。

http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200404/200404_04040043.html


上記ページに紹介されているサイトに解決方法が載って"いた"ようなのですが、現在はすでに見当たらず。。。

結局NiftyのFDelphiフォーラムの過去ログを漁ってみました。

http://www2.big.or.jp/~osamu/Delphi/MLBrowser.htm
ここで漁れる。

DELPHI4なんて前世紀のツールを使う機会はもうほとんどないと思いますが、このご時世お客さんがシステムの延命措置を求めてくることも考えられます。お守りだと思ってDELPHI-MLの過去ログくらいはダウンロードしておいた方がよさそうですね。。。

原因と対策は以下の通り。

Date: Tue, 27 Mar 2001 15:53:47 +0900
Subject: [Delphi:55824] Re: EFCreateError クラスの例外

こんにちは。

NiftyのFDelphiフォーラムで以下のように解決された人がいます。
nifty:FDelphi/MES/07/19497 で報告されていました。
ほとんど転載です(;^_^A~~

> 【問題】
> Windows2000の環境で QuickReport2.0kのプレビューを行うと、
> 印刷結果が2ページ以上になる場合、
> 『ファイル□□が作成できません』
> というエラーが発生して、プレビューが出来ません。
>
> 【原因】
> これは、QR側でプレビューする際に作る一時ファイル(QRPxx.tmp)
> をGetTempPath()で取得するディレクトリに作ろうとするのですが、
> QR内部で取得するテンポラリディレクトリ用の文字列が短いため
> (たぶん、28文字分くらいしか持っていない)
^^^^^^^^^30文字しかとってきていません
> Windows2000の環境だとエラーになってしまうのが原因のようです。
> Windows2000でのテンポラリディレクトリは大抵、
> "C:\Documents and Settings\UserName\Local Settings\Temp"
> のように長いんですね。
>
> 【対策】
> QuSoftのホームページからダウンロードしたFAQの中では、
> 該当箇所のソースを直せと書いてあるようなのですが(英文苦手)
> ソースコードを持っていない私はしょうがないので
> 環境変数 TMP を設定することで対処しました。。。
>
> たとえば、メインフォームのOnCreateなどで
> var
> s:string;
> buf:array[0..255] of char;
> begin
> GetTempPath(SizeOf(buf),buf);
> s:=StrPas(buf);
> if Length(s)>28 then begin
> GetWindowsDirectory(buf,SizeOf(buf));
> s:=StrPas(buf)+'\Temp'; //たぶんs='C:\WINNT\Temp'
> SetEnvironmentVariable('TMP',PChar(s));
> end;
> end;
> のような感じでしょうか。


一番手っ取り早い方法は[TEMP]ディレクトリのパスを指定しなおして短くしてしまう(C:\TEMPとか)ことですね。小規模オフィスに導入してる場合には一番時間がかからない方法です。でも一般に配布するようなソフトウェアだとそうもいきませんよね。参考にしてください。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました