喫茶XRAYトップページ

[スレッド全体
]

[6843] Re:Windows8とWindows7で・・・返信 削除
2013/4/5 (金) 06:06:05 Mr.XRAY
▼ Saraさん

> Windows8+Delphiってあまりよろしくない?

う〜ん.どうなんでしょう.
Windows 8 もだいぶ使われだしているから,もし,問題があれば,
コミュニティの場で何かアクションがありそうな気がするんですが.
当サイトのアクセス解析では,Windows 8 が Vista を抜いていますし.

私はまだ Windows 8 をインストールしていません.ハイ.


[6851] Re2:Windows8とWindows7で・・・返信 削除
2013/4/7 (日) 14:53:39 Sara
▼ Mr.XRAYさん こんにちは


> > Windows8+Delphiってあまりよろしくない?
>
> う〜ん.どうなんでしょう.
> Windows 8 もだいぶ使われだしているから,もし,問題があれば,
> コミュニティの場で何かアクションがありそうな気がするんですが.
> 当サイトのアクセス解析では,Windows 8 が Vista を抜いていますし.
>
> 私はまだ Windows 8 をインストールしていません.ハイ.


よろしくないと言うよりも、よりメモリ管理が厳密になっていると
言うべきな感じでしょうか・・・

いろいろ調べたところ、どうやら、プログラム的に問題があるのが判明・・・(^^;

でも、Windows7+Delphi Xe2では起きず、Windows8+Delphi Xe2では起きる・・・

で、何をしていたのかと言うと・・・
あるフォルダー内の画像一覧を表示しています。(TListに保持)
その中の複数の画像を選択して画像の回転処理を行います。
回転後の画像はカレントフォルダ直下に「回転」等の名前でフォルダを作成し
その中に処理後の画像を保存しています。

このとき、カレントフォルダをplFolderWatcherを使って監視をしています。
フォルダ監視は当該フォルダ内で画像の増減等を監視して再表示します。

この、監視処理が今回の問題を引き起こしていたと言うことです・・・
変更があった際にTListをいったんクリアして再構築しているのですが
上記の回転処理の最中にクリアが行われていた模様・・・
TListを参照しに行ってTListのItemがnilになっていると当然エラーになる・・・

上記のことから、Windows7+Delphi Xe2では「たまたま」症状がでていない
と言うことらしいのです・・・参照していたメモリ空間がたまたまクリアされずに
残っていたと・・・

で、上記変換処理をTCriticalSectionで囲ってあげることで問題が解決しました。

お騒がせいたしました。m(_ _)m


[6852] Re3:Windows8とWindows7で・・・返信 削除
2013/4/8 (月) 11:02:06 Mr.XRAY
▼ Saraさん

> で、上記変換処理をTCriticalSectionで囲ってあげることで問題が解決しました。

むむっ,高級な技を.

> 上記のことから、Windows7+Delphi Xe2では「たまたま」症状がでていない
> と言うことらしいのです・・・参照していたメモリ空間がたまたまクリアされずに


Windows 8 ではよりクリティカルになったというわけですね.
言われてみれば,そうですよね.
サンプルプログラム集も,この点は見直しが必要なのかも.
勉強になりました.

[System.SyncObjs.TCriticalSection]
http://docwiki.embarcadero.com/Libraries/XE3/ja/System.SyncObjs.TCriticalSection

[クリティカルセクション(Critical Section)]
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/forms/Critical.htm


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