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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.064 c
4-1107854819
MetalFan
2005-02-08 12:26
2005.03.20
EnumServicesStatus


1-1110134197
delphi-code
2005-03-06 21:36
2005.03.20
Помогите решить проблему с Dll


14-1109566131
ex080D:07BBh
2005-02-28 07:48
2005.03.20
What the hell is going on?


14-1109863401
Dann
2005-03-03 18:23
2005.03.20
Forward declarations in Cpp


6-1105789949
Separator
2005-01-15 14:52
2005.03.20
Автодозвон