Форум » Документация » Harbour для начинающих » Ответить

Harbour для начинающих

alkresin: Просто сообщаю, что я кардинально обновил одноименную страницу у себя на сайте: http://www.kresin.ru/hrbfaq.html, существенно пополнил (и продолжаю понемногу пополнять) раздел "Отличия от Клиппера".

Ответов - 138, стр: 1 2 3 4 5 6 7 All

Pasha: alkresin пишет: Рекомендую почитать, там указывается на очень интересную деталь ( реализацию замыканий ), на что, мне кажется, никто еще не обращал внимания. Так эти замыкания имеются и в клиппере, правда, их так не принято называть. Я еще 20 с лишним лет назад использовал функции вроде: Function C4Block(n) Return {|a| a[4][n]} переменная n остается жить вне функции C4Block, и, таким образом, возвращаемый ею блок кода является замыканием

alkresin: Pasha пишет: Так эти замыкания имеются и в клиппере, правда, их так не принято называть Совершенно верно, я так там и написал. Разница в том, что кодоблок теперь может быть достаточно большим фрагментом кода, полноценной функцией, включающей любые языковые средства и это дает новые возможности по использованию замыканий ( в Javascript это один из основных инструментов ).

alkresin: Скажем так, из-за ограниченности возможностей кодоблоков этой особенности не уделяли особого внимания.

AlexMyr: Насколько я понял про замыкание, то получается, что пример closure можно написать след. образом: [pre2]static nSec Function Main Local b1 := {|p1| Local tmp := nSec IF p1 != Nil nSec := p1 ENDIF Return tmp } nSec := Seconds() ? Eval( b1 ) ? "Press any key" inkey(0) ? Eval( b1,Seconds() ) ? "Press any key" inkey(0) ? Eval( b1 ) ? Return Nil[/pre2] т.е. грубо это использование static переменных, но видимых только в пределах блока кода. Или все намного сложнее?

Pasha: AlexMyr пишет: т.е. грубо это использование static переменных, но видимых только в пределах блока кода. Или все намного сложнее? Не только static, можно использовать и local-переменные. В клиппере/харборе в каждой переменной есть счетчик ее использования. Для local-переменной функции он равен 1. Если переменная используется еще и в блоках кода, этот счетчик инкрементируется. Когда функция завершается, или блок кода уничтожается, счетчик декрементируется. Когда значение счетчика станет равным нулю, переменная будет уничтожена.

Pasha: alkresin пишет: Скажем так, из-за ограниченности возможностей кодоблоков этой особенности не уделяли особого внимания. Я всегда активно использовал замыкания. Из-за ограниченности блоков кода просто делал отдельную функцию, которую вызывал из блока кода, с передачей ей параметров. Этот стиль использую по привычке и в харборе. Не создаю многострочные блоки кода, а делаю отдельную функцию. Разница небольшая.

alkresin: AlexMyr пишет: т.е. грубо это использование static переменных, но видимых только в пределах блока кода. Не совсем. Дело в том, что у каждого экземпляра кодоблока ( если вы запустили функцию Closure() из моего примера несколько раз ) будет свой набор этих переменных ( тех, что определены в Closure() как Local ), т.е. этот экземпляр чем-то похож на объект, вот только по именам нельзя обращаться извне к тем переменным. А в Javascript, кстати, можно - поэтому там эта штука активно используется вместо объектов, в ряде случаев ( есть определенные нюансы ) это бывает удобнее.

alkresin: Добавил JSON - функции, hb_Random...(), и еще по мелочи.

dimao: Александр, спасибо за труд! много интересного узнал о старом добром Харборе. Кстати, весьма полезно, что сразу есть ссылки на скачку и инструкции , как получить работающий комплект Харбор+HWGUI. еще интересно бы узнать, как обстоят дела с компиляцией программ для Андроид? и про создание простейших вебсервисов на Харборе тоже интересно почитать. По английски и испански есть некоторая информация, а по русски - нету.

alkresin: Про Андроид ничего не могу сказать, для меня эта тема не актуальна, у меня нет ни смартфона, ни планшета - и я не планирую их заводить. Вроде, были сообщения в developers list и здесь на эту тему... Вебсервисами занимался, вот тут об этом шла речь. Давно собираюсь сделать страничку на эту тему у себя на сайте.

Dima: alkresin пишет: Возможно, создам попозже новую страницу - что-то типа "Harbour для продолжающих" :), там надо будет подробно описать систему расширения (связь с С) и то, как писать оболочки для вызовов разных API, Windows API в том числе Ждем с нетерпением

Andrey: Dima пишет: Ждем с нетерпением Поддерживаю !

alkresin: Обновил раздел 3.6 Работа с hrb - файлами: Добавлено описание hb_hrbGetFunList(), дополнено описание hb_hrbLoad() - новые параметры.

alkresin: Обновлен раздел 3.12 Всякие новые функции: Добавлены краткие описания семейства hb_FName...()

Alex_Cher: Уважаемый модератор "alkresin" - огромное спасибо за документацию. Это лучшее из всего что удалось отыскать по xHarbour на русском языке. Одна проблема - нет возможности при работе находиться постоянно в интернете. Нет ли возможности скачать данную документацию в PDF формате ...?

Dima: Alex_Cher В браузере Файл - Сохранить как и сохраняем целиком всю страницу куда нужно. Смотрим локально.

santy: Новый сайт для изучения Harbour + HMG A Beginners Guide to Programming with Harbour and HMG

SergKis: alkresin Сломалось на сайте http://www.kresin.ru/ "Статьи" -> "Harbour для начинающих" -> 404 ... Вход с "Главной" по строке 23/08/2016 - Дополнен раздел Harbour для начинающих, 3.3 Классы и объекты - добавлены несколько функций. проходит

alkresin: SergKis пишет: Сломалось на сайте http://www.kresin.ru/ "Статьи" -> "Harbour для начинающих" -> 404 ... Спасибо за информацию. В самом деле пропал файл с сайта. Переписал по новой.

alkresin: Дополнен раздел Дополнительные библиотеки - обновлен список, добавлен подраздел о hbziparc.



полная версия страницы