例外クラス$Coooooo5(メッセージ’coooooo5ACCESS_VIOLATION’)を出ないようにするには

解決


AS  2020-03-14 19:44:50  No: 148637

今日はありがとうございました。

例外クラス$Coooooo5(メッセージ’coooooo5ACCESS_VIOLATION’)の表示が出た後、ブレークすると、

  PopupMenu1.AutoPopup := True;
  Memo1.PopupMenu := PopupMenu1;

//  N1.Enabled := Clipboard.HasFormat(CF_TEXT);
//  Paste1.Enabled :=Clipboard.HasFormat(CF_TEXT);
  HasSelection := Memo1.SelLength > 0;
//  Cut2.Enabled := HasSelection;
  Copy1.Enabled := HasSelection;
//  delete1.Enabled := HasSelection;
//  Cancel1.Enabled := HasSelection;

の最初の行が表示されます。

この部分はdelphi6で作った時から変わっていません。
また、プログラム名を変えて、別の名前にすると、このエラー表示は出ません。
3回名前を変えてみましたが、三回ともエラーは出ませんでした。
この時、保存する場所は変わりますが、プログラムの中身はほとんど一緒です。

今朝の投稿する前に確認したときは、windows8でコンパイルしたときはエラーは出ませんでした。
windows10のプログラムを移してコンパイルするとエラーが出ましたが。

なんでエラー表示がされるのか理由が分かりません。

どういう理由が考えられますか??

何か、ヒントでも頂けたらと思って、投稿します。

よろしくお願いします。


HFUKUSHI  2020-03-14 21:19:22  No: 148638

エスパーではないので、さすがにこれだけの情報で意味のある回答は難しいのですが、
1.エラーメッセージをそのまま貼り付けてください(ダイアログでCtrl+Cでコピーできます)
2.ブレークした行の直前の行はどうなっていますか?(エラーが起きた行から後ろに原因はありません)
3.エラーでブレークする行の1行前にブレークポイントを設定し、そこから[F7]でステップ実行するとなにかわかりませんか?


AS  2020-03-15 09:18:05  No: 148639

HFUKUSHIさん、ありがとうございます。
「計算」というボタンを押して、「計算」のFormが立ち上がる前にこのエラー表示は出ます。

1
〇プロジェクト○○.exeは例外クラス$Coooooo5(メッセージ’coooooo5ACCESS_VIOLATION’)を送出しました。
〇モジュール’○○.exe’のアドレス00000000005C423Cでアドレス0000000000000090に対する読み取り違反が起きました。
0の個数は自信がありません。読み取り違反というのがヒントですかね??

2
  Memo1.Height:=473;Memo1.lines.clear;
  Memo1.width:=890;
  DCalc.Height:=548; //Formの名前です
  PopupMenu1.AutoPopup := True;

3
何も変わりませんでした。

エラーが起きるディレクトリをコピーして、名前を変えて、コンパイルしたらエラーは起きました。
このディレクトリの中身が問題かとは思いますが、さっぱり分かりません??
いろいろ試してみたいと思います。


AS  2020-03-15 10:28:57  No: 148640

いろいろ試してみました。

プログラムの名前を変えるとき、プロジェクトを変えていました。
新しい名前を作るとき、エラーの起きるメインのプロジェクトから作るとエラーが出るので、
エラーの出ないプロジェクトからメインのプロジェクト作ると、エラーが消えました。

原因が分かる人がいれば、教えてください。

ありがとうございました。


HFUKUSHI  2020-03-15 10:42:59  No: 148641

DCalcという名前のフォームの実体が生成されていないのではないですか?


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加