Форум на Мурмане

Общие форумы => Компьютеры и ПО => Тема начата: WinKiller от 07 Марта 2002, 20:09



Название: Programming
Отправлено: WinKiller от 07 Марта 2002, 20:09
Пишу все на Делфях и Си
--------------------
Недорого (http:////forum.murman.ru/images/smilies/smile.gif)
Быстро
Качественно
--------------------
 Вопросы -> в мыло


Название: RE: Programming
Отправлено: Аспирант Василий от 29 Марта 2002, 10:55
WinKiller >>
А ник зачем такой?
Кстати, разве не сложно использовать два противоречивых языка - ObjectPascal и C(с плюсами или без)


Название: Programming
Отправлено: Never от 17 Апреля 2002, 13:44
Аспирант Василий >> Хороший программист должен знать как минимум 2 языка программирования. (исключая родной и иностранные!)


Название: Programming
Отправлено: WinKiller от 18 Апреля 2002, 21:20
Аспирант Василий, #2 >>
Какой есть...  
Не сложно, а языки - почти одинаковые...


Название: Programming
Отправлено: JBee от 22 Апреля 2002, 09:46
WinKiller >>
Нда... Судя по ответу, программер ты просто дикий!


Название: Programming
Отправлено: WinKiller от 24 Апреля 2002, 15:13
JBee, #5 >>
Cудя по нику, ты пчела с о.Ява... (http:////forum.murman.ru/images/smilies/smile.gif)
Ну что же, приятно, что насекомые интересуются программингом (http:////forum.murman.ru/images/smilies/smile.gif)
Я говорю не о синтаксисе, а о самой философии объектно-ориентированного программирования. Согласись, и в Си, и в Паскале она присутствует - это и роднит эти, казалось бы, непохожие языки. Оба - высокого уровня, объектно-ориентированные и т.д. ИМХО - если умеешь писать на одном, то на другом - без проблем, главное - не писать := в Си и == в Паскале (http:////forum.murman.ru/images/smilies/smile.gif)


Название: Programming
Отправлено: JBee от 27 Апреля 2002, 09:59
WinKiller, #6 >>
Ну, во-первых я не пчела, а шмёль, а во-вторых, я не с острова Ява, а из Джунглей. Jungle-Bee, прошу любить и жаловать.
Эта ошибка еще простительна (хотя мог бы и догадаться), а насчет остального... пожалуй, можно и поспорить.
Я видел людей, помежанных на Builder'е, они творили просто невероятные вещи с OpenGL, писали всякую системную гадость на WinAPI, разные сетевые клиент-серверные приложения, но просто входили в ступор при виде Delphi. При мне человек получил письмо от какого-то зарубежного разработчика с ответом на какой-то вопрос по Netware (он писал программу, отслеживающую пользователей сети с возможностью удаленного доступа на любой из хостов). Ответ пришел на Delphi, и хотя Паскаля там было минимум, в основном какие-то системные функции и процедуры, он парился как последний чайник, ковыряя этот текст.
И такая ситуация не единственная. Есть люди, серьезно работающие на Delphi, но посади ты их на какой-нибудь WatcomC, они не смогут даже текстовый редактор написать.
Так что, напрашивается вывод: как бы ты хорошо не знал суть ООП, но без синтаксиса ты дальше MDIApplication не уедешь.

Кстати, раз ты так хорошо пишешь, как ты утверждаешь "все на Делфях и Си", ответь ка мне на простенький вопрос: что можно написать на С, и нельзя на Delphi? Хотя бы один примерчик!


Название: Programming
Отправлено: Аспирант Василий от 29 Апреля 2002, 13:25
WinKiller, #6 >>
Разница, все-таки, более существенная.
Фигурные скобки и т.п. Плюс эти хедеры вместо модулей. Итд итп. Да и скорость компиляции под си бесит.
Кстати, гляньте мой RED - http://www.ussr.to/Russia/vvi/red.tgz.
Правда, для Kylix, но должен пойти в Делфях 6. С минимумом переделок - в других!


Название: Programming
Отправлено: Never от 29 Апреля 2002, 13:51
Аспирант Василий, #8 >> С и С   считаются языком программирования для профессионалов, да и поклонников этого языка больше, нежели у Паскаля (и его родственников). Если не брать в расчет синтаксис, то разница не такая уж и большая (как между собакой и котом).


Название: Programming
Отправлено: Аспирант Василий от 30 Апреля 2002, 09:54
Never, #9 >>
Мало ли что считается. Про поклонников - это еще вопрос (см. Download.ru).
А про си с плюсами я вот что скажу: если файл в 200 килобайт компилируется больше минуты, то зачем такой компилятор?
Естественно, разница (кроме синтаксиса) небольшая - откуда ей быть-то? Только... Язык С - неоднозначный, непонятный язык (не мое мнение). Про С-билдер - вообще что это за уродство? Это - вторичный С, через тот же Паскаль, тогда как по своей структуре С более низкого уровня и более машинно зависим, чем Паскаль. Да, еще Паскаль более строгий - если уж действительно надо преобразовать тип, это сделать можно, а если по ошибке что-то не то сделал, компилятор сразу скажет. В С этого нет - и возможны десятки глупостей, которые придется ловить уже в работающей программе.
Еще. Программа на Паскале самодостаточна. Для С надо писать makefile или скрипт (такое можно сделать и для Паскаля, но НЕ НУЖНО), т.е. нужно знать хотя бы еще один язык, нужно знать тонкости вызова компилятора и линкера.  

А вообще - слишком разная идеология.


Название: Programming
Отправлено: WinKiller от 23 Мая 2002, 20:53
JBee, #7 >>
Такого просто нет... Абсолютно одинаковые возможности, просто в Си проще делается одно, а в Делфах - другое...


Название: Programming
Отправлено: Baby от 25 Мая 2002, 04:38
Паскаль - для реализации пробной алгоритмов, когда надо только их проверить, он для этого подходит лучше всего, С   для всего остального, я хоть и в 9ом классе но пишу только на си, и разницу между ними вижу немаленькую


Название: Programming
Отправлено: Аспирант Василий от 25 Мая 2002, 13:29
>>С   для всего  остального
Если У Вас большое желание ждать, пока 200кб файл откомпилирует С   минуты (на Паскале - секунды и меньше), то пожалуйста.


Название: Programming
Отправлено: Andrews от 08 Июля 2002, 14:31
Спасибо...


Название: Programming
Отправлено: Baby от 11 Июля 2002, 03:34
Пусть каждый пишет на чём хочет, но в С   благодаря так называемой "неоднозначности", появляеться большая гибкость, чем в паскале, и более красивый код, да и в сях, по-моему, удобней значительно работать с памятью чем в Пасе, к примеру, DLL, которую я щас пишу, синтаксически анализирует строки, а потом вызывает необходимые функции с аргументами разных типов, и процесс конвертации типов занимает всего две инструкции! Я просто в функции передаю обычный указатель на войд, а потом уже копирую в необходиму переменную в самой функции, а так как юзаю указатели на функции и их список динамичен, то этот способ очень удобен, хотя может есть и лучше, но это первая моя реализация.


Название: Programming
Отправлено: Аспирант Василий от 08 Октября 2002, 18:39
>  а потом вызывает необходимые функции с аргументами разных типов, и процесс конвертации типов занимает всего две инструкции!
Не думаю, что в Паскале будут б`ольшие проблемы с этим.
> Я просто в функции передаю обычный указатель на войд, а потом уже копирую в необходиму переменную в самой функции, а так как юзаю указатели на функции и их список динамичен, то этот способ очень удобен, хотя может есть и лучше, но это первая моя реализация.
"Указатель на войд" есть и в Паскале - тот же pointer, а если хотите - вообще
procedure Proc(var A);
С указателями на функции еще проще - есть специальные процедурные типы. Хотя в таких случаях, пожалуй, лучше будет перейти к классам - в Object Pascal и его реализациях: Delphi, Kylix, FreePascal. Что же касается красоты кода и преобразования типов, фраза unsigned char  (если перевести - беззнаковый символ) сильно уж режет глаз. Куда лучше просто byte. Не очень хорошо складывать указатель и целое (а забыть про указатель легко) - и получать какой-то warning. Если действительно надо сложить - так и писать надо
var P:pointer;
    i:integer;
begin
...............
i:=i longint(p);
..............

Или
p:=pointer(longint(p) i);
А если вдруг в С
{char *p;
 int i;
 .........
 p = p i;/*А имелся в виду индекс от p, в форуме он не работает*/
 ......
/*а потом (память была выделена вначале)*/
 i = (p[100])*10;
/*И получи на выбор
Segmentation fault.
Core dumped.
или
Программа выполнила недопустимую операцию и будет закрыта.
*/
}
.


Название: Programming
Отправлено: DMD от 14 Октября 2002, 19:15
А я пишу на C  /C, Basic, ASM(16/32), Java (MS/SUN/ESL), SmallTalk, Perl, Cobol, Delphi. Если что надо написать (бесплатно) то обращайтесь.


Название: Programming
Отправлено: Proud от 14 Октября 2002, 19:18
DMD, #17 >>
а стихи могёшь?


Название: Programming
Отправлено: DMD от 17 Октября 2002, 18:29
Неа, стихи не могу. Если человек - талант, то только в одном.


Название: Programming
Отправлено: terrrorrr от 18 Октября 2002, 16:46
Pascal .... C  
east or west asm is BEST!

вот и все ;р


Название: Programming
Отправлено: Аспирант Василий от 18 Октября 2002, 16:48
> east or west asm is BEST!
И много на asmе в защищенном режиме, желательно под GUI, попишешь?


Название: Programming
Отправлено: terrrorrr от 18 Октября 2002, 16:51
Достаточно напишу
особенно под винду, т.к. с ихними импортами/експортами получается не асм а просто сказка (http:////forum.murman.ru/images/smilies/smile.gif)


Название: Programming
Отправлено: Антихрист от 22 Октября 2002, 10:15
DMD, #19 >>Ну почему же - я например умею не только программировать, но и рисовать, и писать стихи и рассказ тоже могу написать


Название: Programming
Отправлено: PrintF от 19 Ноября 2002, 23:03
На Паскаль и Дельфи просто смотреть не могу.
Только С/С   (а там можно и на OWL, и на MFC, и на VCL (Builder)), но только не Дельфи.


Название: Programming
Отправлено: Аспирант Василий от 20 Ноября 2002, 18:04
PrintF, #24 >>
Аналогично, с точностью до наоборот.
А вообще, билдер выглядит ... странновато: Си (язык более низкого уровня) имеет доступ к паскалевской VCL.


Название: Programming
Отправлено: PrintF от 20 Ноября 2002, 20:21
В Билдере даже можно писать одновременно прогу на OWL, MFC, и Дельфи.
Имхо, это даже плюс. Пришлось здесь юзать библиотеку (на Дельфи написанную) - для работы с MetaFile'ами (поворот, увеличение, вывод на экран и т.д.) - в Билдере это без проблем. Да и любая библиотека написанная на Дельфи, подключается к Билдеру - для доступа через С  . Притом именно через возможности VCL, а не DLL или LIB.

Да и вообще что спорить? Паскаль очень похож на Си, ObjectPascal похож на Си  , Дельфи на Билдер - каждый пишет на том, что ему больше нравиться.


Название: Programming
Отправлено: Аспирант Василий от 21 Ноября 2002, 14:35
В Delphi при большом желании можно писать на OWL и VCL.


Название: Programming
Отправлено: DMD от 21 Ноября 2002, 17:04
Мужики, а кто-нить так вот серьёзно программит? Не так чтобы там под Win в VB, а в реале под *nix'ы (но не Kilix)- просто охота присоединиться /Win к чему-нить стоящему, чем писать очередной "Блокнот". Знаю много - ну скучно всё время писать вирусы (хотя и получается неплохо 8о) ). Может кто работает над чем-нить сложным, системным - я с удовольствием.
Дмитрий.


Название: Programming
Отправлено: Аспирант Василий от 21 Ноября 2002, 18:21
DMD, #28 >>
Не только и не столько Kylix, сколько FreePascal lazarus (http:////forum.murman.ru/images/smilies/laugh.gif).
Но ничего серьезного.


Название: Programming
Отправлено: PrintF от 21 Ноября 2002, 23:50
DMD
Мы только серьезное и программим, всегда. (http:////forum.murman.ru/images/smilies/wink.gif)

А откуда ты взял что круто программят только под *nix'ами? Думаешь это очень сложно? Не сложнее, чем было раньше писать под DOS. Всё приходилось делать почти с нуля и ручками.

Да и написать большую прогу под Виндами тоже не просто, даже на Билдере или ВизуалС.


Название: Programming
Отправлено: Аспирант Василий от 22 Ноября 2002, 17:09
Ну что я могу сказать?
http://www.linux.org.ru/gallery/bigaJZK7q.png (http://www.linux.org.ru/gallery/bigaJZK7q.png)


Название: Programming
Отправлено: Diam = DMD от 22 Ноября 2002, 21:26
Вы не правы - пои иксами программить даже проще (хотя что сравниться с ДОС по простоте ...). Но суть не в этом.
Писать _большие_ проги под C   Builder не просто, а очень просто 8о). А вот нормальное написать - это да. Что за язык программирования, который вместо адресов переменных сохраняет их имена? Так делают и Делфи и Билдер и Бейсик ...
И ещё: будучи совсем закрытой системой с кучей backdoor'ов и багов, Windows тормозит развитие программистов именно из-за вседозволенности - что хошь то и делай и как делай. И главное - всё как конструктор.
У меня давно была идея написать 2 вещи, но однако людей, чтобы разбирались в таких вещах я не нашёл. Ну пришлось забить: а что делать, раз основные увлечения современной молодежи не программирование (да хоть бы и на Визуал Бейсик), а игры, да такие, что вызывают психический заболевания? Или я не прав?


Название: Programming
Отправлено: PrintF от 24 Ноября 2002, 19:09
Аспирант Василий
А на сколько этот Лазарюс похож на Дельфи внутренне? По навзанию объектов, классов и т.д. и т.п. Сколько придется менять в Дельфи (Вин)-коде для компиляции в Лазарюсе?

Diam = DMD
хотя что сравниться с ДОС по простоте
И что ты много писал под ДОСом?

Писать _большие_ проги под C   Builder не просто, а очень просто
И насколько большие проги ты писал на Билдере? (в кол-ве строчек кода, набитых собственными руками).

Windows тормозит развитие программистов именно из-за вседозволенности - что хошь то и делай и как делай. И главное - всё как конструктор.
А ты не тормозись. Изучай Линукс, если тебе он нравиться.

а игры, да такие, что вызывают психический заболевания? Или я не прав?
Ну, если брать повальное увлечение Квакой3, Каунтер-Страйк, УТ, и т.д. и т.п., то я согласен.


Название: Programming
Отправлено: Аспирант Василий от 25 Ноября 2002, 14:36
PrintF, #33 >>
> А на сколько этот Лазарюс похож на Дельфи внутренне? По навзанию объектов, классов и т.д. и т.п.
По структуре/названию объектов, модулей он гораздо ближе к Delphi (скорее, 3, чем 5), чем Kylix.
Более того, даже часть winapi реализована (правда, модуль называется не Windows, а LCLLinux).
 Проблемы возникают в языке. Хотя структура lfm практически полностью соответствует структуре текстового dfm, во FreePascal под линукс не работает директива {$R *.res}. Поэтому она заменена на {$I....} в разделе initialization. Плюс немного изменен основной файл (*.lpr по типу *.dpr).
> Сколько придется менять в Дельфи (Вин)-коде для компиляции в Лазарюсе
Смотря какой код брать... И из какой Delphi.


Название: Programming
Отправлено: PrintF от 29 Ноября 2002, 05:33
Аспирант Василий
А есть что-то вроде Лазарюса, только для Си/Си  ? (ака Билдер для Линукса)

Лазарюс наша (российская) разработка или западная?

P.S. В принципе если в коде (виндовом под Дельфи) к системным функциям обращений нет, то кол-ве изменений должно быть минимальным....


Название: Programming
Отправлено: Аспирант Василий от 29 Ноября 2002, 14:22
PrintF, #35 >>
> А есть что-то вроде Лазарюса, только для Си/Си  ? (ака Билдер для Линукса)
Билдер для Linux уже появился в самом прямом смысле (Kylix 3 = Паскаль С  , как я понял)
Есть качаемая версия, но она больше 100 М. Мне такое, разумеется, не надо. Тем более, что сам Kylix ориентирован на патчнутый libqt, который будет конфликтовать с обычным... Т.е. очень много проблем для тех, у кого самого kylixа нет.
Подобных же систем полно (Glade, KDevelop Qt Designer), но меня как паскалиста они не особо интересуют. Да и тормозят ужасно (любая пересборка пустого приложения на athlonе порядка минуты).
> Лазарюс наша (российская) разработка или западная?
Если быть точным, всемирная (open source). Но проект держится, в общем, на немцах. Хотя немецкая локализация пока отстает от русской. Русскую, правда, ввел я... Как и поддержку русских букв в OnKeyPress (правда, только две строчки кода).
> P.S. В принципе если в коде (виндовом под Дельфи) к системным функциям обращений нет, то кол-ве изменений должно быть минимальным....
Очень часто используются сообщения (messages). Это полностью "выводит из себя" программу на Kylix, но не должно мешать Lazarus. Кроме того, там есть и DC со всеми рисовательными апишными функциями.


Название: Programming
Отправлено: Xtrain от 03 Декабря 2002, 00:55
Winkillera не трогать в компах он
рубит.
А ващето некторых ПОд ВижуалАсемблер
радует писать, А кто в БорДеле париться
Ващето не тормозите народ, хорош програмист
тот кто парит хоть на одном языке
высокого уровня и на асме, в наше  время
и на бейсике можно сложные системные программы писать.


Название: Programming
Отправлено: Never от 19 Декабря 2002, 13:32
Аспирант Василий, #10 >> "Ничто так не ограничивает полет мысли программера, как компилятор" (народная мудрость). Спор о языках, а не о компиляторах.
ИМХО: проблема видимо в психологической совместимости, я даже видел как-то тест, где отвечая на вопросы можно определить подходящий язык.


Название: Programming
Отправлено: Аспирант Василий от 19 Декабря 2002, 13:52
Объективно язык C   сложнее (и противоречивее) Паскаля. Поэтому почти любой компилятор С   будет медленнее Паскаля. Кстати, билдеровский С медленнее Delphi/Kylix.


Название: Programming
Отправлено: Never от 19 Декабря 2002, 13:54
Аспирант Василий, #39 >>комп помощнее и no ploblem!


Название: Programming
Отправлено: R.I.P. от 23 Декабря 2002, 11:14
Аспирант Василий, #21>>

Из меня, конечно, программист посредственный, но нельзя ли пояснить, что сие означает:

>И много на asmе в защищенном режиме, желательно под GUI, попишешь?

Вообще-то, даже я знаю, что защищённый режим - это режим работы процессора и к программированию под ОС (напр. под GUI Windows) он имеет весьма отдалённое отношение. Вот мне хотелось бы увидеть перевод процессора из RM в PM (и V86) на C или пасКАЛЕ(пускай даже через DPMI, но лучше напрямую, через разблокирование процессорной линии А20 (http:////forum.murman.ru/images/smilies/smile.gif) ). И если в PM писать не на Ассемблере, то тогда на чём?


Название: Programming
Отправлено: Аспирант Василий от 23 Декабря 2002, 13:22
> И если в PM писать не на Ассемблере, то тогда на чём?
В PM писать не обязательно надо на ассемблере. А вот сам менеджер памяти (он же DPMI) - там действительно совсем без ассемблера не обойтись. А теперь о чем вообще речь: в защищенном режиме давать обычные вызовы int, которые так любят досовские ассемблисты (а куда там без них ?!!), не всегда корректно (хотя под некоторыми расширителями DOS для DPMI и под Win9x это возможно, но под NT и Linux это в принципе недопустимо, особеннно в посл. случае - там для таких фокусов нужен доп. патч к ядру - ни больше, ни меньше). Стало быть, нужно подключаться к соотв. системным вызовам или, как минимум, быть очень осторожным с int (и вообще с вызовами BIOS/DOS). Я уж не говорю о работе с системной областью памяти. А вызывать системные функции из dll(в Windows)или .so или даже ядра (Linux) на ассемблере, как я понимаю, достаточно хлопотно. Делать же ассемблерные вставки для оптимизированного алгоритма умножения можно везде, и они не сильно зависят от режима. Под V86 виндов или dosemu linuxа на асме можно работать также, как и с DOS.


Название: Programming
Отправлено: R.I.P. от 24 Декабря 2002, 09:19
>>PM писать не обязательно надо на ассемблере.

А на чём же тогда?

>>в защищенном режиме давать обычные вызовы int, которые так любят досовские ассемблисты (а куда там без них ?!!)

1. Вы смешиваете программирование в PM и программирование под ОС.
2. А кто это вызывает int в PM? Если вы имеете ввиду DOS-сессии Windows(а это всё равно программирование под ОС), то это эмуляция RM.
3. Под Win9x можно, кстати, запустить и программу выполняющюю перекл. в PM, но Win это просто проэмулирует и даст ей минимальный уровень привелегий.
4. Если вы считаете, что в PM можно писать не на Ассемблере, то приведите пожалуйста пример на С или пасКАЛЕ перевода в PM или загрузки какой-нибудь таблицы дескрипторов в PM.


Название: Programming
Отправлено: Аспирант Василий от 25 Декабря 2002, 14:09
> 1. Вы смешиваете программирование в PM и программирование под ОС.
Программирование под ОС, работающей в PM и есть программирование в PM (если, конечно, программировать не на интерпретаторе типа BASIC, bash, Perl, VM типа Java и т.п.).
Ведь на низком уровне мы работаем с селекторами/дескрипторами и т.п.
 А то, что Вы предлагаете написать (переключалку RM<->PM) - лишь драйверы защищенного режима. Их собственно и программами в PM назвать полностью нельзя - они же работают наполовину в RM.
> Если вы имеете ввиду DOS-сессии Windows(а это всё равно программирование под ОС), то это  эмуляция RM.
Имеется в виду, например, вызов прерываний из DPMI. Скажем, расширителя DOS DPMI. Правда, есть целый ряд GUIшных программ под винду, вызывающих int. Примеры Sandra, FineReader 4-5.


Название: Programming
Отправлено: R.I.P. от 02 Января 2003, 14:07
Аспирант Василий, #44 >>

> Программирование под ОС, работающей в PM и есть программирование в PM

Если следовать этой логике, то "Hello world" - кроссплатформенная, кросспроцессорная, "кроссрежимная" программа.

> Ведь на низком уровне мы работаем с селекторами/дескрипторами и т.п.

С селекторами/дескрипторами работает ОС и практически ни одна ОС защищённого режима не даст простой смертной программе что-то там делать с ними. Win9x, например, работает в нулевом кольце защиты - ring0, а приложения только в ring3. В win9x для работы в ring0 нужно писать свой VxD (используя asm) - а это одно из самых сложных и нетривиальных занятий под винду, а в NT не проканает и это.

> А то, что Вы предлагаете написать (переключалку RM<->PM) - лишь драйверы защищенного режима.

PM - режим работы процессора. Собственно, перевод процессора из RM в PM (из PM в RM) - это установка (сброс) бита PE регистра управления процессора cr0. Грубо говоря, перевод в PM выглядит так:

mov eax, cr0
or eax, 1
mov cr0, eax

И мы в PM!

> Имеется в виду, например, вызов прерываний из DPMI. Скажем, расширителя DOS DPMI. Правда, есть целый ряд GUIшных программ под винду, вызывающих int.

В PM запрещены вызовы функций DOS/BIOS т.к.:

1. Формат int: int xx. Где 0<=xx<=FFh номер прерывания в таблице векторов прерываний, котороя расположена начиная с адреса 0000h:0000h. В PM же первые 20h вектора зарезервированны под исключения. Кстати, в PM также другой базовый адрес контроллера прерываний - ещё одна причина несовместимости двух режимов.

2. Самое главное! В PM совершенно другая (чем в RM) несегментная организация памяти   множество моделей адресации в ней. Программы реального режима (напр. обработчики прерываний int) считают, что в сегментных регистрах - сегментные адреса, а на самом деле в PM в них хранятся селекторы!

Вызовы же int виндовскими программами (если они вообще есть) ЭМУЛИРУЮТСЯ виндой.


Название: Programming
Отправлено: Аспирант Василий от 03 Января 2003, 13:59
R.I.P., #45 >>
> ни одна ОС защищённого режима не даст простой смертной программе что-то там делать с ними
Так вот в том-то все и дело! Между тем, в той же винде достаточно функций API, использующих их в качестве аргумента.
> Грубо говоря, перевод в PM выглядит так:
И что? Если подходить к этому формально, то Ваш код не является программой защищенного режима. Т.к. это ЕЩЕ реальный режим. А собственно в защищненном режиме будет то, что  идет после Вашего кода.
А вообще - Ваш код - действительно часть драйверов. Тогда как собственно программы защищенного режима должны вести себя соотв. образом. Пусть этот образ проявляется не в том, чтобы что-то делать отдельно, а чтобы чего-то НЕ делать (а именно - лазать по таблице векторов прерываний, сканнировать чужую память). Или даже делать это СПЕЦИФИЧЕСКИМ образом (например, знаменитый 0040h в Win16).
> В PM запрещены вызовы функций DOS/BIOS т.к.:
Так или иначе, они производятся. Либо эмулируются, либо на время производится переключение из защ. режима 386 в реальный и т.п.
> Если следовать этой логике, то "Hello world" - кроссплатформенная, кросспроцессорная, "кроссрежимная" программа.
Само собой разумеется! Скажем, вот так

program Hello;
{$ifdef win32}
{$apptype console}
//FPC в win32 принимает AppType,
//Delphi требует
//Kylix понимает, но не требует, поэтому здесь его не будет
//А BP7- - не знает про win32 и здесь не будет
{$endif}
begin
 writeln('Hello, World!');
end.

Вот такая штука - отнюдь не кроссплатформенная

program Hello;
{$apptype GUI}
uses Windows, Messages;
begin
 MessageBox(0,'Hello, World!', 'Hello',mb_OK mb_IconInformation)
end.

А вот такая, пожалуй, будет

program Hello;
{$ifdef Win32}
uses windows;
{$else}
{$ifdef FPC}
{$ifdef unix}
uses LCLLinux;
{$else}
{$fatal Lazarus doesn't support platforms other than Windows and Linux, at least,yet}
{$endif}
{$else}
{$Fatal Kylix, VP, etc doesn't supported, sorry}
{$endif}
{$endif}
begin
 MessageBox(0,'Hello, World','Hello',0);
end.
> если они вообще есть
Они есть. См. Sisoft Sandra, FineReader. И, скажем, попытку эмулятора wine выполнять такие программы и его ругательства.
А эмулируются или нет - не важно (хотя, конечно, да).


Название: Programming
Отправлено: R.I.P. от 03 Января 2003, 16:34
Аспирант Василий, #46 >>
Очевидно, мы уклонились от темы. Вопрос стоит так: начём программировать в PM? IMHO на Ассемблере т.к. PM - это режим работы процессора, а Ассемблер - его [процессора] язык. Под PM, кстати, я подразумеваю именно PM, а, например, не ОС, работающюю в нем. IMHO самый "чистый" PM - это PM, полученный самостоятельным переводом процессора в защищёный режим из ОС реального режима (напр. DOS). Простой пример: Вы из доса перевели процессор в PM, тогда для поддержания работы процессора в этом режиме нужно фактически писать небольшую ОС. Когда же Вы "программируете  в PM" из-под ОС защищёного режима то, во-первых, это всё уже написанно (на Ассемблере, кстати), а, во-вторых, очень многих вещей Вы сделать просто не сможете.


Название: Programming
Отправлено: Аспирант Василий от 04 Января 2003, 10:31
R.I.P., #47 >>
> Под PM, кстати, я подразумеваю именно PM, а, например, не ОС, работающюю в нем.
ОС не есть PM, но ОС работает в РМ. Программа, работающая под эту ОС, работает в РМ, как ни крути. Другое дело, что эта же программа, возможно, где-то может быть собрана и не для РМ, но в данном случае она собирается для работы в РМ, и все!
А "Чистый РМ" - это что-то новое.
>  (на Ассемблере, кстати),
И на нем тоже, но на нем как раз мало. См. ядро (www/kernel.org)


Название: Programming
Отправлено: DevilFuzzer от 13 Апреля 2004, 18:33
Внимание! Собираю группу программистов работующих на Ассемблере для создания ОС. По вопросам обращайтесь по моему e-mail'у.


Название: Programming
Отправлено: br.less от 14 Апреля 2004, 18:12
хм. а поподробней? что за ОС то будет?
стоит ли вообще начинать? (http:////forum.murman.ru/images/smilies/smile.gif)


Название: Programming
Отправлено: Dilan от 27 Апреля 2004, 15:24
DMD, #28 от 21-11-2002 17:04 >>
> Мужики, а кто-нить так вот серьёзно программит? Не так чтобы там под Win в VB, а в реале под *nix'ы (но не Kilix)- просто охота присоединиться /Win к чему-нить стоящему, чем писать очередной "Блокнот". Знаю много - ну скучно всё время писать вирусы (хотя и получается неплохо 8о) ). Может кто работает над чем-нить сложным, системным - я с удовольствием.
Дмитрий.


Я пишу под *nix'ы давно уже. Дело это неблагодарное - прибыли никакой... Open Source все-таки. (http:////forum.murman.ru/images/smilies/sad.gif)


Название: Programming
Отправлено: Dilan от 27 Апреля 2004, 15:29
DevilFuzzer, #49 от 13-04-2004 18:33 >>
> Внимание! Собираю группу программистов работующих на Ассемблере для создания ОС. По вопросам обращайтесь по моему e-mail'у.

Что, батенька, Биллом Гейтсом себя вообразили, али Линусом Торвальдсом? Кому это надо??? До тебя уже многие постарались - Linux, Unix, *BSD, винды, QNX и т.д.


Название: Programming
Отправлено: Нори от 24 Декабря 2004, 20:25
Люди, подскажите ВБ может работать с объектами из 3D Studio Max функции, без использования DirectX и ActiveX


Название: Programming
Отправлено: br.less от 25 Декабря 2004, 19:13
vb идет лесом


Название: Programming
Отправлено: Павел от 09 Января 2005, 22:02
нужны проги по с   сортировка (метод шейкера)!!
Срочно!!!!!!!!!


Название: Programming
Отправлено: Hipo от 29 Марта 2005, 10:43
Oleg, cachaj!
Program ColorTable;
    Uses Crt;           {Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄЁ Crt}
    Const P  = '    ';  {4 Їа®ЎҐ« }
    Var i,j : Integer;
 BEGIN
   ClrScr;              {®зЁбвЄ  нЄа ­ }
   Window(1,1,80,7);    {®ЇаҐ¤Ґ«Ґ­ЁҐ ®Є­  ¤«п § Ј®«®ў®з­®© з бвЁ в Ў«Ёжл}
   TextColor(Yellow);   {гбв ­®ўЄ  ¦Ґ«в®Ј® жўҐв  бЁ¬ў®«®ў}
   GoToXY(24,1);  WriteLn('’…Љ‘’Ћ‚›‰ ‚›‚Ћ„ ЌЂ ќЉђЂЌ „?‘Џ‹…џ');
   GoToXY(30,2);  WriteLn('’ЂЃ‹?–Ђ –‚…’ЌЋ‘’?');

   TextColor(LightCyan); {гбв ­®ўЄ  паЄ®Ј®«гЎ®Ј® жўҐв  бЁ¬ў®«®ў}
   WriteLn('  0-—Ґа­л© ',P,'4-Ља б­л©    ',P,' 8-’Ґ¬­®бҐал© ',P,'12-ђ®§®ўл©');
   WriteLn('  1-‘Ё­Ё©  ',P,'5-”Ё®«Ґв®ўл© ',P,' 9-џаЄ®бЁ­Ё©  ',P,'13-Њ «Ё­®ўл©');
   WriteLn('  2-‡Ґ«Ґ­л©',P,'6-Љ®аЁз­Ґўл© ',P,'10-џаЄ®§Ґ«Ґ­л©',P,'14-†Ґ«вл©');
   Write  ('  3-ѓ®«гЎ®©',P,'7-‘ўҐв«®бҐал©',P,'11-џаЄ®Ј®«гЎ®©',P,'15-ЃҐ«л©');
   TextColor(3 128);  WriteLn('    i 128-ЊҐаж ­ЁҐ'); TextColor(White);

   For i := 0 to 9 do               {жЁЄ« Ї® 梥⠬ д®­  в Ў«Ёжл 梥⭮бвЁ}
     begin
       Window(i*8 1, 7, i*8 8, 25); {oЇаҐ¤Ґ«Ґ­ЁҐ ®Є­  ¤«п бв®«Ўж  в Ў«Ёжл }
       GoToXY(1,1);                 {Єгаб®а ў ўҐае­Ґ¬ «Ґў®¬ гЈ«г ®Є­ }
       TextBackGround(Black);       {гбв ­®ўЄ  зҐа­®Ј® жўҐв  д®­     }
       WriteLn(' ”®­', i:2);
       WriteLn('ДДДДДДД');
       TextBackGround(i);           {гбв ­®ўЄ  вҐЄг饣® жўҐв  д®­  ®Є­ }

       For j := 0 to 15 do
        begin
          TextColor(j);             {гбв ­®ўЄ  вҐЄг饣® жўҐв  ­ ¤ЇЁбҐ© ў ®Є­Ґ}
          WriteLn('梥в',j:2)
        end
     end; NormVideo; ReadLn
 END.


Название: Programming
Отправлено: Hipo от 29 Марта 2005, 10:51
Cachaj!{        ‚­Ё¬ ­ЁҐ! „«п а Ў®вл нв®© Їа®Ја ¬¬л ­Ґ®Ўе®¤Ё¬®, зв®Ўл:

          1) Turbo Pascal Ўл« гбв ­®ў«Ґ­ ў Є в «®Ј  C:\TP;
          2) Є в «®Ј C:\TP\BGI ᮤҐа¦ « д ©«  egavga.bgi ;
          3) ў ¬Ґ­о  Options/Directories  Ўл« гЄ § ­ Їгвм
             Є д ©«г  graph.tpu,  ­ ЇаЁ¬Ґа,  ‘:\TP\UNITS.

        …б«Ё Turbo Pascal гбв ­®ў«Ґ­ ў ¤агЈ®¬ Є в «®ЈҐ, ­г¦­® Ё§¬Ґ­Ёвм
        Їгвм Є ­Ґ¬г ў Їа®жҐ¤гॠ InitGraph  (10-п бва®Є  Їа®Ја ¬¬л).
}

 Program Lines;
   Uses Graph, Crt; {Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄ Crt Ё Graph}
   Var
     Key              : Char;
     LineStyle        : Word;    { ­®¬Ґа бвЁ«п аЁб®ў ­Ёп «Ё­ЁЁ }
     Style            : String;  { ­ §ў ­ЁҐ бвЁ«п              }
     GrDriver, GrMode : Integer; { вЁЇ Ё ०Ё¬ а Ў®вл Ја дЁзҐбЄ®Ј® ¤а ©ўҐа  }
     GrError          : Integer; { Є®¤ ®иЁЎЄЁ Ја дЁЄЁ          }
  BEGIN
   GrDriver := Detect;         {  ўв®®ЇаҐ¤Ґ«Ґ­ЁҐ вЁЇ  Ја дЁзҐбЄ®Ј® ¤а ©ўҐа  }
   InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); { гбв ­®ўЄ  Ја дЁзҐбЄ®Ј® ०Ё¬ }
   GrError := GraphResult;
   If GrError<>GrOk then begin Writeln('ЋЎ­ а㦥­  ®иЁЎЄ !'); Halt
                         end;
   SetBkColor(LightGray); SetColor(Red);     { 梥в д®­  Ё 梥в аЁб®ў ­Ёп }
  {------------------------------------------------------------}
   OutTextXY(120, 100, 'ђЁб㥬 «Ё­Ёо ®в в®зЄЁ (200,200) Є в®зЄҐ (400,280)');
   Line(200, 200, 400, 280);
   Key:=ReadKey;    { ЇаЁ®бв ­®ў«Ґ­ЁҐ ЁбЇ®«­Ґ­Ёп Їа®Ја ¬¬л }
   ClearViewPort;   { ®зЁбвЄ  ®Є­ }
  {-----------------------------------------------------------}
   OutTextXY(240, 80, 'ђЁб㥬 «®¬ ­­го');
   Rectangle(110, 120, 520, 400);              { аЁб®ў ­ЁҐ а ¬ЄЁ         }
   MoveTo(Round(GetMaxX/2), Round(GetMaxY/2)); { гЄ § вҐ«м ў 業вॠ®Є­  }

   Repeat {жЁЄ« ЇаҐалў Ґвбп ­ ¦ вЁҐ¬ «оЎ®© Є« ўЁиЁ}
     LineTo(Random(GetMaxX-250) 120, Random(GetMaxY-210) 120);
     Delay(100);
   until KeyPressed;

   Key := ReadKey; ClearViewPort;
  {-----------------------------------------------------------}
   OutTextXY(190, 80, 'MҐ­пҐ¬ бвЁ«Ё аЁб®ў ­Ёп «Ё­Ё©');

   For LineStyle := 0 to 3 do
     begin
       SetLineStyle(LineStyle, 0, 1);
       Case LineStyle of
         0: Style:='‘Ї«®и­ п';
         1: Style:='’®зҐз­ п';
         2: Style:='?ваЁеЇг­ЄвЁа­ п';
         3: Style:='Џг­ЄвЁа­ п'
       end;
       Line(120, 150 LineStyle*50, 430, 150 LineStyle*50);
       OutTextXY(450, 145 LineStyle*50, Style);
     end;

   Key:=ReadKey; ClearViewPort; {®зЁбвЄ  ®Є­ }
  {-----------------------------------------------------------}
   OutTextXY(180, 80, 'ЊҐ­пҐ¬ в®«йЁ­г аЁб®ў ­Ёп «Ё­Ё©');
   SetLineStyle(0, 0, 1); {в®«йЁ­  1 ЇЁЄбҐ« }
   Line(140, 200, 430, 200); OutTextXY(450, 195, 'Ќ®а¬ «м­ п');
   SetLineStyle(0, 0, 3); {в®«йЁ­  3 ЇЁЄбҐ« }
   Line(140, 250, 430, 250); OutTextXY(450, 245, '’а®©­ п');
   ReadLn; CloseGraph; {§ ЄалвЁҐ Ја дЁзҐбЄ®Ј® ०Ё¬ }
 END.
{        ‚­Ё¬ ­ЁҐ! „«п а Ў®вл нв®© Їа®Ја ¬¬л ­Ґ®Ўе®¤Ё¬®, зв®Ўл:

          1) Turbo Pascal Ўл« гбв ­®ў«Ґ­ ў Є в «®Јe C:\TP;
          2) Є в «®Ј C:\TP\BGI ᮤҐа¦ « д ©«  egavga.bgi ;
          3) ў ¬Ґ­о  Options/Directories  Ўл« гЄ § ­ Їгвм
             Є д ©«г  graph.tpu,  ­ ЇаЁ¬Ґа,  ‘:\TP\UNITS.

        …б«Ё Turbo Pascal гбв ­®ў«Ґ­ ў ¤агЈ®¬ Є в «®ЈҐ, ­г¦­® Ё§¬Ґ­Ёвм
        Їгвм Є ­Ґ¬г ў Їа®жҐ¤гॠ InitGraph  (10-п бва®Є  Їа®Ја ¬¬л).
}

 Program Symbols;
   Uses Graph, Crt;        { Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄ Crt Ё Graph }
   Var
     Key              : Char;
     Font             : String; { ­ §ў ­Ёп иаЁдв®ў }
     Size, MyFont     : Word;
     GrDriver, GrMode : Integer; { вЁЇ Ё ०Ё¬ а Ў®вл Ја дЁзҐбЄ®Ј® ¤а ©ўҐа }
 BEGIN
   GrDriver := Detect;          { ўв®®ЇаҐ¤Ґ«Ґ­ЁҐ вЁЇ  Ја дЁзҐбЄ®Ј® ¤а ©ўҐа }
   InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {гбв ­®ўЄ  Ја дЁзҐбЄ®Ј® ०Ё¬ }
   If GraphResult <> GrOk then Halt;
  {-----------------------------------------------------------}
   SetTextStyle(DefaultFont, HorizDir, 2);
   OutTextXY(140, 80, 'ЊҐ­пҐ¬ а §¬Ґа бЁ¬ў®«®ў');
   OutTextXY(220, 100, 'Ё 梥в д®­ ');

   For Size := 0 to 13 do      {Size - 梥в д®­  Ё а §¬Ґа бЁ¬ў®«®ў}
     begin SetBkColor(Size);               { Ё§¬Ґ­Ґ­ЁҐ жўҐв  д®­  }
       Rectangle(135, 425, 470, 450);      { аЁб®ў ­ЁҐ а ¬ЄЁ      }
       SetTextStyle(DefaultFont, HorizDir, 1);
       OutTextXY(150, 435, '„«п Їа®¤®«¦Ґ­Ёп ­ ¦¬ЁвҐ «оЎго Є« ўЁиг !');
       SetTextStyle(DefaultFont, HorizDir, Size);
       OutTextXY(250-Size*15, 200, 'HELLO');
       Key := ReadKey; ClearViewPort;
     end;
   ReadLn;
  {-----------------------------------------------------------}
   SetBkColor(LightGray); SetColor(Red);   { 梥в д®­  Ё 梥в аЁб®ў ­Ёп }
   SetTextStyle(DefaultFont, HorizDir, 2);
                     { гбв ­®ўЄ  иаЁдв , ­ Їа ў«Ґ­Ёп Ё а §¬Ґа  бЁ¬ў®«®ў }
   OutTextXY(70, 100, 'ђ бЇ®« Ј Ґ¬ бва®Єг Ј®аЁ§®­в «м­®');
   SetTextStyle(DefaultFont, VertDir, 2);
   OutTextXY(310, 150, 'Ё ўҐавЁЄ «м­®');
   Key:=ReadKey; ClearViewPort;
  {-----------------------------------------------------------}
   SetTextStyle(DefaultFont, HorizDir, 2);
                     { гбв ­®ўЄ  иаЁдв , ­ Їа ў«Ґ­Ёп Ё а §¬Ґа  бЁ¬ў®«®ў }
   OutTextXY(220, 30, 'ЊҐ­пҐ¬ иаЁдвл');

   For MyFont := 0 to 9 do       { жЁЄ« Ї® ­®¬Ґа ¬ иаЁдв®ў }
     begin
       Case MyFont of
         0: Font:='0 - ’®зҐз­л© (Default)';
         1: Font:='1 - “в஥­­л© (Triplex)';
         2: Font:='2 - “¬Ґ­м襭­л© (Small)';
         3: Font:='3 - Џаאַ© (SansSerif)';
         4: Font:='4 - ѓ®вЁзҐбЄЁ© (Gothic)';
         5: Font:='5 - ђгЄ®ЇЁб­л©';
         6: Font:='6 - ЉгамҐа';
         7: Font:='7 - Ља бЁўл© (T ©¬б Italic)';
         8: Font:='8 - ’ ©¬б Roman';
         9: Font:='9 - ЉгамҐа 㢥«ЁзҐ­­л©';
       end;
       SetTextStyle(MyFont, HorizDir, 2);
       OutTextXY(40, 70 MyFont*35, 'abcdfxyz 0123456789'); { ўлў®¤ ⥪бв  }
       SetTextStyle(DefaultFont, HorizDir, 1);
       OutTextXY(410, 80 MyFont*35, Font)         { ўлў®¤ ­ §ў ­Ёп иаЁдв  }
     end;

   OutTextXY(380, 60, 'N иаЁдв  ЋЇЁб ­ЁҐ'); ReadLn;
   CloseGraph;                             { § ЄалвЁҐ Ја дЁзҐбЄ®Ј® ०Ё¬  }
 END.

{        ‚­Ё¬ ­ЁҐ! „«п а Ў®вл нв®© Їа®Ја ¬¬л ­Ґ®Ўе®¤Ё¬®, зв®Ўл:

          1) Turbo Pascal Ўл« гбв ­®ў«Ґ­ ў Є в «®Ј  C:\TP;
          2) Є в «®Ј C:\TP\BGI ᮤҐа¦ « д ©«  egavga.bgi ;
          3) ў ¬Ґ­о  Options/Directories  Ўл« гЄ § ­ Їгвм
             Є д ©«г  graph.tpu,  ­ ЇаЁ¬Ґа,  ‘:\TP\UNITS.

        …б«Ё Turbo Pascal гбв ­®ў«Ґ­ ў ¤агЈ®¬ Є в «®ЈҐ, ­г¦­® Ё§¬Ґ­Ёвм
        Їгвм Є ­Ґ¬г ў Їа®жҐ¤гॠ InitGraph  (7-п бва®Є  Їа®Ја ¬¬л).
}

 Program MusicColor;
   Uses Crt, Graph;        { Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄ Crt Ё Graph }
   Var
     GrDriver, GrMode: Integer; { вЁЇ Ё ०Ё¬ а Ў®вл Ја дЁзҐбЄ®Ј® ¤а ©ўҐа  }
 BEGIN
   GrDriver := Detect;        {  ўв®®ЇаҐ¤Ґ«Ґ­ЁҐ вЁЇ  Ја дЁзҐбЄ®Ј® ¤а ©ўҐа  }
   InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {гбв ­®ўЄ  Ја дЁзҐбЄ®Ј® ०Ё¬ }
   SetColor(White);           { гбв ­®ўЄ  ЎҐ«®Ј® жўҐв  а ¬ЄЁ }
   Rectangle(130, 130, 460, 370);          { аЁб®ў ­ЁҐ а ¬ЄЁ }
   Randomize;        { Ё­ЁжЁ «Ё§ жЁп ¤ взЁЄ  б«гз ©­ле зЁбҐ« }

   Repeat          { жЁЄ« ЇаҐалў Ґвбп ­ ¦ вЁҐ¬ «оЎ®© Є« ўЁиЁ }
     Sound(Random(2000));           { Ё§¬Ґ­Ґ­ЁҐ ўлб®вл §ўгЄ  }
     Delay(Random(1000));           { § ¤Ґа¦Є                }
     SetFillStyle(Random(4), Random(16)); { ᬥ­  вЁЇ  иваЁе®ўЄЁ Ё жўҐв  }
     Bar(140, 140, 450, 360);    { аЁб®ў ­ЁҐ § Єа 襭­®Ј® Їаאַ㣮«м­ЁЄ  }
   until KeyPressed;

   NoSound;            { ®в¬Ґ­  §ўгЄ  }
   CloseGraph; ReadLn; { § ЄалвЁҐ Ја дЁзҐбЄ®Ј® ०Ё¬  }
 END.

{        ‚­Ё¬ ­ЁҐ! „«п а Ў®вл нв®© Їа®Ја ¬¬л ­Ґ®Ўе®¤Ё¬®, зв®Ўл:

          1) Turbo Pascal Ўл« гбв ­®ў«Ґ­ ў Є в «®Ј  C:\TP;
          2) Є в «®Ј C:\TP\BGI ᮤҐа¦ « д ©«  egavga.bgi ;
          3) ў ¬Ґ­о  Options/Directories  Ўл« гЄ § ­ Їгвм
             Є д ©«г  graph.tpu,  ­ ЇаЁ¬Ґа,  ‘:\TP\UNITS.

        …б«Ё Turbo Pascal гбв ­®ў«Ґ­ ў ¤агЈ®¬ Є в «®ЈҐ, ­г¦­® Ё§¬Ґ­Ёвм
        Їгвм Є ­Ґ¬г ў Їа®жҐ¤гॠ InitGraph  (9-п бва®Є  Їа®Ја ¬¬л).
}

 Program Star;
   Uses Crt, Graph; { Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄ Crt Ё Graph   }
   Const            { ¬ ббЁў Є®®а¤Ё­ в ўҐаиЁ­ ¬­®Ј®гЈ®«м­ЁЄ  (§ўҐ§¤л) }
       TopsStar: Array[1..18] of Integer = (300, 125, 325, 225, 425, 250,
             325, 275, 300, 375, 275, 275, 180, 250, 275, 225, 300, 125);
   Var i, j, GrDriver, GrMode : Integer;
 BEGIN
   GrDriver := Detect;
   InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {гбв ­®ўЄ  Ја дЁзҐбЄ®Ј® ०Ё¬ }
   SetTextStyle(DefaultFont, HorizDir, 2);   {гбв ­®ўЄ  иаЁдв , ­ Їа ў«Ґ­Ёп}
                                             {Ё а §¬Ґа  бЁ¬ў®«®ў           }
   OutTextXY(220, 60, 'S T A R ');
   SetTextStyle(DefaultFont, VertDir, 2);
   OutTextXY(140, 150, 'S T A R ');
   SetTextStyle(DefaultFont, VertDir, 2);
   OutTextXY(500, 150, 'S T A R ');

   i:=0;
   Repeat
      j:=i mod 12;                        { j - ®бв в®Є ®в ¤Ґ«Ґ­Ёп i ­  12 }
      SetFillStyle(j, Random(13));        { иваЁе®ўЄ  Ё д®­                }
      FillPoly(9, TopsStar);              { аЁб®ў ­ЁҐ Ё иваЁе®ўЄ  §ўҐ§¤л   }
      Inc(i);                             { 㢥«ЁзҐ­ЁҐ i ­  1              }
      Delay(500)
   until KeyPressed;             { § ўҐа襭ЁҐ жЁЄ«  ­ ¦ вЁҐ¬ «оЎ®© Є« ўЁиЁ }

   CloseGraph
 END.

{        ‚­Ё¬ ­ЁҐ! „«п а Ў®вл нв®© Їа®Ја ¬¬л ­Ґ®Ўе®¤Ё¬®, зв®Ўл:

          1) Turbo Pascal Ўл« гбв ­®ў«Ґ­ ў Є в «®Ј  C:\TP;
          2) Є в «®Ј C:\TP\BGI ᮤҐа¦ « д ©«  egavga.bgi ;
          3) ў ¬Ґ­о  Options/Directories  Ўл« гЄ § ­ Їгвм
             Є д ©«г  graph.tpu,  ­ ЇаЁ¬Ґа,  ‘:\TP\UNITS.

        …б«Ё Turbo Pascal гбв ­®ў«Ґ­ ў ¤агЈ®¬ Є в «®ЈҐ, ­г¦­® Ё§¬Ґ­Ёвм
        Їгвм Є ­Ґ¬г ў Їа®жҐ¤гॠ InitGraph.
}

 Program Sight;
   Uses Crt, Graph;       { Ї®¤Є«о祭ЁҐ Є Їа®Ја ¬¬Ґ ЎЁЎ«Ё®вҐЄ Crt Ё Graph }
   Const Step = 5;        { и Ј Ё§¬Ґ­Ґ­Ёп Є®®а¤Ё­ в 業ва  ЇаЁжҐ«         }
      Instr = '“ЏђЂ‚‹…Ќ?… „‚?†…Ќ?…Њ Џђ?–…‹Ђ - ‘’ђ…‹Љ?, ‚›•Ћ„ - ESC';
   Var
     GrDriver, GrMode : Integer; {вЁЇ Ё ०Ё¬ а Ў®вл Ја дЁзҐбЄ®Ј® ¤а ©ўҐа }
     X, Y             : Integer; { Є®®а¤Ё­ вл 業ва  ЇаЁжҐ«               }
     XStr, YStr       : String;
     Ch               : Char;
 {-----------------------------------------------------------}
 Procedure MakeSight(X, Y : Integer);       { Їа®жҐ¤га  аЁб®ў ­Ёп ЇаЁжҐ«  }
   Begin SetColor(White);
     Circle(X, Y, 80);
     SetColor(LightGreen);
     Line(X-80, Y, X 80, Y); Line(X, Y-63, X, Y 63); { ўлў®¤ ®бҐ© ЇаЁжҐ«  }
     SetColor(LightRed); Circle(X, Y, 2);   { ®Єаг¦­®бвм ў 業вॠЇаЁжҐ«  }
     Str(X, XStr); Str(Y, YStr);      { ЇҐаҐў®¤ Є®®а¤Ё­ в ў бва®Є®ўл© вЁЇ }
     SetColor(Yellow);
     OutTextXY(X 5, Y-35, 'x='   XStr);  { ўлў®¤ Є®®а¤Ё­ в 業ва  ЇаЁжҐ«  }
     OutTextXY(X 5, Y-20, 'y='   YStr)
   End;
 {-----------------------------------------------------------}
 BEGIN
   GrDriver := Detect;
   InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
   SetColor(LightGray);
   X := GetMaxX div 2; Y := GetMaxY div 2;  { Є®®а¤Ё­ вл 業ва  нЄа ­  }
   Rectangle(50, 425, 600, 460);            { аЁб®ў ­ЁҐ а ¬ЄЁ          }
   OutTextXY(120, 440, Instr);
   MakeSight(X, Y);                { аЁб®ў ­ЁҐ ЇаЁжҐ«  ў 業вॠнЄа ­  }

   While TRUE do  { жЁЄ« а Ў®вл Їа®Ја ¬¬л ¤® ЇаҐалў ­Ёп Ї® Є« ўЁиҐ ESC }
     begin
        Ch := ReadKey;
        Case Ch of
           #27: begin CloseGraph; Halt(1) end;  { ўл室 Ї® Є« ўЁиҐ ESC }
           #75: X := X-Step; {Ё§¬Ґ­Ґ­ЁҐ Є®®а¤Ё­ в x, y ­ ¦ вЁҐ¬ бв५®Є}
           #77: X := X Step; {"ў«Ґў®", "ўЇа ў®", "ўўҐае", "ў­Ё§"       }
           #72: Y := Y-Step;
           #80: Y := Y Step
        end;

        ClearViewPort;               { ®зЁбвЄ  Ја дЁзҐбЄ®Ј® нЄа ­      }
        SetColor(LightGray);         { ў®ббв ­®ў«Ґ­ЁҐ а ¬ЄЁ б ­ ¤ЇЁбмо }
        Rectangle(50, 425, 600, 460);
        OutTextXY(120, 440, Instr);
        MakeSight(X, Y)      { аЁб®ў ­ЁҐ ЇаЁжҐ«  ў ⥪гйЁе Є®®а¤Ё­ в е }
     end;

   CloseGraph;
 END.