Форум: "Начинающим";
Текущий архив: 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.061 c