Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Как высвободить память занимаемую TWebBrowser ом   Найти похожие ветки 

 
JanMihail ©   (2007-08-02 17:06) [0]

Вот такой простой код:
IE: array of TWebBrowser; //Масси веб-броузеров
....

/////////Кнопка создания браузеров////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 SetLength(IE, 500);//Задаем размерность массиву

 for i := 0 to length(IE) - 1 do
 begin
   IE[i] := TWebBrowser.Create(Self);       //Инициализируем браузер
   IE[i].ParentWindow := Form1.Handle;    //Задаем родителя
   IE[i].Navigate(<ссылка на страницу>);//Грузим страницу
 end;
end;

/////////////Кнопка уничтожения браузеров///////////
procedure TForm1.Button2Click(Sender: TObject);
var
 i: Integer;
begin
 for i := 0 to length(IE) - 1 do
 begin
   IE[i].Stop;//Останавливаем загрузку
   IE[i].Free;//Уничтожаем браузер
   IE[i] := nil;//Очищаем ячейку массива
 end;
 IE := nil;//Очищаем весь массив
end;


Нажимаю на Button1 - создалось 500 браузеров и каждый грузит указанную страницу, затем нажимаю Button2 - все браузеры с формы удалились, а память высвободилась не вся. Как сделать чтоб высвободилась вся память занимаемая ими???


 
Yanis ©   (2007-08-02 17:08) [1]


> создалось 500 браузеров и каждый грузит указанную страницу

Ужас какой O_o


 
Dib@zol ©   (2007-08-02 17:08) [2]

в "кладовке" есть оч рульная прога "FreeMem". Скачай, встрой код себе в прогу - и память освободишь, и фичу ещё одну к проге добавишь :))


 
clickmaker ©   (2007-08-02 17:43) [3]


> Нажимаю на Button1 - создалось 500 браузеров

а чё так мало?


 
JanMihail ©   (2007-08-02 17:46) [4]

что вы спрашиваете: что так мало? Что так много? Я же спросил как высвободить память


 
Плохиш ©   (2007-08-02 18:01) [5]


> JanMihail ©   (02.08.07 17:06)  

Сверни и разверни свою прогу и удивись...


 
JanMihail ©   (2007-08-02 19:11) [6]


> Плохиш ©   (02.08.07 18:01) [5]

Свернул и развернул и не удивился.


 
aktuba   (2007-08-02 19:39) [7]

Всего 500??? Маловато будет... Давай 500 000, тогда нормально будет!

А насчет освобождения - WebBrowser не сразу освобождает память. Это раз. Второе - вместо IE := nil сделай SetLength(IE, 0).


 
Zagaevskiy ©   (2007-08-02 19:42) [8]


> JanMihail ©   (02.08.07 19:11) [6]

Привет! Чё опять спамовик пишешь? :))


 
JanMihail ©   (2007-08-02 20:06) [9]


> aktuba   (02.08.07 19:39) [7]

Спасибо! Но не совсем помогло!


> Zagaevskiy ©   (02.08.07 19:42) [8]

Нет не спамовик. Прогу для увеличения показа баннеров. А ты дома? Или еще не приехал?


 
Zagaevskiy ©   (2007-08-02 20:45) [10]

Ага приехал. А нащёт показа баннеров - это шулерство.
Не совсем помогло это как?


 
Zagaevskiy ©   (2007-08-02 20:58) [11]


> Прогу для увеличения показа баннеров

хм.. только дошло : ты ж её уже недели две делаешь?


 
JanMihail ©   (2007-08-02 21:57) [12]


> Zagaevskiy ©   (02.08.07 20:58) [11]

Что упал?? Ты с чем-то спутал!


 
JanMihail ©   (2007-08-03 10:59) [13]

Может у кого есть какие мысли. Пробовал так:

Procedure TfrmMain.btnEmptyCacheClick( Sender : TObject );
Var    
 lpEntryInfo : PInternetCacheEntryInfo;    
 hCacheDir   : LongWord;    
 dwEntrySize : LongWord;    
 dwLastError : LongWord;
Begin    
 dwEntrySize := 0;    
 FindFirstUrlCacheEntry( NIL, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );    
 GetMem( lpEntryInfo, dwEntrySize );    
 hCacheDir := FindFirstUrlCacheEntry( NIL, lpEntryInfo^, dwEntrySize );    

 If ( hCacheDir <> 0 ) Then        
   DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );    

 FreeMem( lpEntryInfo );    

 Repeat        
   dwEntrySize := 0;        
   FindNextUrlCacheEntry( hCacheDir, TInternetCacheEntryInfo( NIL^ ), dwEntrySize );        
   dwLastError := GetLastError();  
     
   If ( GetLastError = ERROR_INSUFFICIENT_BUFFER ) Then
   Begin            
     GetMem( lpEntryInfo, dwEntrySize );            
     If ( FindNextUrlCacheEntry( hCacheDir, lpEntryInfo^, dwEntrySize ) ) Then                
       DeleteUrlCacheEntry( lpEntryInfo^.lpszSourceUrlName );            
     FreeMem(lpEntryInfo);        
   End;    
 Until ( dwLastError = ERROR_NO_MORE_ITEMS );
End;

Видать это не то. Не помогло вообще. Ну подскажите кто может!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.051 c
15-1185452230
Stan
2007-07-26 16:17
2007.08.26
Wipe algorithms


15-1185339334
dimaL
2007-07-25 08:55
2007.08.26
Формы в DLL


1-1181823351
BlackCat
2007-06-14 16:15
2007.08.26
TDataTimePicker ы в строках StringGrida


2-1185692141
***mikle***
2007-07-29 10:55
2007.08.26
Как реализовать окно с текстом и картинками?


15-1185270324
DillerXX
2007-07-24 13:45
2007.08.26
Восход Эндимиона - это последняя книга?





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