Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 4_compressed

.pdf
Скачиваний:
16
Добавлен:
20.04.2024
Размер:
7.13 Mб
Скачать

90

005A

КОНСТРУКТОР

 

 

>СПЕЦВЫПУСК #4

 

ASM -ПРОЩЕ

CJ Pusher (lapkarelief@mail.ru)

 

Проснись.

 

Отныне

и навсегда

Пример 1: Хау ту ребут (Kak

pereza-

 

 

 

 

 

 

gruzitza)

 

 

 

 

 

 

 

 

 

 

двери виртуального

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пространства для тебя

 

Otchen prosto. Åñòü

три похода к этой

процеду-

 

 

 

 

 

 

 

 

 

ре. Первый: нажать

Ctrl+Alt+Del. Åñëè

ýòî íå

 

 

 

 

открыты!

Åùå îäèí øàã

 

 

 

 

 

 

помогает, то можно

нажать кнопку Reset на

 

 

 

 

продвинул

òåáÿ íà ïóòè

 

корпусе компьютера.

И, что называется,

“äëÿ

 

 

 

 

 

 

 

 

 

 

 

к почетному

званию

 

утонченных натур”

есть третий способ

- íàïè-

 

 

 

 

 

 

сать прогу, в нашем

случае на ASM’е. Сначала

 

 

 

 

 

 

 

кул-хацкера

- ты начал

 

 

 

 

 

 

 

 

тебе придется набить с помощью текстового

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кодить. Запомни

день, когда

редактора вот такой файл:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заработала

òâîÿ

первая

model tiny

 

 

 

 

 

прога, и когда

наступит

 

.code

 

 

 

 

 

 

 

 

 

день твоего первого взлома,

org 100h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

òû

 

подсчитаешь, сколько

start:

 

 

 

 

 

 

jmp dword ptr reboot

 

 

 

 

äíåé

 

пройдет от кодинга

 

.data

 

 

 

 

 

до хака. Обычно это 120-180

reboot dw 0ffff0000h

 

 

 

 

 

 

 

 

 

 

end start

 

 

 

 

дней, в течение которых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

раз пятнадцать придется

Сохрани этот файл и дай ему расширение asm.

 

 

 

 

 

 

 

 

 

 

переустановить винды, раз

Чтобы запустить эту прогу, надо будет этот

 

 

 

 

 

файл ассемблировать и скомпоновать (не

 

 

 

 

 

 

 

 

 

десять переформатировать

 

 

 

 

 

боись, в нашем случае это то же самое, что и

 

 

 

 

 

винт и, наконец, раз пять

“откомпилить”). Ассемблируют все нормаль-

 

 

 

 

 

сказать себе, что никогда

ные люди с помощью tasm.exe или masm.exe.

 

 

 

 

 

Допустим, что у тебя tasm, тогда набери в ко-

 

 

 

 

 

больше не сядешь за свой

мандной строке команду tasm имя_файла.asm,

 

 

 

 

поганый комп. Виной

 

чтобы его ассемблировать. Если ты все набрал

 

 

 

 

 

правильно, то в текущем каталоге появится

 

 

 

 

всему - первые попытки

 

 

 

 

 

 

файл с именем исходника, но с расширением

 

 

 

 

 

 

 

 

кодинга на ASMе, которые

obj. Это объектный код нашей проги. Тебе не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заставляют процессор

надо знать, что такое объектный код, для тебя

 

 

 

 

 

это всего лишь шаг на пути от исходника на

 

 

 

 

 

хохотать над твоими

 

 

 

 

 

ASM’е к exe’шнику или com’у. Получив obj

 

 

 

 

 

потугами, а тебя - радо-

файл, его надо скомпоновать. Это делается с

 

 

 

 

 

ваться каждой своей удач-

помощью tlink.exe (link.exe). Введи такую ко-

 

 

 

 

 

манду: tlink /t имя_файла. /t значит, что ты хо-

 

 

 

 

ной проге.

 

 

 

 

 

 

чешь получить на выходе файл com, а не exe.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если ты все сделал правильно, то появится го-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ы думаешь, конечно, что ASM - это

шистый и очень даже приятный. Ты сможешь

товая программа, запустив которую, получишь

 

 

 

 

 

привилегия избранных, суперсложная,

въехать в его суть с первого или со второго ра-

полный reboot, причем холодный.

 

 

 

 

 

 

 

 

 

 

 

 

 

нереально неземная вещь и что ты не

за. Несколько простых и очень полезных приме-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Òбудешь в силах въехать в нее никогда.

ров помогут тебе в этом. Все что тебе понадо-

Настало время объяснить, как все

работает.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Не думай так - эту мысль распространили спе-

бится - это компьютер, причем только PC (если

Первое - ты, наверное, знаешь, как

работает

 

 

 

 

 

 

 

 

 

 

циально некоторые недобросовестные разра-

же у тебя компьютер Макинтош, то его придет-

твой проц, если нет - то это несложно

 

понять.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ботчики лицензионного программного обеспе-

ся выбросить и купить новый PC), программа

Вся работа проца заключается в том, что он бе-

 

 

 

 

 

 

 

 

 

чения в целях борьбы с конкурентами и ком-

tasm.exe (можно masm.exe - если ты любишь

рет из памяти подряд числа, смотрит, какой ко-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пьютерными (о Боже, как можно произносить

Microsoft, но это маловероятно), программа

манде они соответствуют и, если какой-то

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

это ужасное слово) пиратами (прямо как в

tlink.exe (можно link.exe - то же самое, что и для

соответствуют, он эту команду выполняет. Если

 

 

 

 

 

средние века - пираты атакуют мирные корабли

masm’а). Не забудь также перезагрузиться в

число не соответствует никакой команде - проц

 

 

 

 

 

 

 

 

и, вместо ядер, стреляют из пушек компьюте-

режиме эмуляции MS-DOS, чтобы избежать

виснет. То есть в проге на ASM’е ты должен

 

 

 

 

 

рами - ужас!). ASM на самом деле - белый и пу-

неприятностей с повисанием виндов etc.

расписать в нужном порядке команды проца,

 

 

 

 

 

 

КОНСТРУКТОР

 

 

 

>СПЕЦВЫПУСК #4

005B

91

 

НЕКУДА

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

которые ты хочешь, чтобы он выполнил. Теперь

чает, что в этом месте начинаются данные. Са-

 

 

 

 

 

 

 

 

 

 

 

представь, что ты только включил комп, чтобы

ми данные - это переменная reboot, которая

 

 

 

 

 

 

 

 

 

 

 

поиграть или залезть в Инет. Как проц будет

описана в следующей строчке - reboot dd

 

 

 

 

 

 

 

 

 

 

 

знать, откуда взять ему самую первую команду

0ffff0000h. dd значит, что переменная занимает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для выполнения? Естественно, никак. Просто

4 байта; если надо один байт, то пишут db, если

 

 

 

 

 

 

 

 

 

 

 

разработчики компании Intel, когда в очеред-

два - то dw. В ассемблере нет типов данных ти-

CMOS checksum error - Defaults loaded.

 

Êàê ýòî

 

 

 

 

 

 

 

ной раз в дупель упились в баре, за стаканом

па “целое число”, символ etc - все в байтах. Для

чудо работает? Тебе нужно знать лишь

строчки

 

 

 

 

решили, что проц будет считывать первую пос

-

 

 

числа надо два байта, для символа -

mov... и out... Что делает mov al, 5eh?

Просто за-

 

 

 

 

 

целого

 

 

 

 

ле включения команду по некоему адресу. А по-

 

îäèí.

В нашей проге требуется 4 байта, чтобы

носит число 5eh в al (move 5eh to al). А

что такое

 

 

 

 

том решили в этом адресе поместить BIOS. Та-

 

записать адрес перехода для команды jmp. Чис-

al? Это один из так называемых регистров про-

 

 

 

 

ким образом проц включается и сразу же попа-

ло 0ffff0000h в hex - это значение адреса, куда

ца. Регистр - это такая ячейка в процессоре, в

 

 

 

 

дает в BIOS, выполняет оттуда команды,

êîòî-

мы прыгаем. Именно по этому адресу проц счи-

которую можно записывать разные числа, хра-

 

 

 

 

рые и делают все то, что делает комп

после

тывает первую команду после включения. Вооб-

нить их там, чтобы потом использовать. Регис-

 

 

 

 

включения или перезагрузки. Это наталкивает

ще, в ASM’е большинство чисел пишут в hexe,

тров более 20 штук, и каждый имеет свое имя.

 

 

 

 

на мысль, что для software перезагрузки надо

поэтому если ты еще не работаешь в этой сис-

Есть регистры вместимостью один, два или че-

 

 

 

 

 

 

 

 

начать выполнять команды оттуда, откуда их

теме, то придется ее выучить (там всего лишь

тыре байта. Размер AL - байт. Дальше - команда

 

 

 

 

начинает выполнять сам проц. Но как это сде-

таблица сложения и умножения). Также, перей-

out 70h, al. Это команда вывода в порт числа.

 

 

 

 

ëàòü? Ýòî

тоже просто, ведь разработчики ком-

дя на hex, ты станешь очень продвинутым чува-

Порт - это как бы канал связи камня и внешнего

 

 

 

 

 

 

 

пании Intel сделали нам великий подарок - ко-

ком (чувихой), так как будешь владеть самой

устройства. Каждое устройство (винт, видеокар-

 

 

 

 

манды перехода. Они заставляют проц выпол-

модной в этом сезоне таблицей умножения.

та, аудиокарта, etc) имеет свой порт, через кото-

 

 

 

 

нять команду, которая лежит в том месте, где

Последняя строчка end start завершает текст ис-

рый проц может управлять им. out 70h, al значит,

 

 

 

 

 

 

 

ты ему скажешь: по нужному тебе адресу (типа

ходника и говорит, что точкой входа в прогу бу-

что надо послать число, которое лежит в al в порт

 

 

 

 

goto в Бейсике). Благодаря им ты можешь за-

дет метка start. Вот так работает ребут. Видишь

номер 70h. Для справки, порты 70h и 71h соот-

 

 

 

 

пускать весь софт на своем компе и переклю-

- немного усилий, и ты получил полезнейшую

ветствуют CMOS’у. Чтобы программировать

 

 

 

 

чаться между приложениями в виндах. А раз

прогу, которую ты можешь усовершенствовать и

CMOS, надо сначала вывести в порт 70h то, что

 

 

 

 

так, то чтобы перезагрузить комп, понадобится

использовать ее во множестве случаев: от про-

в CMOS’е ты хочешь изменить (дата, время, нас-

 

 

 

 

 

 

 

пирога всего из одной команды - переход туда,

писки ее в autoexec.bat до вставки ее в некото-

тройки винта, пароль), а затем вывести в порт

 

 

 

 

