喫茶XRAYトップページ

[▲前のスレッド]

[4578] GDIPULS GDIPOBJでエラー返信 削除
2011/4/6 (水) 19:12:40 Syake
世間は色々騒がしいようで・・・
福島のみならず、日本各地に原発は存在しております。
今更、原発を全て解体破棄もできるわけもなく、ましてや原発に比する
代替エネルギーがあるわけでもなく。(ただ単に無知なだけかも(;_;))
つまるところ、これを教訓に万全の安全対策を早急に施して頂きたいも
のだと、かように思っている今日この頃です。

さてさて
http://www.progdigy.com/
GDI+

プロジェクト(DLL)でGDIPOBJをusesした場合、メモリーリークらしい
事が起きるようです。
呼び出し元EXE(Delphi製でないEXE)がタスクに残ったままになってし
う現象があり色々調査しました。

結果的に、DLL内でGPIPOBJをusesし、空(処理記述のない)の関数を呼
び出しただけで内部的にエラーが発生しているようです。
GPIPOBJを削除するとエラーは発生しません。
呼び出し元で
Application.MainFormOnTaskbar := True;
で確認しました。
何ら処理をしていないのにusesしただけでエラーになるのは理解に苦し
むところです。(やっぱり、ただ単に無知なだけかも(;_;))

しかしながら、EXE内でGDIPOBJをusesしてもこの場合は何もエラー報告
はありません。
上記サイトは日本人の私には理解できません(^_^;)

う〜む、私には理解できぬところで何やら蠢いているのかな?

Delphi2007 Win7 Pro 32Bit

[4581] Re:GDIPULS GDIPOBJでエラー返信 削除
2011/4/6 (水) 20:05:09 Mr.XRAY
▼ Syakeさん

> しかしながら、EXE内でGDIPOBJをusesしてもこの場合は何もエラー報告
> はありません。


何!?
これから,GDI+のサンプルを追加しようといているのに...

これですか?
http://www.progdigy.com/?page_id=7


[4582] Re2:GDIPULS GDIPOBJでエラー返信 削除
2011/4/6 (水) 20:08:44 Mr.XRAY
あっ,これ,DLL内でのGDIPOBJのusesの問題ですか.
ふ〜ん.


[4593] Re3:GDIPULS GDIPOBJでエラー返信 削除
2011/4/7 (木) 13:34:01 Syake
▼ Mr.XRAYさん
どうもDelphi2007特有の問題のようです。
(どんな問題???)

DelphiXEでは問題なく動作しました。
う〜む。

[4595] Re4:GDIPULS GDIPOBJでエラー返信 削除
2011/4/7 (木) 13:51:30 Mr.XRAY
▼ Syakeさん

> DelphiXEでは問題なく動作しました。
> う〜む。


う〜む,ですね.Delphiのバージョンアップで改善されるのはいいんですが,
何とも言い難いです.


[4596] Re5:GDIPULS GDIPOBJでエラー返信 削除
2011/4/7 (木) 16:41:06 Syake
▼ Mr.XRAYさん

m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m

> う〜む,ですね.Delphiのバージョンアップで改善されるのはいいんですが,
> 何とも言い難いです.


大変申し訳ありません。

DelphiXEではApplication.MainFormOnTaskbar := True;
でエラー表示しなくなるだけのようでして相変わらず、GDIPOBJをDLL内でuses
しただけで呼び出し元EXE(Delphi製でないEXE)がタスクに残ったままになっ
てしう現象はそのままでした。

これを世間では「ぬか喜び」と言う(;_;)

[4597] Re6:GDIPULS GDIPOBJでエラー返信 削除
2011/4/7 (木) 17:05:13 Mr.XRAY
▼ Syakeさん

> m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m m(__)m

ワワワッ.そうですか.了解しました.

> これを世間では「ぬか喜び」と言う(;_;)

よくあることで.... (^^;)


[5483] Re:GDIPULS GDIPOBJでエラー返信 削除
2011/11/4 (金) 18:13:36 Syake
忘れ去られ見向きもされないQ!

> プロジェクト(DLL)でGDIPOBJをusesした場合、メモリーリークらしい
> 事が起きるようです。
> 呼び出し元EXE(Delphi製でないEXE)がタスクに残ったままになってし
> う現象があり色々調査しました。


調べきれませんであきらめてました(;_;)

んがっ!しかし
どこで、何がきっかけとなるやらわかりませんが
マスターの
http://docwiki.embarcadero.com/RADStudio/ja/XE2_Update_2_%E3%81%AE%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9_%E3%83%8E%E3%83%BC%E3%83%88
末尾
>DLL ではなくメイン アプリケーションで GDI+ を初期化
の記述が参考になりました。

ホストアプリケーションに以下の処理を追加したらOKでした。

初期化の関数
http://msdn.microsoft.com/en-us/library/ms534077(v=vs.85).aspx
  ↓
{DLLの呼び出し処理処理}
  ↓
シャットダウンの関数
http://msdn.microsoft.com/en-us/library/ms534076(v=vs.85).aspx

おかげ様で無事解決しました。

マスター様々です。m(_ _)m




[5484] Re2:GDIPULS GDIPOBJでエラー返信 削除
2011/11/4 (金) 20:01:30 Mr.XRAY
▼ Syakeさん,

へぇー,何がヒントになるか分からないもんですね.
Update2のがねぇ.
よかったです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82