Главная страница
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.037 c
4-1162469151
toboom
2006-11-02 15:05
2007.03.11
Проблема использования таймера из MMSystem


1-1168597840
i-am-vladko
2007-01-12 13:30
2007.03.11
SavedCheckBox


2-1171982875
VovkaN
2007-02-20 17:47
2007.03.11
Как указать temp-файлам .db при работе BDE другую папку?


15-1171606301
Loginov Dmitry
2007-02-16 09:11
2007.03.11
Ловушка для сишника MidStr()


15-1171546150
vitv
2007-02-15 16:29
2007.03.11
Литература по разработке СУБД