Помощь - Поиск - Пользователи - Календарь
Полная версия: Ускорить GetOpenFileName
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
TarasBer

FillChar(OpenFN, SizeOf(OpenFN), 0);
szFile := '';
with OpenFN do begin
HWNDOwner := MainForm;
Flags := OFN_HIDEREADONLY or OFN_NOCHANGEDIR;
lStructSize := SizeOf(OpenFN);
lpstrFile := szFile;
nMaxFile := sizeOf(szFile);
case Save of
0: lpstrTitle := ' Îòêðûòü...';
1: lpstrTitle := ' Ñîõðàíèòü...';
2: lpstrTitle := ' Ñîõðàíèòü êàê...';
end;
lpstrInitialDir := PChar(FolderPath);
lpstrFilter := PChar('Ôàéëû *.' + Ext + #0'*.' + Ext + #0);
lpstrDefExt := PChar(Ext);
end;
if Save = 0 then Result := GetOpenFileName(OpenFN)
else Result := GetSaveFileName(OpenFN);

Может, нужен флаг, чтобы диалог, скажем, не лез в сеть?
P@sh@
стандартный дельфовский TOpenDialog тоже вызывает GetOpenFileName, и ниче не тормозит обычно...
TarasBer
Вот и я думаю, почему старый ВЦЛовский вариант работает быстрее, какой там флаг надо поставить? А то просто ужас, какие затупы.
IUnknown
Что-то гонял-гонял GetOpenFileName из WinAPI (и на XP и на Семерке), никак не получается задержка в 5 секунд. Даже при нажатии на "My Computer", когда система должна определить иконку флоппи, которого у меня в помине нет, зависание отсутствует. И к сетевым ресурсам (при условии, что ни приложение ни открываемая папка не лежат в сетевых папках) нет обращения.

Были подобные жалобы при использовании Qt, но там другой случай, Дельфей это не касается никак.
TarasBer
Это не может быть связано с тем, что у меня семёрка и "всего лишь" гиг оперативы?
IUnknown
А вот это вполне возможно. 1 гиг - это минимальные требования для Win7, может с этим тормоза и связаны...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.