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

解決


AS  2020-03-14 10:44:50  No: 148637  IP: 192.*.*.*

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

例外クラス$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 12:19:22  No: 148638  IP: 192.*.*.*

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

編集 削除
AS  2020-03-15 00:18:05  No: 148639  IP: 192.*.*.*

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 01:28:57  No: 148640  IP: 192.*.*.*

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

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

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

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


編集 削除
HFUKUSHI  2020-03-15 01:42:59  No: 148641  IP: 192.*.*.*

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

編集 削除