Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2008, 03:48   #1
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию PrtScSysRq vs Memory

Хай всем! Проблема такова:
Я с помощью программки (естественно своей) фотаю экран и сохраняю его в файл с интервалом в 3 сек (как бы самообновляемый файл), но после 5-7 (иногда 3) разов [фотанья] Дельфя орёт, что память перегружена (что-то вроде этого). Кто знает, как после каждого сохранения файла экрана "освобождать память от мусора" - чтобы не перегружалась?

P.S. Памяти у меня на компе 1 GB
JoanM вне форума Ответить с цитированием
Старый 09.01.2008, 05:09   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

.Free; очистка памяти...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 09.01.2008, 05:22   #3
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

А чему .free передавать
JoanM вне форума Ответить с цитированием
Старый 09.01.2008, 06:02   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Хм.. а чево у тебя есть? исходничек чтоль кинь...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 09.01.2008, 07:34   #5
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Исходник у меня где-то далеко лежит, подскажи так, на словах. Я могу рассказать структуру программы:

Есть таймер. Он через n-интервал фотает экран с помощью какой-то там функции. Потом он рисует (отображает) сфотанный экран на компоненте image и после я Imag`у говорю, чтобы он сохранил (SaveToFile) картинку в файл.

Я уже и картинку разрешением 1280х1024 (мой экран) сжимал до 640х480 - перегрузка пямяти всё равно.
JoanM вне форума Ответить с цитированием
Старый 09.01.2008, 07:41   #6
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Тогда:

Image1.Free;
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 09.01.2008, 07:44   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Image1.Free;
А потом заново создавать??
Джон, покажи код.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.01.2008, 08:01   #8
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Picture.Bitmap:=scrncap.Capt ureScreen;
application.ProcessMessages;
image1.picture.SaveToFile('M:\scree n.gif');
end;

Вот что обрабатывает таймер.

Могу кинуть мой модуль ScrnCap на e-mail, а то что-то не нашёл, как прикрепить файл к моему сообщению.
JoanM вне форума Ответить с цитированием
Старый 09.01.2008, 08:54   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Друг, мой, Джон, я не знаю че там ты зарулил в том модуле, и мыла у меня нет, посему мне проще тебе показать как экран фотографировал бы я.
Итак:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var    h:hdc; i:TBitmap;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin

 StretchBlt({Form1.Canvas.Handle}i.Canvas.Handle,0,0,Width,Height,h,0,0,Screen.Width,Screen.Height,SRCCOPY);
 StretchBlt(Form1.Canvas.Handle,0,0,Width,Height,h,0,0,Screen.Width,Screen.Height,SRCCOPY);
 i.SaveToFile('c:\temp\img'+inttostr(Form1.tag)+'.bmp');
 Form1.tag:=Form1.tag+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
h:=GetDC(GetDesktopWindow);i:=TBitmap.Create;
i.Width:=Screen.Width;i.Height:=Screen.Height;
end;

end.
Этот код каждую секунду будет создавать файлы в папке c:\temp

Если что спрашивай.

P.S. Ах да чуть не забыл, файлы эти ну уж очень большого рамера, посему нуна бы по хорошему их сжимать, это можно сделать используя возможности модуля JPEG. Я его показывать уж не буду ты поиском если что...
I'm learning to live...

Последний раз редактировалось Stilet; 09.01.2008 в 08:56.
Stilet вне форума Ответить с цитированием
Старый 09.01.2008, 09:14   #10
JoanM
Дешево пишу проги)
Форумчанин Подтвердите свой е-майл
 
Аватар для JoanM
 
Регистрация: 12.12.2006
Сообщений: 106
По умолчанию

Мне нужно замещать файл JPEG`овский. Может быть в процессе замещения память сильно грузится.
JoanM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Memory Leak Старовъръ БД в Delphi 2 14.07.2008 20:01
Delphi 7 + access + excel = out of memory Тимониссимо БД в Delphi 5 06.07.2008 07:16
[Error] RLINK32: Out of memory! - что это и как лечить? RoamingFire Общие вопросы Delphi 2 11.02.2008 08:32