Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Почему 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 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
2-1171970365
Scavenger
2007-02-20 14:19
2007.03.11
StringGrid


2-1171648748
Malik
2007-02-16 20:59
2007.03.11
Работа с кодом типа String


15-1171577738
ArtemESC
2007-02-16 01:15
2007.03.11
Дошло...


15-1171262859
Карелин Артем
2007-02-12 09:47
2007.03.11
Витамины пьете? Если да то какие?


15-1170880896
ZiTRaX
2007-02-07 23:41
2007.03.11
Размер exe-шника С/С++ - и Pascal - компиляторов