Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Созданное на Delphi 32 приложение по умолчанию загружает библиотеки OLE32 которые весят порядка 1.5 мега. В том случае, если приложение не использует технологию OLE и не работает с Borland Database Engine, для уменьшения объема занимаемой памяти эти библиотеки можно выгрузить, указав в файле проекта первой строкой: FreeLibrary(GetModuleHandle('OleAut32')); В Uses проекта необходимо указать модуль Windows.
Никто ничего не грузит если не используется хоть одна процедура. .
Добавлено спустя 1 минуту, 27 секунд:
Цитата:
Банальный вопрос: как уменьшить размер приложения в памяти(ОЗУ), ну в некоторых случаях помогает UPX, а в остальных? Может в настройках линкера че-нибудь изменить?
А что именно тебя не устраивает? UPX тут ничем не поможет. Разрабатывай программу так, чтобы не жрала почем зря оперативку, это относить и не только к Delphi , но и к любому языку. А по Delphi. Не создавай Auto Create Form. Все формы кроме главной не должны автоматом создаваться, создавай их по мере надобности их вывода. Не забывай освобождать память, хендлы. И еще, не надо смотреть сколько памяти жрет программа, тоесть если сперва она 2 мега, через час у нее 5, а потом опять 2. Windows имеет свойство не всегда сразу освобождать память и выгружать уже не используемые .dll.
Кстати если у тебя программа при старте уходит в трей, то высвободить все ненуджную память можно таким методом.
Или просто сделай такой вариант. Создай приложение, пустое с одной формой. Запусти его. Глянь сколько сьело, потом минимизируй и востанови обратно, память высвобождается (хотя не всегда). У Windows есть режим, когда она высвобождает память если программа минимизируется.
Добавлено спустя 3 минуты, 29 секунд:
Цитата:
2. Отказывайся от VCL, используй например KOL
Это только уменьший .exe файл, я предпочитаю в таких случаях писать на VC++ . Там хоть MFC намного удобнее , чем чистый API или самопал в виде KOL
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Цитата:
А что именно тебя не устраивает?
Ну как сказать, смотря на то, что многие программы занимают не так и много места, АТТ к примеру, то при создании нового проекта 2.5 мегабайта с одной формой выглядит подозрительным. У Visual C# и того хуже - 7.5 мегабайт
Цитата:
Все формы кроме главной не должны автоматом создаваться, создавай их по мере надобности их вывода.
Да это есть, помогает, но есть неудобство - небольшие задержки перед созданием формы, в некотором случае очень заметны, причем их никак не могу избежать.
Цитата:
тоесть если сперва она 2 мега, через час у нее 5, а потом опять 2. Windows имеет свойство не всегда сразу освобождать память и выгружать уже не используемые .dll.
У меня скорее так - сперва 6 мегов, через час - 3, а то и меньше
Цитата:
У Windows есть режим, когда она высвобождает память если программа минимизируется.
Вот это и непонятно. dll'ки, как использовались, так и используються, а памяти стало меньше занимать, в своп что ли ушло
Member
Статус: Не в сети Регистрация: 13.02.2004 Откуда: Вологда-Москва
с сылками на веб разобрался. остался вопрос: как вызвать написание письма из делфи? т.е. чтобы человек нажал на кнопку и перед ним появился аутлук (или другой его клиент) с написаным адресом получателя?
Да это есть, помогает, но есть неудобство - небольшие задержки перед созданием формы, в некотором случае очень заметны, причем их никак не могу избежать
Все зависит от того, что у тебя на форме етсь и какие инициализаци ты делаш при создании формы. В ATT все формы создаются только когда надо, в памяти ничего не висит.
А вообще, не забивай себе голову этим, на компах сейчас не меньше 256 памяти висит, а это для программы до фига!
Lord_of_Darkness ты скажи, че те надо с ними делать-то. А то "быстрый досуп к пикселям" - это из области фантастики.
Можно только быстро получит т.н. scanline - строку пикселей. и то, для 24-х битного цвета
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Аваддон
Цитата:
ты скажи, че те надо с ними делать-то. А то "быстрый досуп к пикселям" - это из области фантастики. Можно только быстро получит т.н. scanline - строку пикселей. и то, для 24-х битного цвета
Ладно хрен с ним, с доступом с этим.
У меня вот по твоему коду эксепшен вылетает при обращении к любому св-ву, процедуре, ф-ии созданного битмапа.
В чем дело??
Добавлено спустя 6 часов, 19 минут, 26 секунд: И еще мне срочно нужен модуль FFT(преобразование Фурье) на делфи, ессно, если у кого завалялся - киньте на мыло, не влом!
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Аваддон
Код:
var i, j, count : longint; lpvBits : array [0..255] of byte; begin for i:= 0 to 255 do lpvBits[i]:=i; BitMap1 := TBitMap.Create; BitMap1.Handle :=CreateBitmap(50, 50, 1, 8, @lpvBits); BitMap1.ReleaseHandle; for i:=1 to 50 do for j:=1 to 50 do begin BitMap1.Canvas.Pixels[i,j]:=random(255); end; end;
Картинка не выводится по Image1.Picture.Bitmap:=BitMap1;
Т.е. image1 остается такого-же цвета как и форма.
В чем дело??
Я что-то забыл сделать??
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Аваддон Да, точно забыл. Вот добавил - теперь картинка выводится, но красно-черная, а мне нужна СЕРАЯ!!!
Добавлено спустя 11 минут, 40 секунд:
Код:
Value Meaning
pfDevice The bitmap is stored as a device-dependent bitmap. pf1bit The bitmap is a device-independent bitmap with one bit per pixel (black and white palette) pf4bit The bitmap is a device-independent bitmap that uses a 16-color palette. pf8bit The bitmap is a device-independent bitmap that uses a 256color palette. pf15bit The bitmap is a device-independent true-color bitmap that uses 15 bits per pixel (RGB compression). pf16bit The bitmap is a device-independent true-color bitmap that uses 16 bits per pixel (bitfield compression).
pf24bit The bitmap is a device-independent true-color bitmap that uses 24 bits per pixel. pf32bit The bitmap is a device-independent true-color bitmap that uses 32 bits per pixel (RGB compression). pfCustom The bitmap uses some other format. TBitmap does not support pfCustom.
pf8bit - 256 color р-р-р!! вот и получается такая картинка (градации серого присутствуют, но так-же и красный цвет!!!) Млин!! Уже вторую неделю с этим Г мучаюсь
Добавлено спустя 3 часа, 27 минут, 47 секунд: Вот функцияд, для задания цвета BitMap1.Canvas.Pixels[i,j]:=RGB(100,100,100); - получаем некий серый цвет, а есть ли функция, чтобы прочитать цвет пиксела по составляющим RGB??? Т.е. можно написать что-то типа RGB(colorR,colorG,colorB):=BitMap1.Canvas.Pixels[i,j]; (данный код ессно не пашет, просто для примера).
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 26.05.2004 Откуда: Kharkov.UA
Lord_of_Darkness писал(а):
Вот функцияд, для задания цвета BitMap1.Canvas.Pixels[i,j]:=RGB(100,100,100); - получаем некий серый цвет, а есть ли функция, чтобы прочитать цвет пиксела по составляющим RGB??? Т.е. можно написать что-то типа RGB(colorR,colorG,colorB):=BitMap1.Canvas.Pixels[i,j]; (данный код ессно не пашет, просто для примера).
Из Windows.pas:
function GetRValue(rgb: DWORD): Byte;
function GetGValue(rgb: DWORD): Byte;
function GetBValue(rgb: DWORD): Byte;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения