Форум: "Прочее";
Текущий архив: 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