Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
33 / 114 ツリー <前へ | 次へ>

〔794〕ACFinder 071202版 kabe (07/12/02 20:43)

〔810〕終了時エラーの原因はフォルダー名の長さ? Hidemi Oya (08/01/15 16:16)
〔811〕Re:終了時エラーの原因はフォルダー名の長さ? Hidemi Oya (08/01/15 21:29)
〔812〕Re:終了時エラーの原因はフォルダー名の長さ? kabe (08/01/15 22:53)
〔813〕ランタイムエラーの方が原因究明しやすい Hidemi Oya (08/01/16 0:20)

〔810〕終了時エラーの原因はフォルダー名の長さ?
 Hidemi Oya WEB  (08/01/15 16:16)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

> ところで、ファイルメニューに項目が追加されたせいかどうかは分かりませんが、今まで終了時エラーが出てなかった事務所マシンでも、常に終了時エラーが出るようになってしまいました。
 公式サイトのコメントを元に、ちょっとチェックしてみたところ、acfinder.exe を置くフォルダー名の長さによって、終了時エラーが出るかどうかが変わるようです。

 事務所マシンでは、c:\xxx\acfinder.exe のように、第1階層下に exe ファイルを置いた場合、第1階層のフォルダー名が 12〜15 文字の場合はエラーが出ました。c:\xxx\yyy\acfinder.exe のように、第2階層下に exe ファイルを置いた場合、第1階層と第2階層のフォルダー名の総文字数(区切りの \ を除く)が 11〜14 文字の場合はエラーが出ます。同様に第3階層下に exe ファイルを置いた場合は、フォルダー名の総文字数(区切りの \ を除く)が 10〜13 文字の場合はエラーです。
 ってことで、おそらく、階層数に関わらず、ドライブ名とルート及びフォルダー末尾の \ を除いたパスの文字数が 12〜15 文字はダメってことのようです。ただし、今までの状況から考えると、文字数は環境によって異なる可能性が大です。

 また、こんな感じでエラーが出るってことは、たとえば acfinder.exe の起動パスを取得しているようなルーチンにバグが潜んでいる気配がしますね。

〔811〕Re:終了時エラーの原因はフォルダー名の長...
 Hidemi Oya WEB  (08/01/15 21:29)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>ただし、今までの状況から考えると、文字数は環境によって異なる可能性が大です。
 自宅マシンも事務所マシンと同じフォルダーに acfinder.exe を置いていますが、終了時エラーは出ません。

> また、こんな感じでエラーが出るってことは、たとえば acfinder.exe の起動パスを取得しているようなルーチンにバグが潜んでいる気配がしますね。
 以前いただいたソースを見る限り、Application.ExeName 変数と ExtractFilePath 関数で起動パスを抽出しているので、特に問題はなさそうです。

 ってことは、Delphi6 Personal のバグ? Update Pack 2 や RTL アップデート #2, #3 とかは適用してますよね?

〔812〕Re:終了時エラーの原因はフォルダー名の長...
 kabe WEB  (08/01/15 22:53)

引用なし
   >Hidemi Oyaさん

kabe です。

> RTL アップデート #2, #3 とかは適用してますよね?
これはやってなかったので、今アップデートしました。

…でも、終了時に EAccessViolation が出るようになり、前より悪化しました。
OOo出力のメニューを削除しても同じです。
ということで、いろいろ試行錯誤してみますが、少し時間がかかりそうです。

〔813〕ランタイムエラーの方が原因究明しやすい
 Hidemi Oya WEB  (08/01/16 0:20)

引用なし
   kabe さん、こん**は。Hidemi Oya です。

>…でも、終了時に EAccessViolation が出るようになり、前より悪化しました。
 EAccessViolation は、Delphi のランタイムパッケージが出すエラーなので、今までよりは原因究明がしやすそうですが…。IDE 内で実行していればソース内のエラー発生場所で止まりますし、ランタイムパッケージ内などソースコード以外の場所でエラーが発生した場合は CPU ウィンドウが開くので、問題箇所はおおよそ見当がつきます。
 それに、EAcessViolation の場合、ほとんどの場合、ヌルポインタアクセスか、メモリ解放後のアクセスですし。

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
33 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.