お世話になります。
Delphi XE3で開発しています。
タブレットPCの手書き入力のために、InkEditを使用しています。
コンポーネントのインポートから
ActiveXコントロールの取り込み
Microsoft InkEdit Control 1.0を
新規パッケージで追加しました。
フォームにInkEditを張り付けてexeを起動し、
フォームを閉じる(フォームをフリー Action := caFree;)と、
添付の画像のInkObj.dllのエラーが発生します。
具合が悪いのは、別exeのInkEditでエラーが発生するものと
エラーが発生しないものがあることです。
デバッガでエラーが起き、exe単体ではエラーが起きません…
環境
OS:Win7 32bit
Delphi XE3
メモリリークが起きているのでしょうか?
知識不足で申し訳ありませんが、解決方法をご存知の方がいらっしゃいましたら、ご教授お願いいたします。
{
デバッガ例外通知
プロジェクト××.exeは例外クラスEAccessViolation('メッセージアドレス05CF0FE2でアドレスFFFFFFFFに対する読み取り違反がおきました。')を送出しました。
}
とメッセージが表示されます。
EXE 単体での実行時にエラーにならなければ、
とりあえずそのままでいいのではないでしょうか?
> メモリリークが起きているのでしょうか?
"アプリケーションのメモリリーク" は
ReportMemoryLeaksOnShutdown := True;
で調べる事ができます。
> 添付の画像のInkObj.dllのエラーが発生します。
はて?添付の画像はどこにあるのでしょう?
# マルチポストして問題が解決した場合には、
# すべての投稿先に問題が解決した事を通達しましょう。
ありがとうございます。
メモリーリークしているかと思っていましたが
違いました。
添付の画像の文言は間違いです。
すみません。
エラーのままではリリースできないので(泣)
もう少し調べてみたいと思います。
ありがとうございました。
私に似たような状態です。 XE2対応のEmbeddedWBコンポーネントを64bit環境でデバックするとエラーが連発します。
ですが、作ったexeからは問題がありません。空のフォームに貼り付けてもなるので、私のコードの問題ではないでしょう。
ですが、まあ問題なく動いているので、よしとして、デバック環境では動かさないようにしています。
私に、ではなくて 私も、でした。
Windows7 + XE2
//例外は発生しない
InkEdit2 := TInkEdit.Create(Self);
InkEdit2.Free;
//例外が発生する
InkEdit2 := TInkEdit.Create(Self);
InkEdit2.Parent := Form2;
InkEdit2.Free;
//例外は発生しない
InkEdit2 := TInkEdit.Create(Self);
InkEdit2.Parent := Form1;
InkEdit2.Parent := nil;
InkEdit2.Free;
なので
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
InkEdit1.Parent := nil;
end;
表裏未里さん
書き込みありがとうございます。
私だけではなかったんですね…
KHE00221さんから教えていただいた方法で
解決しました。
KHE00221さん
ありがとうございます。
FormCloseでInkEdit1.Parent := nil;
することでエラーは起きなくなりました。
大変助かりました。
ありがとうございました。
動いていたと書きましたが、今日Windows8で、64bit版のファイルでバグが出ることを報告されました。同じ現象が32bitでは起きないので、公開を停止しました。
やはりデバッガでエラー連発のものを出しちゃまずいようですね(^^;;
ツイート | ![]() |