Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отчего программа занимает столько памяти? 
:(
    Опции темы
Pavelbej
Дата 25.8.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Сделал программу на Делфи, работает все время пока комп включен. Программа вроде маленькая но занимает огромную память аж до 14 Мб. Отчего это? Если не правильно задал вопрос, не пинайте сильно.
PM MAIL   Вверх
bems
Дата 26.8.2006, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



14cтр

Добавлено @ 01:07 
Подкл. модуля?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Palladin
Дата 26.8.2006, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Юзай поиск по форуму вопрос был smile 
P.S. Это по большей части из-за того что в стандартный проект делфи входит уйма ненужных(для данной программы) функций(а это тысячи строк кода)....нужно просто поотключать те модули которые ты не юзаеш smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Snowy
Дата 26.8.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Но ведь не 14Мб! Ладно 1.4Мб, но не 14...
Значит подо что-то сам же и занял.
А может где-то утекает.
Гадать невозможно.
PM MAIL   Вверх
Palladin
Дата 27.8.2006, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: 3
Всего: 17



Цитата(Snowy @  26.8.2006,  10:28 Найти цитируемый пост)
Но ведь не 14Мб! Ладно 1.4Мб, но не 14...

Да я не говорю про стандартные модули, может у него в программе нужно было вызвать множество модулей, а использовал из каждого по паре функций к примеру, вот по этому 14 метров smile хотя чтобы 14 метров было, нужно ,наверное, все модули подключить smile 

Может ты там сам какието процедуры писал smile может они кривые, и из-за них морозит smile 

P.S. Но как сказал Showy кадать бессмысленно, покажи весь юнит, может тогда станет понятно smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Snowy
Дата 27.8.2006, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



RooR, лишние модули влияют на размер программы, а не на память.
А у человека программа маленькая.
Так что не видя кода, сказать сложно в чём проблема.
Мои телепатические способности не действуют. Видимо не знаю в какую сторону телепатировать smile
PM MAIL   Вверх
Тьма
Дата 27.8.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 22.1.2005
Где: Украина, Винница

Репутация: 1
Всего: 4



Хорошо, а если прогармма на АПИ и на винте занимает 40 кб, а в памяти 1.5 метра? почему так? подгружает системные ДЛЛ?
(все хотел задать это т вопрос на форуме, но забывал)


--------------------
Vir magni ingenii                 
PM MAIL ICQ   Вверх
Sunvas
Дата 27.8.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Тьма @  27.8.2006,  09:51 Найти цитируемый пост)
Хорошо, а если прогармма на АПИ и на винте занимает 40 кб, а в памяти 1.5 метра? почему так? подгружает системные ДЛЛ?

Да. Именно так обычно и бывает. Но, как говорил, Snowy:

Цитата(Snowy @  26.8.2006,  10:28 Найти цитируемый пост)
А может где-то утекает.
Гадать невозможно.




--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
dumb
Дата 27.8.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



Тьма, смотри тут
PM MAIL   Вверх
Тьма
Дата 27.8.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 339
Регистрация: 22.1.2005
Где: Украина, Винница

Репутация: 1
Всего: 4



спасибо


--------------------
Vir magni ingenii                 
PM MAIL ICQ   Вверх
Pavelbej
Дата 28.8.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



Вот тут, чем больше загружаемая картинка тем больше памяти занимает программа, доходило аж до 30 МБ. Наверное чтото тут не правильно.
Код

procedure TForm1.ListBox1Click(Sender: TObject);
var
  f : TFileStream;
  w, h, ww : word;
  Exte : shortstring;
  b1, b2 : Byte;
begin
      Image1.Picture.LoadFromFile(ListBox1.Items[ListBox1.itemindex]);
      Exte := LowerCase(ExtractFileExt(ListBox1.Items[ListBox1.itemindex]));
      if (Exte = '.bmp') then
        begin
         try
          f := TFileStream.Create(ListBox1.Items[ListBox1.itemindex], fmOpenRead or fmShareDenyWrite);
          f.Seek(18, soFromBeginning);
          f.ReadBuffer(w, SizeOf(w));
          f.ReadBuffer(h, SizeOf(h));
         finally
          f.Free;
         end;
        end;
      if (Exte='.jpg') or (Exte='.jpeg') then
        begin
          try
          f := TFileStream.Create(ListBox1.Items[ListBox1.itemindex], fmOpenRead or fmShareDenyWrite);
          f.Seek(2, soBeginning);
          ww := 2;
          repeat
          f.Seek(ww - 2, soFromCurrent);
          f.ReadBuffer(b1, 1);
          f.ReadBuffer(b2, 1);
          if (b1 <> $FF) or (b2 = $00) or (b2 = $FF)
          then
            Begin
              repeat
                f.Position := f.Position - 1;
                f.ReadBuffer(b1, 1);
                f.ReadBuffer(b2, 1);
              until ((f.Position + 2) > f.Size) or
                    ((b1 = $FF) and (b2 <> $00) and (b2 <> $FF));
              if (f.Position + 2) > f.Size
              then
                Break
            end;
          f.ReadBuffer(ww, 2);
          ww := SwapWord(ww);
       until ((b1 = $FF) and (b2 in [$C0, $C1, $C2])) or ((f.Position + ww + 4) > f.Size);
       f.Seek(1, soFromCurrent);
       f.ReadBuffer(h, 2);
       f.ReadBuffer(w, 2);
       h := SwapWord(h);
       w := SwapWord(w);
          finally
           f.Free;
           end;
    end;

     Label5.Caption := 'Name: '+ExtractFileName (ListBox1.Items[ListBox1.itemindex]);
     Label3.Caption := 'Resolution: '+InttoStr(w)+' x '+inttostr(h);
     Label1.Caption:= format('Size: %0.1f КB', [GetFileSizeByName(ListBox1.Items[ListBox1.itemindex])/1024]);
end;

PM MAIL   Вверх
Alexeis
Дата 28.8.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



ну если BMPшка весит 30мб, то строка
Код

   Image1.Picture.LoadFromFile(ListBox1.Items[ListBox1.itemindex]);

благополучно их выделит


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Pavelbej
Дата 28.8.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 419
Регистрация: 5.7.2005

Репутация: нет
Всего: 6



alexeis1,  файлы максимум были на 1 МБ.
PM MAIL   Вверх
Alexeis
Дата 28.8.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Но в чем был смысл искать ширину и высоту загруженой картинки, когда она уже загружена? Этот способ я писал для быстрого получения параметров картинки без ее загрузки в память! 
Тут же проще было 
Код

 Image1.Picture.height
 Image1.Picture.Width



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.