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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как самому сделать windows.dcu?  (Прочитано 20939 раз)
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 Кб - загружено 961 раз.)
Записан
zubr
Гость
« Ответ #9 : 02-04-2006 12:57 » 

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

* Win.rar (4.08 Кб - загружено 936 раз.)
Записан
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 » new

После определенного момента, размеры уже не слишком зависят от подключаемых модулей. Зависят от настроек линковшика. На одном из форумов читал правила, как сделать маленький размер исполняемого файла. Правда под 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 » 

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines