Страницы: 1 2 вся ветка
Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

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



lipskiy   (2002-03-19 02:03) [41]

Тут самый сложный момент - корректно найти различия. Нет ли где описаний каких-нибудь по этой теме? Ведь нужно не просто побайтно сравнивать, а искать вставленные и вырезанные блоки. Как это делается? (чисто алгоритмически).



Suntechnic   (2002-03-19 02:16) [42]

>lipskiy © (19.03.02 02:03)

>вернее две, одна мне сравнит два ехешника и выдаст никий блочек разницы (блочки разниц) и некие адреса этих блочков, а другая утилитка, что у юзера...

Это зависит от реализации. Можно всё в одну впихнуть, а можно и в две разнести. В одну удобнее, т.к. тёте Маше из Мухосранска не надо будет объяснять, что надо запустить вот это и нажать туда-то...

>Ведь нужно не просто побайтно сравнивать, а искать вставленные и вырезанные блоки.

Тебе ж говорят, задача не такая тривиальная как кажется :). Тебе голова на что дана? А описание алгоритма ты навряд ли найдёшь. Это всё равно, что пытаться найти алгоритм замены подстроки.



Andrey007   (2002-03-19 09:34) [43]

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

Ну, посмотрите help, книжки какие-нибудь. Может чего и на этом сайте есть.



lipskiy   (2002-03-19 12:59) [44]


> Тебе ж говорят, задача не такая тривиальная как кажется
> :). Тебе голова на что дана?

В ней рот, которым я ем :)

> А описание алгоритма ты навряд ли найдёшь

Да просто спросил, ведь если есть готовые решения, то чего изобретать гайку от велосипеда. Придумаем, конечно!



Andrey007   (2002-03-19 14:30) [45]

Насчёт сравнения файлов. В состав всех ОС от MS входит программа File Compare (fc.exe). Она запускается в консольном окошке и выплёвывает в него результаты сравнения. Но можно сделать и так, чтобы результаты сравнения двух файлов сохранялись в текстовый файл. Осталось только обработать эти результаты.



vedmed   (2002-03-19 15:41) [46]

Еще насчёт сравнения файлов см. http://rpi.net.au/~ajohnson/delphi компонент TDiff



-=GaLaN=-   (2002-03-25 01:36) [47]

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



Alex_LG   (2002-03-25 14:50) [48]

всё улучшится - не такой он уж и "smart" :0)



-=GaLaN=-   (2002-03-25 18:54) [49]

Говорю же - пробовал - не помогает.



Андрей Сенченко   (2002-03-25 19:07) [50]

-=GaLaN=- © (25.03.02 18:54)

Ну мне то помагало. После того, как SysUtils до 2-х нужных мне функций покоцал - значительно легче стало.




Страницы: 1 2 вся ветка
Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.84 MB
Время: 0.038 c
1-9443            Gayrus                2002-03-22 17:28  2002.04.04  
String


14-9643           VID                   2002-02-21 18:09  2002.04.04  
Об InterBase 2


1-9546            SemenK                2002-03-24 11:05  2002.04.04  
КАК СОЗДАТЬ ФОРМУ ОТПРАВКИ ПИСЬМА ?


1-9463            Mummi                 2002-03-25 14:48  2002.04.04  
В ячейке StringGrida есть слово. Как узнать в какой позиции слова стоит курсор? (типа свойства SelStart)


4-9683            Basaev                2002-02-03 03:52  2002.04.04  
Как закрыт другую програму из своей