где лежит первая команда проца. Именно эту

рый участок тела вируса.

71h новое значение (дату, время, параметр вин-

 

 

 

 

прогу ты только что у себя запустил.

Пример 2: Clear the CMOS

та etc). Здесь мы сначала выводим в порт 70h

 

 

 

 

Что внутри?

 

 

число 5eh, которое значит, что мы будем изме-

 

 

 

 

 

 

 

 

 

нять настройку пароля on/off. Затем мы выводим

 

 

 

 

 

 

 

 

“Маленькая, да удаленькая”, - говорят в таких

в порт 71h ноль, что значит - пароль выключен

 

 

 

 

Разберем ее подробнее. В первой строчке напи-

случаях. Эта программка весит всего 9 байт, а

(чтобы пароль включить, надо вывести единицу).

 

 

 

 

сано - model tiny. Это всего-навсего значит, что

пользы от нее - хоть отбавляй. Если у тебя BIOS

Последняя строчка ret нужна, чтобы вернуться в

 

 

 

 

должен быть com файл, а не exe. Если захочешь

AWARD, то держись - прога сбрасывает пароль и

ÄÎÑ - åñëè áû åå íå áûëî, òî â ÄÎÑ áû ìû íå

 

 

 

 

 

 

 

exe’шник, то пиши model small. Во второй строч-

настройки SETUP’а. Теперь сбросить пассворд в

вернулись и повисли бы.

 

 

 

 

ке написано .code. По названию ясно, что так

BIOS’е так же просто, как его поставить! Запи-

Âîòà

 

 

 

 

 

 

 

 

 

 

отмечается начало кода проги. Это нужно, пото-

сывай и ассемблируй.

 

 

 

 

 

 

 

 

 

 

му что у реальных программ код (команды) и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данные (переменные) должны быть разделены.

model tiny

Вот такие вещи можно писать на ассемблере.

 

 

 

 

 

 

 

Если ты хочешь в каком-то месте вставить дан-

.code

Теперь твоя очередь изучить его. Придется тебе

 

 

 

 

ные, то пиши .data, а потом уже сами данные.

org 100h

также изучить аппаратные части твоего компа и

 

 

 

 

Далее идет строчка org 100h. Она нужна только

start:

сам процессор, так как без этого много на

 

 

 

 

для com файлов и связана с особенностями MS-

mov al, 5eh

ASM’е не напишешь. Необязательно все знать и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DOS (опять вездесущий Mracosoft), и тебе сей-

out 70h, al

держать в голове - нужен просто хороший спра-

 

 

 

час необязательно знать, зачем она нужна. Start:

mov al, 0

вочник. Предлагаю тебе юзать в этих целях

 

 

 

- это место, где находится точка входа програм-

out 71h, al

Interrupt List Ральфа Брауна. Там куча разной

 

 

 

мы. На ассемблере всегда надо помечать место,

ret

текстовой инфы - все тянет мегов на пять-шес-

 

 

 

 

 

 

где находится начало программы (первая ко-

end start

ть. Надеюсь, твоя программерская потенция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

манда). А вот и первая команда - jmp dword ptr

COM-файл получается как в первом примере:

сильно возросла, и ты полон решимости теперь

 

 

 

reboot. Она говорит процу: прыгай (перейди) по

стать реальным кодером, так что соблюдай до-

 

 

 

адресу, который находится в переменной

tasm.exe+tlink.exe /t. Запусти его, перезагру-

зы ежедневного потребления пива и учи ассем-

 

 

 

reboot. Еще ниже - строчка .data, которая озна-

зись и увидишь при загрузке сообщение типа

блер. Успехов!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

92

005C

КОНСТРУКТОР

>СПЕЦВЫПУСК #4

Текстовый реда

илиснова текст

ÌÌÕ (ììõ.mail.md)

 

 

Займемся-ка мы с тобой такой

 

гиперполезной прогой, как

 

текстовый редактор, и напишем

 

его на Дельфях. Ты скажешь:

 

да ладно, блин, в этом номере

 

уже есть один такой

 

на VJ++ - простой как валенок!

Выбираем, даблклик и вот перед собой видим

На фиг мне второй-то?

уже имеющий некоторые знакомые формы

Объясняю: когда на двух

(нет-нет, просто квадратный и с кнопками как

языках делаешь одинаковые

настоящее приложение) проект. Сразу же

можно в Object Inspector’е найти пункт под

программы, то сразу видно,

названием Caption и поменять его в соответ-

на каком языке конкретно ТЕБЕ

ствии со своим извращенным вкусом. Звиняй,

проще и удобнее кодить.

у меня на название фантазии не хватило.

 

Вот попробуешь, помаешься -

 

глядишь, и язык себе

 

конкретный выберешь. Так что

 

готовь себя к процессу, садись

 

за машину, а главное - не

 

боись. Все будет круто. Многого

 

нам от сей лихой проги не на-

 

до: будет уметь файлы откры-

 

вать, редактировать и сохра-

 

нять. Наворотов никаких

 

не будет - но зато чем проще,

 

тем ближе к совершенству.

Теперь сотворим из этого чуда почти настоя-

 

 

 

 

щий редактор. Для этого лезем в панель ин-

Начали

 

Приступим.

струментов Standard (обычно она включена по

 

умолчанию, а если у кого ручонки слишком

 

 

 

 

шаловливые, то это, в общем-то, не совсем

Запускаем Дельфю, видим все ту же форму,

Меню File (что означает “напильник” - если кто

плохо, но...), там ищем кнопень Memo. Она

Object Inspector и всякие менюхи. Так как мы

не знал, можете в словаре проверить). Там,

выглядит как большой piece of..., не как sheet

люди умные, с нуля писать не будем. Основ-

если как следует напрячь извилину, можно

of paper, вот. Давим на нее всем весом крыси-

ная фишка Дельфей как раз в том, что человек

сообразить, что надо жать New...

ного указателя, а потом растягиваем (извини,

умный (и, следовательно, ленивый), проявив

 

если вдруг тебя словом этим огорчил) в сво-

некоторую находчивость, может за пару дви-

После этого знаменательного действа полу-

бодной области формы. Размер не важен -

жений правой рукой (в смысле грызуна туда-

чаем окошко, в коем видим закладки со вся-

сейчас произойдет чудо. В Object Inspector’е,

сюда по коврику протащив) получить уже

ческими заготовочками. Нам нужна закладка

как водится, появились ее, фигулины этой то

практически готовую программку.

Projects, à òàì SDI Application.

есть, свойства. Среди них есть несколько под-

 

 

КОНСТРУКТОР

 

 

 

>СПЕЦВЫПУСК #4

005D

93

 

ктор на Дельфи овый редактор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лежащих незамедлительному изменению.

Memo1.Lines.LoadFromFile

 

дверь), и увидим мы тогда надпись

Close.

Ýòî

 

 

 

 

 

 

 

Первое - это Align (не AlignMENT - до органов

(OpenDialog.FileName);

 

просто выход. Добавив перед

 

волшебным

 

 

 

 

 

 

 

правопорядка нам сейчас дела нет, а просто

 

 

 

 

 

словом Close вот такое:

 

 

 

 

 

 

 

 

 

 

Align). Легким кликом исправляем его значе-

Идея этого фрагмента в том, что уж если

 

 

 

 

 

 

 

 

 

 

 

 

ние с alNone на alClient. Что, понравилось?

OpenDialog сработал, а OpenDialog - это всем

if Memo1.Lines.Count>0 then

 

 

 

 

 

 

 

 

 

 

Как настоящий. Следующая жертва безжалос-

знакомое окошко открытия файла или зага-

 

 

 

 

 

 

 

 

 

 

 

 

тного мышекликанья - это параметр Lines.

дочная пиктограммка с открытой папкой в

if MessageBox(0,’Засейвиться?’,’Save

èëè

 

 

 

 

 

 

 

Сейчас там загадочный (TStrings) и многозна-

правом верхнем углу нашей формы (так его

íåò?’,MB_YESNO)=IDYES then

 

 

 

 

 

 

 

 

 

 

чительное многоточие. Много... тьфу, просто

Дельфя обозначает), то надо из файла читать

SaveItemClick(Sender);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кликаем на многоточие и злобно удаляем там

то, что надо, а имя файла - это и есть

 

 

 

 

 

 

 

 

 

 

все, что можно. А можно удалить глупую

FileName, а файл - это напильник... Но мы от-

 

 

 

 

 

 

 

 

 

 

 

 

строчку

“Memo1”. И напоследок - параметр

влеклись. Теперь сделаем практически анало-

мы получим при жалкой попытке

трусливо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ScrollBars,

его выставляем в ssBoth, чтобы об-

гичную вещь для сохранения. Даблклик по

выйти с каким-то набранным текстом

вопрос

 

 

 

 

 

 

 

скроллиться можно было. Теперь у нас должно

кнопе с дискетой отправит нас туда, где напи-

“Действительно ли мы этого хотим”.

Òàì, ãäå

 

 

 

 

 

 

 

было накликаться нечто в этом роде.

сано SaveDialog.Execute. Исправляем на:

у меня написано “Засейвиться” и

“Save èëè

 

 

 

 

 

 

 

 

 

 

 

нет”, можно писать что угодно, хоть

“Ñ äíåì

 

 

 

 

 

if SaveDialog.Execute

рождения, Пух”.

 

 

 

 

 

 

 

 

 

 

 

 

 

then

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M e m o 1 . L i n e s . S a -

Чего еще? Правильно, About. Здесь

óæå âñå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v e T o F i l e ( S a v e D i a -

готово, достаточно влезть в меню View, а там

 

 

 

 

 

 

 

 

 

 

log.FileName);

нажать Forms... и выбрать AboutBox. Здесь

 

 

 

 

 

 

 

 

 

можно вымещать свое тщеславие.

 

 

 

 

 

Почти то же самое.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×òî

действительно

Можно запускать. Работает. Просто, удобно,

 

 

 

 

 

смешно - это то, что

быстро. Понравилось?

 

 

 

 

 

îíî

работает! Если

Òî-òî æå!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И чудесным образом закончили

хочется, то можно до-

 

 

 

 

бавить

êîä,

который

 

 

 

 

 

Теперь - святая святых. Будем писать код, то

перед

выходом

ñïðî-

 

 

есть оставим на минутку в покое грызуна и

сит, не хотим ли мы

 

 

 

набьем пару слов на клаве. Собственно, что

посейвиться? Для это-

 

 

 

осталось сделать - это научить наш редактор

го надо жестоко даб-

 

 

грузить и сохранять. Начнем с первого.

лкликнуть

по третьей

 

 

 

 

кнопке с чем-то подоз-

 

 

Ловкий даблклик по кнопке с заманчивой кар-

рительно фрейдовски-

 

 

тинкой “типа лоад” - и мы в описании проце-

фаллическим

(после

 

 

 

 

 

 

 

дуры, то есть того, что это кнопка делает. Там

длительного

любова-

 

 

написано OpenDialog.Execute. Исправляем это

íèÿ

ýòèì

шедевром

 

 

на следующий текст:

прикладного искусства

 

 

if OpenDialog.Execute then

ÿ

понял,

 

÷òî

ýòî

94

005E

КОНСТРУКТОР

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

КРАНТЫ СОСЕД СОБСТВЕННЫЙ

Horrific (smirnandr@mail.ru)

Не знаю как ты, а я люблю

слушать музыку по максимуму. Чтобы каждая звуковая волна

проникала сквозь мои клетки и раздалбливала мозги

вдребезги :). А что нужно для отличного прослушивания

цифровой музыки? Всего лишь

компьютер, хороший проигрыватель и пачка памперсов для соседей :).

 

 

 

 

 

Сначала пишем CD-Player

строке “Icon”, и перед тобой появится окно

 

 

 

 

 

выбора иконки для проги (рисунок 2). Нажми

 

 

 

 

 

 

 

кнопку “Load” и найди какую-нибудь подходя-

 

 

 

 

 

Если ты еще не установил Delphi, пока я тут рас-

щую иконку. Когда найд¸шь, жми “ОК” и читай

 

 

 

 

 

пинался, то принимайся за это немедленно. Я

статью дальше.

 

 

 

 

 

буду считать, что ты достал 5-ю версию этой

 

проги. Возможны и другие варианты, но никак

 

 

 

 

 

 

не меньше 3-й. Как устанавливать Delphi, я тебя

 

 

 

 

 

 

учить не буду - в этом номере про инсталляцию

 

 

 

 

 

 

языков вообще отдельная статья есть. Если ус-

 

тановил, то смело запускай, и мы рванем в бой.

 

 

 

 

 

 

Когда Delphi загрузится, перед твоими глазами

 

 

 

 

 

 

откроется новый проект.

 

 

 

 

 

 

Вообще-то, мы уже рассказывали о Delphi, но я

 

 

 

 

 

 

все же постараюсь рассказать все подробно,

 

 

 

 

 

 

чтобы поняли и те, кто не смог с первого раза

 

 

 

 

 

 

пролезть в танкетку. Для тех, кто видит это в

 

 

 

 

 

 

первый раз, сообщаю, что находящееся посере-

 

 

 

 

 

 

дине окно с заголовком “Form1” - это твоя фор-

 

 

 

 

 

 

ма. Слева расположено окно “ObjectInspector”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(рисунок 1), с которым ты будешь очень много

 

 

 

 

 

 

работать и менять различные свойства.

 

 

 

 

 

 

Вот с “ObjectInspector” мы и начнем. Сейчас в

 

 

 

 

 

 

нем находятся свойства твоего окна (будуще-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

го плеера). Щелкни по строке “Caption” и на-

1

пиши там название своего будущего произве-

Рисунок

 

 

 

 

 

дения. Это название ты увидишь в заголовке

 

 

 

 

 

формы и будущей проги. Теперь щелкни по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Найди сверху окно, похожее на рисунок 3. У

меня немного отличается, в связи с моими из-

вращенными пристрастиями, но что-то похо-

æåå åñòü ó òåáÿ.

Рисунок 2

В этом окне под строкой меню справа есть ку- ча закладок - это палитра компонентов. Выдели на ней закладку “System” и найди там “MediaPlayer” (он должен быть третьим слева). Теперь щелкни по нему, а потом щелкни по форме. У тебя должно получиться нечто похожее на рисунок 4. Если не получилось, то стоит обработать руки напильником и зубилом или, по крайней мере, попробовать еще раз :).

На твоей форме теперь появился компонент с названием MediaPlayer1. На этом компоненте ты можешь увидеть 9 кнопок: воспроизведение, пауза, стоп, перемотки, перескоки на следующий и предыдущий трек, запись и вытаскивание CD.

Теперь нажми клавишу “F9” и вставляй музыкальный компакт диск. Ты можешь запросто его слушать. Круто? Ни одной строчки кода, только легкие движения мауса и IBM - совмес-

 

 

КОНСТРУКТОР

 

 

 

>СПЕЦВЫПУСК #4

005F

95

 

ЯМ ИЛИ ТВОЙ МЕГА-ПЛЕЕР

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тимые ручки :). Хотя моей задачей было толь-

на кнопку.

 

 

 

начать

 

 

 

 

 

 

 

 

 

 

ко это, я решил продвинуться немного даль-

 

 

 

 

 

 

MediaPlayer1.ИмяФайла присвоить

значение

 

 

 

 

 

 

 

 

ше. Закрой прогу и возвращайся в Delphi.

Прямо там, где находится курсор, напиши

ИмяФайла из OpenDialog1.

 

 

 

 

А потом делаем суперплеер

 

 

 

следующие пять строчек:

MediaPlayer1.ОткрытьФайл

 

 

 

 

 

 

 

 

 

 

 

 

 

Кончить :)

 

 

 

 

 

 

 

 

 

 

Сейчас мы сделаем универсальный плеер. Не

 

 

 

 

 

 

Взгляни на код и эти строчки - если

òû IBM-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пугайся, много времени и мозгов это не отни-

 

 

 

 

 

 

совместимый чел, то дополнительные

объяс-

 

 

ìåò.

 

 

 

 

 

 

 

 

 

 

