簡體   English   中英

保存對話在XE2中掛起

[英]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):

  1. 創建一個新的VCL表單應用程序
  2. 在窗體上放置一個TSaveDialog1
  3. 使用OnClick事件放置Tbutton

`

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM