Главная страница
    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.48 MB
Время: 0.042 c
2-1185619754
Draught
2007-07-28 14:49
2007.08.26
Убрать scrollbar у DBGrid


2-1186105128
Glivera
2007-08-03 05:38
2007.08.26
TaskBar


15-1185830927
uses1
2007-07-31 01:28
2007.08.26
Как упаковать массив чисел не кратных двойке?


15-1185199585
Алхимик
2007-07-23 18:06
2007.08.26
Идентификация композиции


2-1185868620
gvozdkoff
2007-07-31 11:57
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский