Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
Черт, до меня недоперло сразу - то есть отслеживать компилированный код тут совсем не нужно (как я вначале почему-то подумал), а просто написать маленькую утилитку, вернее две, одна мне сравнит два ехешника и выдаст никий блочек разницы (блочки разниц) и некие адреса этих блочков, а другая утилитка, что у юзера, возьмет эти блочки и перепишет в ехешнике. Мудро! Действительно интересная задачка, обязательно попробую такую фишку сделать.



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

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

Наверх





Память: 0.55 MB
Время: 0.008 c
14-9635
AL Greko
2002-02-23 17:40
2002.04.04
Помогите народ с работой с графикой!


14-9647
Aleks1
2002-02-25 03:30
2002.04.04
Климат в Москве


1-9499
oomneeq
2002-03-21 16:14
2002.04.04
Хм, как бы с этим побороться - Library path etc.


1-9531
snoup
2002-03-23 20:13
2002.04.04
Как в TMemo или TEdit или TListBox показать графику например картинку?


1-9579
andreyDAN
2002-03-23 11:03
2002.04.04
Работа с autuCAD через Delphi6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский