Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
9-1143544075
STALIN
2006-03-28 15:07
2007.03.11
GLFreeform - GlScene как сделать так, чтобы через Freeform...


15-1171479416
Вольный Стрелок
2007-02-14 21:56
2007.03.11
Отключить отладчик в системе


15-1171561649
alien1769
2007-02-15 20:47
2007.03.11
Вакансия для программиста на С++


6-1149689410
Damaty
2006-06-07 18:10
2007.03.11
SHH


1-1168784135
The X
2007-01-14 17:15
2007.03.11
Корректная работа с CHM-хелпами в Delphi5.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский