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

Вниз

TForm в 2 кб   Найти похожие ветки 

 
XProger ©   (2006-02-23 14:01) [0]

Программка весит 2 кб (без сжатия всякими UPX"оподобными программами)
Создаёт полноценное окошко чем-то смахивающее на TForm из VCL :)
Программа не требует *.bpl библиотек.
Исходники прилагаются...
http://xproger.mirgames.ru/tmp/Form1.rar


 
Real ©   (2006-02-23 14:03) [1]

и что с того? в программе должен быть толк, а не достоинство в размерах


 
XProger ©   (2006-02-23 14:06) [2]

Real, эта программа нацелена именно на размер...


 
vrem   (2006-02-23 14:09) [3]

offtop - при нажатии на ссылку опера начала открывать как текстовый файл.
сохранить объект как - нормально. это дело у Вас в сайте?


 
начинающий ©   (2006-02-23 14:10) [4]

Кого-то конфузит, что форма на Дэлфи занимает несколько сотен кБ? Меня лично уже давно нет!


 
Real ©   (2006-02-23 14:11) [5]

ясно, смысла никакого нет в этом


 
XProger ©   (2006-02-23 14:11) [6]

vrem, это дело качается IE и FireFox"ом без каких-либо проблем.


 
XProger ©   (2006-02-23 14:12) [7]

Real, смысл есть, только под ваше определение смысла не подходит...
начинающий, уже 3 года как не конфузит ;)


 
grisme ©   (2006-02-23 14:14) [8]

эээ...а в чем, собственно, прикол? Вот когда-то проскакивала ссылка на работу какой-то команды - там 3D графика, музыка(!!!), текстуры, длительность более 10 минут(!!!) и все это весит 64 Кб!!!!! ВОТ - ЭТО МАЛЕНЬКИЙ РАЗМЕР (ну относительно, конечно =). Щас ссылку пойду искать...


 
API   (2006-02-23 14:17) [9]

эта программа нацелена именно на размер...

У меня, вон, окно на полстены. Красивое такое, чистое, с жалюзи, цветочками и портьерами.
Что характерно, места на винчестере не занимает ни бита.
А пользы - немеряно.

Ваша программа занимает 2 КБ. При этом - совершенно бесполезно. Тем более, что "окно" в Windows - понятие системное. То есть, ваша программа к этому окну - совершенно не при чем. А занимает 2 КБ...

В чем прикол?


 
XProger ©   (2006-02-23 14:18) [10]

grisme, да таких валом... просто проблема в том, что в Delphi размера меньше 13 кб приходится добиваться прикладывая некие усилия.

Но собственно, зачем я затеял эту тему - как ужать мою программу ещё сильнее, не прибегая к архиваторам, asm"у, com конвертерам и подобным вещам?


 
XProger ©   (2006-02-23 14:19) [11]

API, принципы работы Delphi хочу понять...


 
grisme ©   (2006-02-23 14:19) [12]

Ловите ссылку - поражайтесь... =)

http://eku.ru/prog/fr08.zip


 
API   (2006-02-23 14:20) [13]

как ужать мою программу ещё сильнее, не прибегая к архиваторам, asm"у, com конвертерам и подобным вещам?

Нарисовать фломастерами на экране монитора...


 
XProger ©   (2006-02-23 14:21) [14]

grisme, как эта демка связана с программированием на Delphi?


 
Real ©   (2006-02-23 14:21) [15]


> grisme


Согласен, если бы речь шла о демке - другое дело.


> XProger ©   (23.02.06 14:12) [7]
> Real, смысл есть, только под ваше определение смысла не
> подходит...


Ты так говоришь, как будто никто из присутствубщих ничего не слыхивал об API. Личное дело каждого - писать на API или использовать такую среду как Делфи. Можно ведь конечно такое окошко и на АСМе написать, а еще можно микроспопом гвоздь заколотить. И я согласен - такие действия, под мое определение смысла никак не подходят. Инструменты созданы для экономии времени. А мне мое время дорого.


 
grisme ©   (2006-02-23 14:21) [16]

XProger ©   (23.02.06 14:19) [11]

Вобщем молодец,  тебя поразила интересность API. =) Похвально...


 
grisme ©   (2006-02-23 14:24) [17]

grisme, как эта демка связана с программированием на Delphi?
А ты думаешь они сдолбили свой GUI на компонентах ? Тот же Win32API и на C++, и на Delphi, и, почти, на асме...=) А про демку вы правы-немного не к месту, но все же...+)


 
XProger ©   (2006-02-23 14:35) [18]

