Главная страница
    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.47 MB
Время: 0.06 c
2-1172052044
Атех
2007-02-21 13:00
2007.03.11
Один class = несколько unit ов


15-1171639983
Parus
2007-02-16 18:33
2007.03.11
Мостостроительство:)


15-1170606148
DemonP
2007-02-04 19:22
2007.03.11
Electronics Workbench.512


15-1171536100
Boronin
2007-02-15 13:41
2007.03.11
Срочно требуются программисты Delphi+SQL


1-1168947051
Ромка
2007-01-16 14:30
2007.03.11
Сочетания клавиш





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский