Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
14-1109713249
Димон
2005-03-02 00:40
2005.03.20
У меня глюки или активность на форуме правда упала?


14-1109497114
dr Tr0jan
2005-02-27 12:38
2005.03.20
Как настроить вывод в консоль, глюк с русской кодировкой


1-1110365973
Gerakl
2005-03-09 13:59
2005.03.20
Delphi2005 + DotNet


1-1109935767
Gek1
2005-03-04 14:29
2005.03.20
Реестр


4-1105438856
zunder
2005-01-11 13:20
2005.03.20
какая функция включает и выключает устройства?





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