Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Программа начинает есть память


Автор: Pcrepair 30.7.2012, 14:12
Добрый день. Есть код:

Код

unit Unit1;
interface
uses
  ShellAPI;

type
  TForm1 = class(TForm)
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    function PageAssemble(T:TStringList):string;
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
    Buffer:TStringList;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
(*=============================================*)
(*  30 июля 2012г. Сборка ХТМЛ-страницы запись ссылок в файл.
    запуск файла в браузере*)
procedure TForm1.Button3Click(Sender: TObject);
var T:TstringList;
begin
  T:=TStringList.Create;
  T.Text:=PageAssemble(Buffer); (*ввод ХТМЛ-страницы*)
  T.SaveToFile('RatingPage.html');  (*сохранить в файл*)
    (*=====Если использовать код то расход ОЗУ возрастает с 6 до 12 мб==*)
    ShellExecute(Self.Handle, 'open', PChar('RatingPage.html'), nil,
      nil, SW_SHOWNORMAL); (*открыть файл в системном браузере*)
    (*===============================*)
  T.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   Buffer:=TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   Buffer.Free;
end;

end.


Этот код создает ХТМЛ-страницу, записывает ее на ЖД и открывает в системном браузере
в общем все работает. но при открытии страницы браузером из файла с ЖД потребление памяти увеличивается с 6 до 12 мб.
Вопросы: это нормально при применении ShellExecute? может сделать ДЛЛ из этого кода и после открытия файла браузером отключать ДЛЛ(как это советуется в букварях)? может есть еще способы(кроме тех что из букваря), что то новенькое?

Автор: shoker 30.7.2012, 22:51
может зависит от того,каким браузером открывать?

Автор: IBS 30.7.2012, 23:17
Цитата(Pcrepair @  30.7.2012,  14:12 Найти цитируемый пост)
с 6 до 12 мб.

Все впорядке ) вы посмотрите сколько тот же хром памяти отжирает.

Автор: MetalFan 31.7.2012, 22:01
Цитата

Программа начинает есть память

Голодная наверное... таки прям начинает есть и не останавливается?

Не вижу криминала в приведенном куске кода...
Попробуй в цикле раз 10 вызвать ShellExecute с задержкой секунд в 5-10 и посмотреть на "употребление памяти". Думаю ничего страшного не увидишь)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)