grisme, демка написана на C++ на которой и 1 кб программу написать не составляет проблем. Меня больше не API интересует, а принцип работы Delphi в частности использование системных библиотек (System.pas, SysInit.pas) и директив компилятора способствующих уменьшению размера приложения.

Real, полностью согласен в том, что Delphi в первую очередь предназначена для быстрой разработки приложений.
Но,
program Project1;
begin
end.

компилится в 13 кб, так что можно заметить, что суть моей программы не в использовании WinAPI...


 
Piter ©   (2006-02-23 14:43) [19]

XProger ©   (23.02.06 14:18) [10]

Зачем?

Хотя понимаю, у начинающих всегда присутствует этот этап...

Но ты все таки подумай, может этот этап быстрее минуешь... Расскажи нам, сколько стоит 1 Гб на жестком диске? Сколько стоят процессоры?

Индустрия давно отказалсь от таких бессысленных подходов, размер компенсируется объемом дисков, скорость работы - современными процессорами.

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

Есть оптимальные решения, но явно не в области 2 Kbyte...


 
Piter ©   (2006-02-23 14:46) [20]

XProger ©   (23.02.06 14:35) [18]
демка написана на C++ на которой и 1 кб программу написать не составляет проблем


Такую программу, которую тебе привели в пример (демку) - написать БОООЛЬШАЯ проблема.


 
XProger ©   (2006-02-23 14:46) [21]

Piter, зачем я уже сказал.
На Delphi пишу уже 5 лет. Из них уже 3 года не брезгую чистым API.
На моём жёстком диске 280 Гб пространства, интернет у меня безлимитный.


 
antonn ©   (2006-02-23 14:49) [22]

XProger ©   (23.02.06 14:01)
ну не внушает уже приложение "на дельфи" маленьких размеров:) сейчас функционал требуют, со свободным местом в оперативной памяти и, тем более, на винчестере проблем нет. Не поймут тебя и твоей радости:))


 
XProger ©   (2006-02-23 14:52) [23]

antonn, изучить Delphi от #0 до #255 - разве это не повод для радости?


 
Piter ©   (2006-02-23 14:56) [24]

XProger ©   (23.02.06 14:46) [21]
На Delphi пишу уже 5 лет


странно. И за 5 лет ты не понял, что такое WinApi, какое среди этого всего места занимает VCL?

XProger ©   (23.02.06 14:52) [23]
antonn, изучить Delphi от #0 до #255 - разве это не повод для радости?


как связано изучение Delphi с написанием программ сверхмаленьких размеров?

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


 
XProger ©   (2006-02-23 15:03) [25]

Piter, шире мыслить надо...
Изучив внутреннюю архитектуру Delphi я смогу выжать из неё 100%... Дело не в размере, а в понимании работы.

Дабы предотвратить появление "эмоциональных пустомель", повторю свой вопрос:
Как ужать эту программу с помощью директив компилятора или изменением системных библиотек Delphi?


 
begin...end ©   (2006-02-23 15:03) [26]

> http://xproger.mirgames.ru/tmp/Form1.rar

Не очень хороший код...


 
umbra ©   (2006-02-23 15:06) [27]

а по-моему - отличная работа, XProger. Только если бы на Win98 еще и окошко видно было бы...
ато запускаешь прогу - и ничего. ни ошибок, ни окошка


 
XProger ©   (2006-02-23 15:08) [28]

begin...end, удаление окна и удаление его класса упущены, по идейным соображениям.
Объявление процедур из user32.dll тоже упущение связанное с нежеланием таскать переписанный Windows.pas


 
XProger ©   (2006-02-23 15:08) [29]

umbra, спасибо, не знал. Постараюсь найти причину...


 
begin...end ©   (2006-02-23 15:44) [30]

> XProger ©   (23.02.06 15:08) [28]

Полная инициализация класса окна и проверка на ошибки тоже по соображениям упущены?


 
XProger ©   (2006-02-23 15:51) [31]

begin...end, так точно, надеялся на заполненную 0 структуру :)


 
Piter ©   (2006-02-23 15:51) [32]

XProger ©   (23.02.06 15:03) [25]
Piter, шире мыслить надо...


согласен

XProger ©   (23.02.06 15:03) [25]
Изучив внутреннюю архитектуру Delphi я смогу выжать из неё 100%...