нения тебе не понадобятся. Теперь

можешь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

снова жать “F9”, и твоя прога должна

запус-

 

 

 

 

 

 

 

 

Щелкни по закладке “Standart” на палитре

 

 

 

 

 

 

титься. Если не запустилась, то читай

статью

 

 

 

 

 

 

 

 

компонентов и найди там “Button”. Установи

 

 

 

 

 

 

заново.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

его где-нибудь на форме, так же как и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“MediaPlayer”. Зачем это нужно, поймешь чуть

 

 

 

 

 

 

Попробуй нажать кнопку “Открыть”.

Перед то-

 

 

 

 

 

 

 

 

позже, а пока... Делай :)! Теперь найди “Panel”

 

 

 

 

 

 

бой должно открыться стандартное

îêíî îò-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и повтори операцию. Теперь найди закладку

 

 

 

 

 

 

крытия файла. Можешь открывать

файлы:

 

 

 

 

 

 

 

 

“Dialogs” на палитре компонентов и найди там

Рисунок 4

 

 

WAV, MID, AVI и другие мультимедийные

ïðè-

 

 

 

 

 

 

 

 

“OpenDialog” (он должен быть первым). Уста-

 

 

 

 

 

 

мочки. Достаточно только иметь установлен-

 

 

 

 

 

нови его на форму.

 

 

 

procedure

 

TForm1.Button1Click(Sender:

 

ные соответствующие драйверы в системе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TObject);

 

 

 

Все это после открытия можно просмотреть

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После всего этого у тебя должно получиться

begin

 

 

 

(прослушать) с помощью “MediaPlayer”. И все

 

 

 

 

 

нечто похожее на рисунок 5.

 

 

 

if OpenDialog1.Execute then

 

это возможно благодаря “MMSystem” - все,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

begin

 

 

что ты можешь прослушать стандартным воо-

 

 

 

 

 

 

 

 

Можешь оформить все это покрасивее. Для

 

 

 

 

 

 

ружением окон, можно прослушать и через

 

 

 

 

 

 

 

 

этого тебе нужно просто перетаскивать или

MediaPlayer1.FileName:=OpenDialog1.Filename

 

эту прогу.

 

 

 

 

 

 

 

 

растягивать созданные на форме объекты.

;

 

 

 

 

 

И, наконец, улучшаем наш плеер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MediaPlayer1.Open;

 

 

 

 

 

 

 

 

 

 

Надо еще пять минут потужиться, и что-ни-

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

будь выйдет. Выдели созданную тобой кнопку

end;

 

 

Чтобы продолжить, нужно вернуться к форме.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

на форме и иди в “ObjectInspector”. Найди

 

 

 

 

 

 

Чтобы без проблем переключаться между

 

 

 

 

 

 

 

 

строчку “Caption” и измени ее на “Открыть”.

Примечание!! Набирать на клаве нужно

только

формой и ее исходным текстом, используй

 

 

 

 

 

 

 

 

Теперь выдели “MediaPlayer” и в строке

то, что написано между крайними Begin

è End,

пимпу F12.

 

 

 

 

 

 

 

 

“Display” выдели имя созданной тобой панели

все остальное уже должно быть

создано

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(по умолчанию это “Panel1”).

Delphi. Я привожу полную процедуру,

только

Мы хотим сделать очень громкий плеер,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чтобы тебе было удобно глазеть и сравнивать

поэтому добавим возможность изменения

 

 

 

 

 

И еще кое-что. Дважды щелкни по кнопке, и

с тем, что за тебя делает Delphi.

громкости. Для этого щелкни по закладке

 

 

 

 

 

 

 

 

перед тобой откроется редактор текста (рису-

По-нашенски это звучит так:

“Win32” на палитре компонентов и найди там

 

 

 

 

 

 

 

 

нок 6). Здесь Delphi уже создала процедуру (в

компонент по имени “TrackBar”. Установи два

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ней должен стоять твой курсор), которая бу-

 

 

 

 

 

 

таких компонента на свою форму. У тебя дол-

 

 

 

 

 

 

 

 

дет вызываться каждый раз, когда ты жмешь

если OpenDialog1.Выполнить то

жны получиться TrackBar1 и TrackBar2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь выдели любой из них и перейди в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“ObjectInspector”. Найди в нем строку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

“Orientation”. Щелкни по ней, и перед тобой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

появится выпадающий список. Выбери в нем

 

 

 

 

 

 

 

Рисунок 3

 

 

 

 

 

 

 

 

 

“trVertical”. Теперь найди строку “Max” и изме-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ни хранящееся там значение (по умолчанию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

96

0060

 

КОНСТРУКТОР

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дающий список, в котором ты должен выбрать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

только

÷òî

созданную

процедуру

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(TrackBar1Change).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь при изменении положения любого из

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TrackBar-ов будет вызываться

îäíà è òà æå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процедура “TrackBar1Change”.

Давай разбе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рем по косточкам, что написано в этой проце-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дуре. Это будет немного сложно, но полезно.

 

 

 

 

 

 

 

 

 

 

Рисунок5

 

 

 

 

 

 

 

 

 

Первая строка (var LValue,RValue:Word) гово-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рит, что нам нужно выделить память под две

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

переменные Lvalue (это у нас будет значение

Рисунок 7

 

 

 

 

 

 

 

 

 

10) на 255. После этого повтори те же опера-

громкости левого канала) и Rvalue (это значе-

выходов: WAVE/Direct

Sound, CD Audio,

MIDI è

 

 

ции со вторым TrackBar. У тебя должно полу-

ние громкости правого канала).

 

 

 

читься нечто, похожее на рисунок 7.

 

 

 

 

 

 

 

линейный вход - ты

в курсе?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Строка “LValue:=$FF-TrackBar1.Position” выс-

 

 

 

 

 

 

 

 

 

 

Теперь опять нужно выделить этот TrackBar.

читывает значение громкости для левого ка-

(RValue SHL 8)+LValue означает, что

 

 

íàäî

 

 

 

 

 

 

Перейди в “ObjectInspector” и щелкни по зак-

нала. На понятном языке это будет звучать

взять переменную Rvalue, сдвинуть ее на 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ладке

“Events”.

Теперь дважды щелкни по

так: “переменной Lvalue присвоить значение

бит влево и прибавить значение левого кана-

 

 

 

 

строке

“OnChange”. Delphi опять создаст про-

(шестнадцатиричное 255 - текущая позиция у

ла. На первый взгляд непонятно, но попробую

 

 

цедуру. Здесь ты должен написать следую-

TrackBar1”. То же самое касается следующей

объяснить все на пальцах. Представим, что у

ùåå:

 

 

 

 

 

 

 

 

 

 

строки, где рассчитывается громкость право-

тебя значение правого канала равно 55, а зна-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чение левого = 44. После

 

 

 

 

 

 

procedure

 

Увидимся

сдвига числа 55 на 8 бит влево

 

 

 

 

 

 

TForm1.TrackBar1Change-

 

у тебя получится число 5500. А

 

 

 

 

(Sender: TObject);

 

после прибавления 44 полу-

 

 

var LValue,RValue:Word;

â

àäó

 

:) .

 

чится число 5544. Первые две

 

 

 

 

 

 

 

 

begin

 

 

цифры означают правый ка-

 

 

LValue:=$FF-

 

 

нал, а вторые две - левый (мо-

 

 

 

 

 

 

TrackBar1.Position;

 

 

 

 

 

 

 

 

 

 

 

 

 

жет наоборот, я не помню :)).

 

 

 

RValue:=$FF-

 

 

 

 

 

 

 

 

 

 

 

 

Åê!

 

 

 

 

 

 

 

 

 

TrackBar2.Position;

 

 

 

 

 

го канала. Зачем нужно отнимать 255 от теку-

 

 

 

 

 

 

 

 

 

waveOutSetVolume(0, (RValue SHL 8)+LValue);

щей позиции? Это связано с тем, что 0 - озна-

 

 

 

 

 

 

 

 

 

 

end;

 

 

 

 

 

чает наивысшую громкость, а 255 - наимень-

Вот и все, а ты боялась:). Но, прежде чем жать

 

 

 

 

 

 

 

 

 

 

 

 

 

шую. Этими двумя строчками я переворачи-

“F9”, тебе надо сделать еще кое-что. Найди в

 

 

А вот теперь выдели второй TrackBar. Снова

ваю значение текущей позиции у TrackBar1.

самом начале исходного текста слово “uses” и

 

 

иди в “ObjectInspector” и щелкай по закладке

Если не переворачивать, то нижняя позиция

допиши туда слово “mmsystem”. У тебя дол-

 

 

“Events”. Ткни один раз мышкой в строку

TrackBar1 будет соответствовать максималь-

жно получиться нечто похожее на:

 

 

“OnChange”, и перед тобой

появится выпа-

ной громкости, а верхняя - минимальной. Это

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

неудобно,

поэтому я

uses

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сделал подъем с пере-

mmsystem, Windows, Messages, ....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

воротом.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если ты этого не сделаешь, то Delphi не смо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Следующая

строка:

жет запустить твою прогу и будет ругаться на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

waveOutSetVolume(0,

waveOutSetVolume. А вот теперь запусти прогу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(RValue SHL 8)+LValue)

и открой какой-нибудь WAVE файл. Попробуй

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- выставляет громкость

подвигать свои TrackBar-ы - круто? Несколько

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

звука.

 

WaveOut-

строчек кода и пять минут вождения мышью -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SetVolume - процедура,

твой крутой проигрыватель готов. Хотя меня

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ó ñ ò à í à â ë è â à þ ù à ÿ

просили научить тебя проигрывать только му-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

громкость. Первый па-

зыкальные диски, я уверен - Holod не тронет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

раметр в ней (ноль) оз-

мое достоинство. Подключай к компьютеру

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начает, что надо уста-

колонки помощнее и врубай музон, чтоб тем,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

новить

громкость

кто за стеной, даже памперсы не помогли.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WAVE/Direct Sound âû-

Удачи тебе.

 

 

 

 

 

 

 

 

 

Рисунок 6

 

 

 

 

 

 

 

 

 

 

 

 

 

хода. У звуковой карты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

может быть

несколько

Увидимся в аду :).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

98

0062

КОНСТРУКТОР

 

 

>СПЕЦВЫПУСК #4

 

 

 

 

 

 

 

 

 

СУРОВАЯ ПРАВДА Ж

Автор: Mr_False (mr_false@mail.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Небольшой

 

словарь

 

Фактически как это выглядит, показано

íà èë-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3D-программера

 

 

 

 

 

 

 

 

 

люстрации, но, стоит заметить, что начало

êîîð-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

динат находится в центре экрана (по

умолча-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RENDERING - то же рисова-

 

íèþ).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íèå,

только

 

ïî

отношению к 3D

 

Во-вторых - модели

освещения. В D3D

èõ äîñ-

 

 

 

 

 

 

 

 

 

 

 

 

 

(прорисовка твоей 3D

 

тупно две: Плоская

 

 

 

 

 

 

 

 

 

 

 

 

объектам

 

 

 

 

 

 

 

 

 

 

 

сцены, короче).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SOFTWARE/HARDWARE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RENDERING

- òîò

же рендеринг,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

только в

первом

случае все

 

 

 

 

 

 

 

и Гуро - она стоит по

умолчанию.

 

 

 

 

 

 

 

 

 

рисует проц, а во втором - ак-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñåëü.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

POLYGON - в переводе - мно-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

гоугольник, но чаще имеется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ввиду треугольник. А вообще

 

Не вдаваясь в подробности, скажу лишь

òî, ÷òî

 

 

 

 

 

 

 

 

 

 

это - плоскость в трехмерном

 

 

 

 

 

 

 

 

 

 

в плоской рассчитывается цвет всего

полигона

 

 

 

 

 

 

 

 

 

пространстве, ограниченная те-

 

сразу, тогда как в гуро рассчитывается

öâåò â

 

 

 

 

 

 

 

 

 

 

 

 

 

ми многими (или тремя) углами.

 

каждой вершине. Чем это фактически

отличает-

 

 

 

 

 

 

 

 

 

ся, видно на врезанных имагах. Первая

- ïëîñ-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PRIMITIVE - примитивные

 

 

 

 

 

 

 

 

 

 

 

кая модель. Вторая - Гуро. Еще одна инфа: она,

 

 

основные геометрические фигу-

 

 

по принципу своего действия, относится к рен-

 

ры (полигон, например, или ли-

 

 

 

дерингу и освещению. Если ты задал вершины

 

 

 

своего полигона по часовой стрелке по отноше-

 

 

 

 

 

 

 

 

 

 

íèÿ).

 

 

 

 

 

 

 

 

 

нию к наблюдателю, то этот полигон будет ви-

 

 

И все-таки OpenGL лучше.

 

ден (D3D не поленится его нарисовать), и нао-

 

 

 

борот. Ну и обязательно надо знать, что такое

 

 

ЗЫ. Если что-то непонятно или

 

 

 

 

двойная буферизация. Никакого отношения к

 

 

какие-нибудь проблемы - мыль

 

телкам и их буферам эта штука не имеет. Это

 

 

ìíå íà mr_false@mail.ru.

 

просто значит, что ты, когда рендеришь, резуль-

 

 

 

таты своих трудов выводишь не на экран, а сна-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чала в память, и только закончив рисовать, по-

 

Ç

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

казываешь свое старание, попутно рисуя сле-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дравствуй, здравствуй, мой дорогой

 

Рановато пока.). Перед тем как начать програм-

 

дующий шедевр. Сделано так умно не потому,

 

 

 

 

дружок - программер. Я знаю, у тебя

 

мировать эту самую графику, надо знать некото-

 

что звучит неплохо (это тебе не хухры-мухры), а

 

 

 

 

 

 

уже давно чешутся руки от желания

 

рые основы. Во-первых, это система координат.

 

только лишь потому, что иначе экран мигает и

 

 

 

 

написать свою 3D прогу/гамесу/фиг-

 

В D3D она левая. Это просто значит, что ось Z

 

дергается (я программил и без пресловутой бу-

 

 

 

 

 

 

 

 

 

 

 

 

ню. Но ты не знаешь - как. Мхнда... Ты, типа,

 

устремлена в глубь экрана, X - вправо, Y - вверх,

феризации - лучше бы ты не видел). Вроде все.

 

 

 

 

 

 

 

 

 

 

пишешь на C++. Нет?! Тяжелый случай... Ну,

 

а не то что к ней свою руку (левую) приложили

 

Творить

 

 

иди учись, здесь я тебе ничем помочь не могу...

коммунисты.

 

 

 

 

 

 

 

 

 

Если ты действительно пишешь на C (или уже

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

научился - ну и шустрый же ты!), то сейчас ты

 

 

 

 

 

 

 

 

 

Для того чтобы начинать творить, надо сначала

 

 

будешь открывать просторы Direct3D вместе со

 

 

 

 

 

 

 

 

 

обзавестись описаниями функций и классов (в

 

 

мной (“э-э-э, я хочу сказать, ну ты можешь, ес-

 

 

 

 

 

 

 

 

 

данном случае это методы и интерфейсы соот-

 

 

ли хочешь, но, если не хочешь, ты не обязана,

 

 

 

 

 

 

 

 

 

ветственно - Direct3D использует Component

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ты просто могла бы... Да” :)). А рисовать мы бу-

 

 

 

 

 

 

 

 

 

Object Model (COM), но это нам пока особо не

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дем... Треугольник, т.е. полигон (доволен?, а ты

 

 

 

 

 

 

 

 

 

суть важно, поэтому я не буду заострять на этом

 

 

думал, я тебя заставлю сцены из анрыла рисо-

 

 

 

 

 

 

 

 

 

внимания - все подробно описано в SDK). “А что

 

 

вать с применением Environment Mapping, ба-

 

 

 

 

 

 

 

 

 

за SDK??” - наверняка спросишь ты. Настал че-

 

 

нального текстурирования и т.д.? А вот и кукиш.

 

 

 

 

 

 

 

 

 

ред объяснять. SDK, он же Software Development