Форум: "WinAPI";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
ВнизПочему SHBrowseForFolder жрет так много памяти? Найти похожие ветки
← →
Ricks © (2006-10-19 23:42) [0]При первом запуске диалога "улетает" где-то 12МБ, а потом еще при каждом раскрытии подпапок тоже кушает... Но самое интересное в том, что после закрытия оно память не освобождает!
Вот код (простой, - у меня есть более навороченый, но эффект тот же):
function SelectFileEx(Wnd:HWND; SelFiles:Boolean; const Caption: string; out FileName: string): Boolean;
var P : PItemIDList;
B : _browseinfoA;
pt : PChar;
begin
Result:=false;
FillChar(B, sizeof(_browseinfoA), 0);
with B do begin
hwndOwner:=Wnd;
lpszTitle:=PChar(Caption);
ulFlags:=BIF_RETURNONLYFSDIRS or BIF_STATUSTEXT or BIF_EDITBOX or BIF_NEWDIALOGSTYLE or BIF_VALIDATE;
if SelFiles
then ulFlags:=ulFlags or BIF_BROWSEINCLUDEFILES;
end;
P:=SHBrowseForFolder(B);
if Assigned(P) then begin
pt:=AllocMem( MAX_PATH );
try
if SHGetPathFromIDList( P, pt ) then begin
FileName:=string(pt);
Result:=true;
end;
CoTaskMemFree(P);
finally
ReallocMem(pt, 0);
end;
end;
← →
Rouse_ © (2006-10-20 00:19) [1]Можно я себя попиарю? :)
Попробуй вот это: http://rouse.drkb.ru/files/fwopendirectory.zip
← →
Германн © (2006-10-20 00:36) [2]
> Rouse_ © (20.10.06 00:19) [1]
>
> Можно я себя попиарю? :)
Дык кто-ж против? :-)
Токмо вот зудит спросить! Что означает "фирменный знак" FW? :-)
← →
Rouse_ © (2006-10-20 09:39) [3]
> Токмо вот зудит спросить! Что означает "фирменный знак" FW? :-)
отголосок прошлых достижений ;)
← →
Lamer@fools.ua © (2006-10-20 11:21) [4]>Что означает "фирменный знак" FW? :-)
>отголосок прошлых достижений ;)
Framework? :o)
← →
Sapersky (2006-10-20 11:59) [5]http://rouse.drkb.ru/files/fwopendirectory.zip
Навскидку существенных отличий от приведённого примера не видно... тот же самый SHBrowseForFolder.
Диалог без shell (KOLDirDlgEx.pas - сам, правда, ещё не пользовался):
http://www.kolnmck.ru/files/koladd.7z
← →
Rouse_ © (2006-10-20 17:12) [6]Ты не код смотри, ты сначала смотри - наблюдается ли эффект с памятью? :)
← →
Ricks © (2006-10-20 21:00) [7]Только что проверил "fwopendirectory.zip" - эффект такой же (теряется 10..15МБ), но "что характерно" память расходуется только при первом вызове, так что, наверное, с этим ничего не поделаешь...
PS: спасибо Rouse_ за несколько идей (по крайней мере за то, что научил меня выключать кнопку "OK" :)
← →
Ketmar © (2006-10-20 21:05) [8]>[7] Ricks(c) 20-Oct-2006, 21:00
ничего не "теряется". не верь. оно используется, а не "теряется".
← →
Ricks © (2006-10-20 21:06) [9]Ну я это и имел ввиду :)
← →
DVM © (2006-10-26 14:56) [10]
> Rouse_ © (20.10.06 00:19) [1]
Кстати, насчет компонента. Будучи положенным на фрейм он не работает.
← →
GrayFace © (2006-10-29 13:56) [11]А я для выбора папки использую OpenDialog. Задаю начальное имя файла "Extract Here" и все.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c