угу. Я тебе уже указал на внутреннюю архитектуру Delphi - это VCL. Изучай его, это полезнее, поверь. Спроси у любого мастера тут.

XProger ©   (23.02.06 15:03) [25]
Дабы предотвратить появление "эмоциональных пустомель",


как хочешь. Ты, естественно, потом это поймешь, никуда не денешься. Была робкая попытка сделать это пораньше.
Ну как знаешь.


 
XProger ©   (2006-02-23 16:25) [33]

Исправил заполнение класса окна http://xproger.mirgames.ru/tmp/Form1.rar
umbra, проверьте пожалуйста на работоспособность в Win98, если Вас не затруднит?

Также заметил странную для меня вещь, даже пустой шаблон программы компилируется в 2 кб. Такое чувство, что секция кода имеет постоянный размер. Почему так происходит? Можно ли как-нибудь это обойти?


 
umbra ©   (2006-02-23 16:36) [34]


> umbra, проверьте пожалуйста на работоспособность в Win98,
>  если Вас не затруднит?
>

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


 
sniknik ©   (2006-02-23 16:55) [35]

> Почему так происходит? Можно ли как-нибудь это обойти?
http://ms-rem.dot-link.net/articles/delphi/delphi.htm


 
XProger ©   (2006-02-23 17:38) [36]

umbra, извини, кое-что переделал, проверь ещё раз (ссылка та же)?
sniknik, огромное спасибо! Многое для себя узнал. Видимо несовершенство линкера Delphi не позволяет уменьшить программу :(


 
begin...end ©   (2006-02-23 18:18) [37]

> XProger ©   (23.02.06 15:51) [31]

А она и была заполнена нулями -- это ведь глобальная переменная. И при стремлении "изучить Delphi #0 до #255" это вполне можно было бы знать.

Только вот почему, например, поле hInstance равно нулю? Честно, не понимаю. Тем более, что в справке ясно указано, что оно должно содержать handle to the instance that contains the window procedure for the class, т.е. в Delphi туда надо помещать глобальную переменную hInstance.

Почему в поле hCursor помещено 65553? Что это за число? Здесь должен быть дескриптор курсора -- например, стандартного курсора, загруженного функцией LoadCursor. Либо, на худой конец -- ноль. А у Вас -- загадочное 65553. Вероятно, именно поэтому и не работает.

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


 
homm ©   (2006-02-23 18:21) [38]


> Создаёт полноценное окошко чем-то смахивающее на TForm из
> VCL :)
Действительно смешно.

А что, про замену системных модулей от Владимира Кладова не слышал? В них хотя-бы функциональность сохраняется, а в предложеной тобой версии как я понял даже регистрация юнитов херится, соответственно uses юзать нельзя :)


 
XProger ©   (2006-02-23 18:54) [39]

homm, слышал ещё, но мне не функционал нужен...
begin...end, дескриптор курсора постоянный, т.к. курсор системный, работоспособность от его значения не зависит. Почему hInstance = 0 работает на Win XP?


 
begin...end ©   (2006-02-23 19:51) [40]

> XProger ©   (23.02.06 18:54) [39]

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

Мощно! Таки да, курсор системный -- дескриптор, возвращаемый LoadCursor для IDC_ARROW (в WinXP), равен 65553. А Вы не задумывались, что в Win98 дескриптор этого же стандартного курсора может быть совсем другим? И поэтому класс не регистрируется всё же именно из-за неверного значения этого дескриптора?

Так и есть -- в Win98 хэндл IDC_ARROW равен 5326. Поместите в hCursor это значение, и программа заработает в Win98. Но, естественно, перестанет работать в WinXP. А чтобы она работала и там, и там, нужно, как все порядочные люди, всего-навсего вызывать LoadCursor.

Сорри, продолжать разговор желания нет. Из-за плохого приёма на другом конце провода.



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

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

Наверх




Память: 0.57 MB
Время: 0.036 c
15-1140326326
delphi-oracle
2006-02-19 08:18
2006.03.19
Все, кто че знает по Messages, поделитесь


15-1140533892
Fl@sh
2006-02-21 17:58
2006.03.19
Книга по FireBird 1.0.3 or 1.5..


5-1127313019
Гость111
2005-09-21 18:30
2006.03.19
разница TStringGrid и TDrawGrid


15-1140525596
Knight
2006-02-21 15:39
2006.03.19
На подходе очередной дефолт... есть предпосылки или?


15-1140558633
xayam
2006-02-22 00:50
2006.03.19
Ресурсы по intraweb studio есть?