Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.015 c
1-1139914089
Азазелло
2006-02-14 13:48
2006.03.19
вопрос по TWordDocument...


2-1141034810
Id
2006-02-27 13:06
2006.03.19
Форма в развернутом виде


11-1122416278
Dodfr
2005-07-27 02:17
2006.03.19
Manage multiple runtime created forms


2-1141133508
zx_
2006-02-28 16:31
2006.03.19
рекурсия


15-1140675749
начинающий
2006-02-23 09:22
2006.03.19
Публично о личном aka блоги





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский