Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизWin API Найти похожие ветки
← →
Вась-Вась (2004-11-29 10:42) [0]Товарищи! Вот вы часто советуете использовать Win Api в своих игрушках, а что это такое и чем оно полезно. Если можно, приведите конкретный пример.
← →
Sphinx (2004-11-29 10:55) [1]Во-первых уменьшаются размеры исполняемого файла,
Во-вторых не знаю почему, но при сочетании VCL + DX (Jedy) у меня постоянно появлялись ошибки, причем не в моем коде.
Ну и это лично моё мнение, WinAPI даёт гораздо бОльший простор действий чем VCL. С АПИ только начинаю разбираться, т.к. Делфи это только хобби и занимаюсь в своболное время, но возможностей у АПИ гораздо больше....ну и то что через него можно взаимодействовать с другими программами не плюс разве? :)
← →
Skyle © (2004-11-29 11:27) [2]
> , но возможностей у АПИ гораздо больше....
А я бы вообще не стал сравнивать. Это неверно.
Дело в том, что Win32API (или там какие-то другие API), это прямой способ общения, VCL - обёртка над API следовательно ещё один уровень.
Из основных в данном разговоре неприятностей от обёртки отметил бы то, что её нужно таскать с собой и, в принципе, само по себе использование кода, ориентированного (дополнительно, плюс к ориентации самого API) на использования в разнообразных случаях.
Можно решать какие-то конкретные прикладные задачи используя VCL, можно не использовать. Половинные решения, имхо, неэффективны.
P.S. Не считать призывом использовать только API.
> ну и то что через него можно взаимодействовать с другими
> программами не плюс разве?
Хм.. Можно пояснить, о чём именно речь?
← →
Sphinx (2004-11-29 12:05) [3]> Хм.. Можно пояснить, о чём именно речь?
можно обратиться и работать с программой, которую написали не Вы и не имеете её исходных текстов.
Сталкивался с необходимостью заполнять текстовое поле и нажимать программно на кнопку в чужой программе.
← →
Skyle © (2004-11-29 12:08) [4]> [3] Sphinx (29.11.04 12:05)
Это чистый API. Как по задаче, так и по реализации.
Это ещё раз доказывает, что сравнивать эти вещи как минимум некорректно.
← →
Sapersky (2004-11-29 12:20) [5]Ещё к достоинствам WinAPI:
1) API"шные проекты лучше переносятся между разными версиями Delphi.
2) Если изучаешь DirectX, то ознакомиться с WinAPI весьма полезно, чтобы привыкнуть к MS"овскому стилю (хотя стоит ли к нему привыкать - ещё вопрос :)).
P.S. Не считать призывом использовать только API.
Я бы тоже не стал призывать. VCL или API - это не главное, если уметь, можно хорошо написать и на том, и на другом. А если кто-то будет говорить, что игры и VCL - две вещи несовместные, пусть посмотрит работу Imp"а с последнего конкурса (тут рядом ветка, или code.rpro.ru).
Во-вторых не знаю почему, но при сочетании VCL + DX (Jedy) у меня постоянно появлялись ошибки, причем не в моем коде.
Красновские примеры - может быть, они известны своей глючностью, у меня лично никаких проблем нет.
Даже если ошибка не в твоём коде (AV in D3D8.dll, например?), она легко может быть вызвана твоим кодом :)
← →
Sphinx (2004-11-29 13:23) [6]> Skyle © (29.11.04 12:08) [4]
Может и некорректно...но говорю же...это хобби...и изучаю всё самостоятельно по книгам...поэтому не спорю когда ошибаюсь в терминологии или еще в чем-то :)
← →
Mona Sax (2004-11-30 04:23) [7]Если вдруг тебе понадобится перейти на С++, и ты будешь знать API, то переход этот пройдет безболезненно.
← →
Omar2002 © (2004-11-30 09:55) [8]Я когда первый раз с апи ничал работать, то вобще ниче не понимал.
Так что я думаю ваши советы ему ничего не дали в плане программирования на АПИ.
Если в кратце - то АПИ - это набор виндовозных функций, с которыми ты и работаешь.
Представь, что ты программируешь на паскале, а тебе нужны всякие окошки с кнопками - Что ты будешь делать? Наверняка напишешь свою библиотечку для вывода этих самых окон и для обработки событий связанных с ними, как раз тогда-то у тебя и получится своя АПИ библиотека.
Вся винда работает как набор функций, которые вызываются при определенных сообщениях.
Собсно все остальное - работа с этими самыми функциями и там уже те придутся самому копаться в примерах и исходниках, чтобы во всем досконально разобраться.
Не бейте за терминалогию, может че и наврал :) но в общем я примерно так себе представляю АПИ.
← →
OSokin © (2004-11-30 19:26) [9]Я несколько статей прочитал, немного освоил, потом стал встроенную справку читать...
Теперь зато могу писать программы, которые на 250 меньше, чем на VCL
← →
MeF88 © (2004-12-01 11:19) [10]
> Теперь зато могу писать программы, которые на 250 меньше,
> чем на VCL
Впрочем VCL не особо мешает игре. Главное в геймдеве, чтобы руки были прямые. Если руки прямые, то можно и на Delphi, на VCL написать крутую игруху. Если руки кривые, то даже на С++ и WinAPI ничего путного не сделаешь.
← →
cyborg © (2004-12-01 11:23) [11]В принципе для игры важно только создание окна приложения, а как его сделать, с помощью VCLа или WinAPI разницы никакой не имеет, разве только размер программы увеличивается из за лишних действий VCL, которые в игре никчему. К тому же достаточно один раз написать модуль по созданию окна и его спользовать в своих проектах.
← →
Kind (2004-12-01 21:15) [12]То же недавно начал изучать API, до этого только VCL и компоненты всякие использовал. С созданием окна разобрался (спасибо этому форуму!) а потом WIN32.HLP и вперёд, ничего сложного вовсе нет! Вначале думал: как же я напишу это на API??? А потом немного подумал, и получил аналог VCL, причём обошёлся меньшим количеством строк кода, получил меньше размер ехе и в чём то большее быстродействие!
← →
Поручик © (2004-12-02 01:30) [13]Kind (01.12.04 21:15) [12]
Создал свой KOL :)
У меня, вот, тоже есть свой VCL, только писал я его под С++
← →
Вась-Вась (2004-12-03 18:41) [14]>Создал свой KOL :)
А что такое этот самый KOL? Может, я вас уже замучал, но, как говорил один очень умный человек - мой преподаватель по мат.ану. - если ты хочешь до конца понять тот или иной вопрос, то объясни его своему другу... Это мне, значит :-D
← →
MeF Dei Corvi © (2004-12-03 19:35) [15]http://kol.mastak.ru/
← →
OSokin © (2004-12-03 20:22) [16]А имхо, просто аппликашку сделал на API вместо VCL
← →
Вась-Вась (2004-12-04 09:42) [17]В общем, по большому счёту,как я понял, для игры оно нужно лишь для создания окна. Однако, выигрыш в размерах ехе это штука полезная.
← →
Вась-Вась (2004-12-19 21:22) [18]Вот какое дело: создал я два элементарных приложения – одно с использованием VCL, а другое – на Win API. Создаётся только пустое окно и всё. Но вот я не заметил особой разницы в размере ехе-шника: что-то около 6 КВ. А почему? Говорят, что экономия значительная! Или это в случае, когда у меня на форме очень много компонентов? Поясните, будьте так любезны!
← →
Sphinx (2004-12-19 21:46) [19]> Вась-Вась (19.12.04 21:22) [18]
> что-то около 6 КВ
менее 15 кБ - это подозрительно...ты не 8-ом Делфи случайно делал?
На VCL размер ПУСТОГО окна - 350 кБ (Д7), на API - (у меня) порядка 40 кБ
← →
Поручик © (2004-12-19 22:16) [20]Вась-Вась (19.12.04 21:22) [18]
> Создаётся только пустое окно и всё. Но вот я не
> заметил особой разницы в размере ехе-шника: что-то
> около 6 КВ. А почему?
Если у тебя на вкладке Project >> Options... >> Packages стоит галочка Build with runtime packages, то размер экзешников будет одинаков, но VCL прога не запуститя у твоего друга, у которого нет Delphi. А чтоб запустилась надо либо прихватить библиотечку на 300 килограмм, либо убрать ту галочку (тогда эта библиотечка запишется в экзешник). Такие дела.
← →
Sphinx (2004-12-19 22:40) [21]> Поручик © (19.12.04 22:16) [20]
забыл я про это :)
> прихватить библиотечку на 300 килограмм
кхмм...vcl70.bpl весит полтора метра а не 300 килограмм...
← →
Поручик © (2004-12-19 22:41) [22]Sphinx (19.12.04 22:40) [21]
> кхмм...vcl70.bpl весит полтора метра а не 300
> килограмм...
забыл я про это :)))
← →
Darth (2004-12-20 03:23) [23]//на API - (у меня) порядка 40 кБ
а у меня 27 и не с пустым окошком... любопытно, да?
← →
Zak3D[@Tm] © (2004-12-20 07:33) [24]Интересно, а у меня пустое 10 кил.
← →
Sphinx (2004-12-20 11:23) [25]> Darth (20.12.04 03:23) [23]
Может быть. Потому и уточнил что это у меня так, можт быть и меньше, может быть и больше.
Я даже знаю как уменьшить до 15-20 кБ, но при этом мне код читать сложнее, в АПИ только разбираюсь ещё.
← →
Darthman © (2004-12-20 13:37) [26]//Интересно, а у меня пустое 10 кил.
Пустое 8.
А то про что я написал, так там и иконка своя есть, и оно умеет работать с файлом конфига, и всякие комбобоксы, чекбоксы там есть :)
← →
Zak3D[@Tm] © (2004-12-21 07:36) [27]Darthman
А ну да, я имел ввиду пустое, но имеющее своё окно : )
← →
DonNikola (2004-12-22 04:48) [28]Размер это конечно здорового, не спорю, но главное это довольно значительная глюкавость VCL. У меня пустое прилижение на VCL столько багов в MemProof"е выдало, что я даже удивился, а 150 kb моих исходников на WinApi работают как часы, без единого замечания от MemProof"а и занимает exe 54kb, что тоже весьма радует.
← →
Sphinx (2004-12-22 11:33) [29]> DonNikola (22.12.04 04:48) [28]
Выскажу своё мнение, если не прав, пусть мастера скажут как оно есть.
VCL сама обрабатывает множество сообщений Windows, поэтому и возникают проблемы, то есть код VCL обрабатывает событие раньще чем скажем происходит вывод графики. Почему так решил? Некоторые примеры Краснова в прямом смысле моргали. То есть сперва происходила отрисовка окна, а уже потом той сцены, которую DirectX выводило на поверхноть этого окна.
З.Ы. А что за MemProof ?
← →
DonNikola (2004-12-22 23:54) [30]Программа для отслеживания утечек памяти, ресурсов, ошибок и так далее, весьма полезная штука при разработке.
www.automatedqa.com
www.automatedqa.com/products/memproof/index.asp
Рекомендую качать всем у кого еще нет, программа бесплатная. Лучше качать 0.936 там хелп и 0.950 - последная версия.
← →
Sphinx (2004-12-24 13:48) [31]> DonNikola (22.12.04 23:54) [30]
> MemProof
Занятно...но у меня моё, далеко не пустое VCL приложение ни одного бага не выдало. Три ошибки были, не спорю, при вызове моих "заглушек" и всё!
А вот в WinAPI выпало множество предупреждений на Делфийский менеджер памяти (приложение правда под DirectX и предупреждения были о необходимости _Relise СОМ объектов (?) ).
← →
DonNikola (2004-12-25 01:22) [32]Значит 7-я версия и выше сделаны без багов в VCL, потому что у меня что 3-я, что 6-я на только сгенеренном приложении выдает потерянную память и еще по мелочи.
А насчет COM, пробовал :=nil, может забыл?
← →
DonNikola (2004-12-25 01:25) [33]И, кстати, попробуй использовать вместо GetMem/FreeMem внутренние функции SysGetMem/SysFreeMem, может это там что-то пропадает.
← →
Sphinx (2004-12-25 10:01) [34]> DonNikola (25.12.04 01:22) [32]
Может быть, у меня именно 7я версия. СОМ:=nil не забывал, именно поэтому и странным показалось поведение MemProof
> GetMem/FreeMem > SysGetMem/SysFreeMem
Спасиба, посмотрю.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.043 c