Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как самому сделать windows.dcu?  (Прочитано 22090 раз)
0 Пользователей и 1 Гость смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 24-03-2006 21:25 » 

Когда создаю файл с винапи , чтобы показывался мессажбокс - файл получается 17 кб. Есть иде Странник, которая линкует файлы весом 4 кб. Как можно самому создать модуль с вызовом винапи функций? колы и т.п. не предлагать, т.к. пробовал ч/з kol.dcu - файл получался - 69,5 кб. Есть есть др. альтернативные библиотеки - дайте ссылки.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #1 : 24-03-2006 21:58 » 

или windows.pas
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 25-03-2006 04:56 » 

windows.pas поставляется - смотри.
я правда не понял зачем это надо - windows.pas просто загружает функции из библиотек.
вот пример кода - экзежник 8к
Код:
program test;
uses windows;
begin
MessageBoxA(0,'TestText','Test',MB_OK);
end
.

компиляция:
Код:
D:\Temp\test>dcc32 test.pas
Borland Delphi Version 14.0
Copyright (c) 1983,2001 Borland Software Corporation
test.pas(6)
7 lines, 0.03 seconds, 3876 bytes code, 1917 bytes data.

а теперь ради эксперимента - откомпилим прогу (екзэшник получается такого же размера):
Код:
program test;
begin
end
.
компиляция
Код:
D:\Temp\test>dcc32 test.pas
Borland Delphi Version 14.0
Copyright (c) 1983,2001 Borland Software Corporation
test.pas(4)
5 lines, 0.01 seconds, 3704 bytes code, 1909 bytes data.

то есть - разницы практически никакой.
« Последнее редактирование: 04-12-2007 21:28 от Алексей1153++ » Записан

Удачного всем кодинга! -=x[PooH]x=-
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 25-03-2006 11:00 » 

чтобы юзать виндовое апи достаточно объвить (импортировать) соответствующие функции, как это делает windows.pas.
Записан

zubr
Гость
« Ответ #4 : 27-03-2006 03:53 » 

В дельфях все равно у тебя 4 kb не получится. В Delphi6, если в пустом консольном приложении отключить все модули получается экзешник под 8 kb
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #5 : 31-03-2006 20:38 » 

я знаю что он загружает функции библиотек, меня интересет как он это делает. можно хотя бы пример этого посмотреть.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #6 : 31-03-2006 20:40 » 

у меня вот че получается:

Borland Delphi for Win32 compiler version 18.0
Copyright (c) 1983,2005 Borland Software Corporation

6 lines, 0.03 seconds, 10680 bytes code, 12160 bytes data.

Output completed (0 sec consumed) - Normal Termination
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #7 : 31-03-2006 20:42 » 

можть из-за компилера
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #8 : 31-03-2006 22:08 » 

компилер запихивает много левого в файл - вот пример

* win.rar (13.58 Кб - загружено 994 раз.)
Записан
zubr
Гость
« Ответ #9 : 02-04-2006 12:57 » 

Вот твой пример, но без модуля Windows.

* Win.rar (4.08 Кб - загружено 965 раз.)
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #10 : 03-04-2006 15:09 » 

Спасибо, zubr, но все равно делф 7 - 13 кб, делф 2006 - 17 кб.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #11 : 03-04-2006 19:24 » 

После определенного момента, размеры уже не слишком зависят от подключаемых модулей. Зависят от настроек линковшика. На одном из форумов читал правила, как сделать маленький размер исполняемого файла. Правда под VC++. Там помоему добились размера 648 байт. Но при этом, многие настройки сильно резали.
Помимо твоей проги, Дельфи вставляет свой код в начало и конец программы. В турбо паскале была библиотека System.dpu вроде. Она подключалась на автомате, без ведома. В Дельфи я не думаю, что ситуация изменилась.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Гость
« Ответ #12 : 03-04-2006 20:25 » 

Цитата
В турбо паскале была библиотека System.dpu вроде. Она подключалась на автомате, без ведома. В Дельфи я не думаю, что ситуация изменилась.
Да, не изменилась. Причем чем позднее версия Delphi, тем больше размер System.dcu
« Последнее редактирование: 03-04-2006 20:30 от zubr » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #13 : 03-04-2006 20:33 » 

zubr, +1 За постоянную помошь в разделе.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
zubr
Гость
« Ответ #14 : 04-04-2006 03:47 » 

Finch, сэнк Улыбаюсь
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #15 : 04-04-2006 14:15 » 

если просмотреть на ваш файл - то там видно, что он импортирует не только MessageBoxA, но и много других функций - почему?
Записан
zubr
Гость
« Ответ #16 : 04-04-2006 21:05 » 

Потому что приложение как минимум загружает динамическую библиотеку User32.dll в которой много функций, а не только MessageBoxA.
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #17 : 04-04-2006 23:39 » 

а почему - если делать это  например на асме - то достаточно одной функции?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #18 : 05-04-2006 00:01 » 

monrus, Читай, что написано выше. + Используй программы, типа DumpBin или Depends от VC++. Которые покажут, что даже нулевая прога сколько функций тянет из других библиотек. Не думаю, что прога на асме, не тянет ни одной функции. Просто наверно это скрыто в каком нибудь скрытом include.
« Последнее редактирование: 05-04-2006 00:07 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
monrus
Опытный

ru
Offline Offline

« Ответ #19 : 07-04-2006 20:49 » 

Спасибо что помогаете! На асме - две функции - box и wsprintfa - но последнюю не использует. а на дельфе их немеренно.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #20 : 07-04-2006 21:08 » 

Ну так, чем шире интерфейс, тем быстрее добиваться цели. Тут уже балансируют между скоростью разработки и размером файла. Ибо чем более универсален код, тем больше размеры он имеет.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
monrus
Опытный

ru
Offline Offline

« Ответ #21 : 07-04-2006 21:26 » 

Спасибо, тема закрыта
Записан
zubr
Гость
« Ответ #22 : 18-04-2006 08:09 » new

Вот интересная ссылка на данную тему: http://www.sources.ru/magazine/0805/helloworld.html
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines