Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.04;
Скачать: CL | DM;

Вниз

простейшая прога весит 300 кб...   Найти похожие ветки 

 
heruvim4ik ©   (2002-03-09 14:32) [0]

Ещё один вопрос:
Например, создаю я простейшую программу, которая... ну не знаю... два числа складывает... а она весит > 300 кб... может я чё не так делаю???


 
vrRaven   (2002-03-09 14:51) [1]

библиотека VCL очень много весит... Пиши на API или MFC...
Или воспользуйся компрессорами исполняемых файлов(например ASPack)...


 
Anatoly Podgoretsky ©   (2002-03-09 15:05) [2]

Используй run-time пакеты, как в VB и C и будет твоя программа маленькая, но пакеты надо таскать с собой, если будешь распространаять.


 
Искатель ©   (2002-03-09 15:55) [3]

Или использовать KOL - Key Objects Library
Русская страница http://bonanzas.rinet.ru/rindex.htm


 
copyr25 ©   (2002-03-09 16:00) [4]

Откажитесь от форм.
Редактируйте непосредственно .dpr, как, ну, например в Паскале для DOS
делали:
program Project1;
uses Windows, ...;
BEGIN

END.
Но тогда всю заботу Вам придется взять на себя:)




 
copyr25 ©   (2002-03-09 16:06) [5]

Или используйте aspack, например: http://www.entechtaiwan.com/aspack.htm


 
heruvim4ik ©   (2002-03-09 19:07) [6]

Сжимаю АСПаком, оп иконку пропаривает :-((((


 
lipskiy ©   (2002-03-09 23:05) [7]

Насчет AsPack почитай конфу:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1015398402&n=3
("Помогите с объемом программы..." в "Потрепаться".
Пакостная вещь, этот AsPack и ему подобные...
Я тоже его раньше юзал, и не знал кое-чего...


 
copyr25 ©   (2002-03-09 23:12) [8]

2 lipskiy : Не, нормально сжимает, зря Вы:))


 
lipskiy ©   (2002-03-10 01:14) [9]

2 copyr25
Да я и не говорю, что ненормально, сжимает-то прекрасно, 35% как с куста, я сам все время юзал. Но вот ОСу от такого ехешника тяжко бывает, оказывается...


 
Aleks1   (2002-03-10 02:26) [10]

> heruvim4ik © (09.03.02 14:32)
Еще добавлю только - для "вредной" программы вес действительно важен, для "полезной" - по-фигу. Имхо почти по-фигу, но нужно очень поискать такой комп, где это помешает нормальной работе.


 
Шрек ©   (2002-03-10 04:37) [11]

>vrRaven (09.03.02 14:51)
>библиотека VCL очень много весит... Пиши на API или MFC...
MFC есть для Делфи?? Расскажи поподробнее об этом.


 
Андрей Сенченко ©   (2002-03-11 12:15) [12]

>> Aleks1 (10.03.02 02:26)
>> нужно очень поискать такой комп, где это помешает
>> нормальной работе

Комп в филиале предприятия находящемся примерно в 2000 км от Тебя при скорости их модема 14,6 и необходимости слать обновления пргограммы раз в неделю.
Нашелся ?



 
JibSkeart ©   (2002-03-11 12:42) [13]

А что Обычные Zip,Rar Нынче не в Моде ??


 
Hawk2   (2002-03-11 13:14) [14]

А если перед компиляцией готовой програмки повыключать из проекта лишние пакеты Project->Options->закладка Packages? А из Uses лишние модули, может поможет?


 
wicked ©   (2002-03-11 13:24) [15]

2 Hawk2
это ничего не даст... компилятор всё-таки использует smartlinking (умное связывание :) и лишнего не включает... единственное, из-за чего стоит это делать, так это из-за того, что (лишние) модули могут содержать (лишние) секции автоинициализации...


 
drpass ©   (2002-03-11 13:26) [16]

>JibSkeart
В моде. Только на своем опыте знаю - чтобы юзеры в филиалах где-нибудь в пгт Фундуклеево Забулдыгинского района смогли что-нибудь обновить, единственная операция, которую они должны выполнить - это нажать клавишу Enter. Иначе они будут весь день звонить в компьютерный отдел, с ужасом спрашивая "а что такое "заменить файл". Такая мудрость, как архивация, им недоступна
Я обычно делаю простой дистрибутив, например, с помощью Ghost Installer (www.gInstall.com), который без всяких вопросов распакует и установит все файлы.


 
copyr25 ©   (2002-03-11 17:55) [17]

JibSkeart: А причем тут zip или rar? Разговор, насколько я понимаю, про размер exe-шника.


 
Tsatur Soft ©   (2002-03-11 19:09) [18]

ASPACK прога классная, но если ты считаешь, что твой ехе-шник - святое дело и не хочешь его сжимать( я сам этого не люблю), пользуся инсталятором, например, NSIS - штука классная.


 
Anatoly Podgoretsky ©   (2002-03-11 20:30) [19]

Андрей Сенченко © (11.03.02 12:15)
copyr25 © (11.03.02 17:55)

300 кб жмем, получаем примерно 144, делим на 14.4, получаем 10, умножаем на 10, получаем 100, на всякий случай добавляем 20, итого 2 минут, о чем речь


 
KvORubin ©   (2002-03-11 21:51) [20]

> Anatoly Podgoretsky ©

Какие 2 минут ??? - мне так-же нужно сжать ехе,,
Моя программа делится на несколько частей, каждая
часть делает своё дело и передаёт данные другой части,,,

Так Вот: Этих частей 4 штуки_ЕХЕ давайте прибавим:
300 * 4 = 1.2Mb + код = 3Mb - кому нужны такие размеры ???

(Писать вручную интерфейс не позваляет..)

Кто-нибудь видел что лежит внутри скомпелированной ехе,
там столько грязи, что лучше не смотреть :)

Вопрос: Как избавиться от этой грязи ???




 
vuk ©   (2002-03-11 22:14) [21]

to KvORubin:
От "грязи" избавиться не выйдет, т.к. это не грязь. Однако тот код, что попадает в исполняемый модуль зачастую никогда не исполняется, но здесь сделать ничего нельзя - это издержки компонентной технологии (любой). Для борьбы с объемом можно попробовать использовать компиляцию с использованием пакетов. В этом случае в исполняемый модуль включается только тот код, который имеет отношение к конкретному приложению. Код компонентов в этом случае находится в пакетах и поэтому в обновлении не нуждается. Только здесь нужно осторожно - можно нарваться на проблемы с версиями пакетов.


 
lipskiy ©   (2002-03-11 23:03) [22]

Черт, а как тогда можно сделать нормальную инсталляху, если рабочий ехешник весит в несжатом виде, скажем, мегабайт? Любой внешний инсталлер добавляет объема килобайт 500, ну 300, но не меньше. А весь код по инсталляции (скопировать десяток файлов и прописать пяток ключей в реестре) занимает, ну, 10 кб максимум! Есть простой способ - когда исполняемый ехешник запускает как инсталлер, если имеет другое имя, сам себя копирует, переименовывает и запускается потом как уже установленное приложение. Но в этом варианте неудобно то, что не хочется включать в этот ехешник все ресурсы дистрибутива, а если не включать - то класть рядом и паковать архиватором все вместе - это тоже отстой, так как приходится париться юзеру дважды - распаковать архив, потом запустить Setup. А еще, как верно заметил drpass, забулдыгинские юзеры не найдут WinZip или WinRar - и привет! А если самораспаковыающийся делать - тоже фигня, запускаешь уже вроде ехешник, вроде как инсталлятор, а потом оказывается что нужно еще чего-то запускать, причем оно само об этом не говорит - надо догадаться.


 
Иван Шихалев ©   (2002-03-17 16:30) [23]

Вообще-то WinRAR при создании самораспаковывающихся архивов позволяет указать запускаемый сразу после распаковки экзешник и многое другое. И 7-Zip позволяет... Да и инсталляторы обычно сжимать умеют...


 
KvORubin ©   (2002-03-17 19:02) [24]

> Иван Шихалев ©
Нет нет и нет,, архиваторы это уже крайний случай, их нужно использовать для хранения и транспортировки файлов.

> vuk ©
В слове "Грязь" имеется ввиду не сам лишний код, а картинки,,
в ехе присутствуют куча ненужных картинок и если кто и видел их
или-же кто-то увидит, то ВАМ станет просто смешно - что там лежит.


 
lipskiy ©   (2002-03-17 19:17) [25]

2 KvORubin
А чего там за картинки? Действительно любопытно!
Может их вырезать оттуда мона?


 
KvORubin ©   (2002-03-17 19:58) [26]

> lipskiy ©

А чёрт их знает, я их увидел, когда каким-то взломщиком ехе взламывал и поразился, там кроме картинок ещё борахла навалом.

К примеру:
Для Button1 Вы можете выбрать уже готовую картинку назначения типо OK CANCEL и подобные (только непомню точно в каком случае)
Короче возможно, что вы ети картинки видели..
ОНИ ТАМ - ОНИ КОМПИЛИРУЮТСЯ ВМЕСТЕ !!!

Яб сам от них избавился с удовольствием !!!???


 
Anatoly Podgoretsky ©   (2002-03-17 20:08) [27]

Давай изьбавься, только потом не жалуйся если какой либо диалог не найдет нужному ему ресурса


 
Косильщик_Лужаёв ©   (2002-03-17 21:57) [28]

Ну-у-у-у , я вырезал в общем подчистую всю эту "грязь" (Resource Hacker"ом или VC++) - картинки , иконки , курсоры и прочую дребедень , в результате 300 кб уменьшались килобайт так на 10 . Всего лишь . Так что это думаю не выход .


 
KvORubin ©   (2002-03-17 22:08) [29]

> Косильщик_Лужаёв ©
Вот блин, я тоже так думаю...

Напимер:
Пишу очень большой проект с очень большим и сложным интерфейсом.

есть ли какой-то способ: создать форму вручную, етс она будет весить очень мало и при этом лепить интерфейс так как на обычной 300 килобайтной форме ???



 
Косильщик_Лужаёв ©   (2002-03-18 00:25) [30]


> KvORubin ©


program buttons;
uses windows, messages;
var wc : TWndClassEx;
MainWnd : HWND;
btns : array[0..10] of HWND;
Mesg : TMsg;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
case msg of
wm_destroy :
Begin
postquitmessage(0); exit;
Result:=0;
End;
else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
End;
var xPos,yPos,nWidth,nHeight : Integer;
begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="Buttons : Main";
RegisterClassEx(wc);
xPos:=100;
yPos:=150;
nWidth:=400;
nHeight:=250;
MainWnd:=CreateWindowEx(0,"Buttons : Main",
"Buttons styles",
ws_overlappedwindow,
xPos,yPos,nWidth,nHeight,0,0,
Hinstance,nil);
Btns[0]:=CreateWindowEx(0,"button","bs_pushutton",bs_pushbutton or ws_child or ws_visible,10,10,150,25,MainWnd,0,hinstance,nil);
Btns[0]:=CreateWindowEx(0,"button","bs_defpushutton",bs_defpushbutton or ws_child or ws_visible,10,40,150,25,MainWnd,0,hinstance,nil);
Btns[2]:=CreateWindowEx(0,"button","bs_autocheckbox",bs_autocheckbox or ws_child or ws_visible,10,70,150,25,MainWnd,0,hinstance,nil);
Btns[3]:=CreateWindowEx(0,"button","bs_autoradiobutton",bs_autoradiobutton or ws_child or ws_visible,10,100,150,25,MainWnd,0,hinstance,nil);
Btns[4]:=CreateWindowEx(0,"button","bs_groupbox",bs_groupbox or ws_child or ws_visible,10,130,150,35,MainWnd,0,hinstance,nil);
Btns[5]:=CreateWindowEx(0,"button","bs_auto3state",bs_auto3state or ws_child or ws_visible,10,170,150,25,MainWnd,0,hinstance,nil);
ShowWindow(MainWnd,CmdShow);
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.


вот тебе пример , с инета скачивал , весит 9 кб , форма с кнопками . Только если проект большой - гимор будет соответствующий . Тут ведь ещё события к обьектам не написаны , так , просто кнопочки на форме ...


 
lipskiy ©   (2002-03-18 00:53) [31]

> есть ли какой-то способ: создать форму вручную, етс она
> будет весить очень мало и при этом лепить интерфейс так
> как на обычной 300 килобайтной форме ???

IMHO, если на API, то так и будет. А если просто динамически крейтить формы используя класс TForm, то чтобы его использовать уже придется подкомпилировать все его ресурсы (Forms, Controls,...) и получатся те же 300кб.


 
KvORubin ©   (2002-03-18 15:07) [32]

> Косильщик_Лужаёв ©
Спасибо, но мне нужно то, о чём > lipskiy © говорит..
Но вижу этому не суждено быть, раз 300 значит 300 ;((


 
Андрей Сенченко ©   (2002-03-18 15:48) [33]

Нет... Ну если не лениво или размер настолько критичен, что это необходимо - просто пройди по объявленным в программе модулям ( Windows, SysUtils и т.п. ) и скопируй оттуда все необходимые Тебе функции и процедуры в свой проект.
Предупреждаю сразу, что работа сия подобна цепной реакции ( одни функции потнут за собой другие ) и очень кропотливая, но если надо ...


 
KvORubin ©   (2002-03-18 17:07) [34]

Нет, это слишком много времени и нервов.


 
Andrey007   (2002-03-18 17:12) [35]

А ещё можно разбить свою программу на несколько маленьких dll. И посылать пользователям только то, что нужно обновить. Или программу, которая делает тоже самое если пользователи неграмотные.


 
KvORubin ©   (2002-03-18 21:10) [36]

> Andrey007
Как работать с ДЛЛ ками, я с ними не сталкивался, если у кого есть желание, объясните ПЛИЗ !!!


 
Suntechnic ©   (2002-03-19 00:31) [37]

Как я понял основными проблемами "больших" программ является необходимость обновления. А почему никто патчами не пользуется? Под патчами я понимаю программку, которая будет править старый exe и переделывать его в новый. Зачем тянуть 10 метров по сети, если в программе ничего не поменялось, за исключением 10 байт? Насколько я знаю существуют специальные приложения по созданию патчей(этим у нас билд инженер занимается, так что названий я не знаю, знаю только что имеются) или можно самому написать. Задача не очень сложная, зато интересная. И не надо будет тётенькам из Забулдыгино объяснять что такое ZIP.

А использовать всякие упаковшики я бы не рекомендовал. Тут это тема уже неоднократно подымалась, так что желающие смогут найти почему.


 
lipskiy ©   (2002-03-19 01:04) [38]

2 Suntechnic
!!! Очень интересная мысль! Я об этом раньше никогда не слышал (в смысле - о правке самого ехешника, слышал только о подмене модулей (dllек)).
А нельзя ли поподробнее?


 
Suntechnic ©   (2002-03-19 01:49) [39]

>lipskiy © (19.03.02 01:04)
>А нельзя ли поподробнее?
Ды что подробнее то? Возьми, например, старую версию своей программы, и новую. И посмотри разницу с помощью любой утилиты(например той что идёт вместе с WinCom). В зависимости от того, что менялось разница будет измерятся в байтах. Вот тебе и надо написать утилиту, которая просто напросто уберёт из старой версии ненужные байта, и добавит необходимые. Конечно задача не настолько тривиальная, как я описал, но вполне выполнимая. Естественно сама утилита должна быть на API, чтобы не жрать драгоценные байты при пересылке.



 
lipskiy ©   (2002-03-19 01:59) [40]

2 Suntechnic
Черт, до меня недоперло сразу - то есть отслеживать компилированный код тут совсем не нужно (как я вначале почему-то подумал), а просто написать маленькую утилитку, вернее две, одна мне сравнит два ехешника и выдаст никий блочек разницы (блочки разниц) и некие адреса этих блочков, а другая утилитка, что у юзера, возьмет эти блочки и перепишет в ехешнике. Мудро! Действительно интересная задачка, обязательно попробую такую фишку сделать.



Страницы: 1 2 вся ветка

Текущий архив: 2002.04.04;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.011 c
1-9475
Dimedrol
2002-03-21 10:38
2002.04.04
Настраиваемый интерфейс


14-9633
Neox
2002-02-23 11:45
2002.04.04
Delphi6 Help


3-9353
SkyR
2002-03-11 01:53
2002.04.04
Такая проблема...


1-9536
DRUG
2002-03-14 06:10
2002.04.04
Проблема с формой


14-9636
Evgueni
2002-02-20 22:42
2002.04.04
Посоветуйте прокси хороший...