[英]Save dialogue hangs in XE2
我在Windows 8上使用Delphi XE2。我已經將D2009應用程序移植到XE2,突然之間保存對話框(TSaveDialog)變得非常慢。
當“項目/選項/應用程序/運行時主題”設置為“啟用運行時主題”時:
=>
當我打開保存對話框時,該窗口凍結約一分鍾(有時我可以關閉該窗口,但必須等待一分鍾后才能再次打開該對話框(或另一個TOpenDialog)。將顯示新的Vista風格的保存對話框。
如果我嘗試在裝有Windows 7的PC上運行此exe,則該應用程序在啟動時會掛起(我也曾嘗試過XP兼容模式,但未成功)。
當“項目/選項/應用程序/運行時主題”設置為“無”時:
=>
保存對話框效果很好(快速),但是顯示了舊樣式對話框,例如以下示例:
該exe在帶有Windows 7的PC上運行良好(盡管帶有舊樣式對話框)。
附言 我在Win 7 PC上用D2009編譯的舊exe文件在Win 7和8 PC上都能很好地工作:s,並使用新的Vista對話框樣式正確顯示對話框。
可能是Win 8/7的某些權限引起的嗎? 我使用IDE FIX PACK 5.4,
謝謝托馬斯
我發現了問題所在。 我使用{$ MAXSTACKSIZE $ 4000000},這導致保存對話框凍結大約一分鍾。 之所以需要這么大的堆棧大小,是因為我使用了遞歸算法(現在可能需要重制)。
復制如下(XE2):
`
Begin
if SaveDialog1.Execute then
MessageDlg('ok', mtInformation,[mbOk], 0);
end;
`
4:打開項目源文件,並放置以下行:
// {$ MAXSTACKSIZE $ 3500000} //這是一個十進制值5 5574 528 OK!
{$ MAXSTACKSIZE $ 4000000} //這是一個十進制值6 7108 864不正確!
運行並單擊按鈕。 輸入一個虛擬文件名,然后按保存。 什么都沒發生。 持續單擊按鈕60秒鍾。 對話最終將結束。
更改為較小的堆棧大小$ 350,000。 現在該程序運行良好。 感謝所有提示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.