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

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

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

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

gustow: Вот именно подобную структуру я и имел в виду! С одной стороны - чтобы "неофит" мог быстро и без "уходов в прерывания" создать свое первое приложение (к примеру, с помощью того же "филатовского" HMG EE пакета - типа "всё уж готово для дела, установи BCC, установи HMG и компилируй" - или такого же, не требующего особых плясок с бубном для начала работы, пакета с "просто Harbour"). С другой стороны - справочник (настройки, опции компиляторов, прочие "фокусы", команды, функции, ОС-зависимые вещи, ЧаВо и проч.). Можно же сделать не как я сейчас сделал (у Вас взявши) - просто plain-страницей (хотя в Вики-учебнике как "предпочтительнй" рекомендуют такой подход - но уж больно здоровенная "одна страница" получится...), а именно отдельными разделами ("нужны детали? открывай соотв. раздел с подробным описанием!"). Или вообще сделать несколько отделных (ориентированных на разне цели публикаций: "Harbour для чайников"... и по нарастающей (как по квалификации читателя, так и по узости специализации - к примеру, ясно, что по тому же HMG нужна отдельная книжка... или по HWGUI). В общем, "всё как у больших" ;) alkresin пишет: А ссылки можно ? Что именно имеется ввиду ? Ну, к примеру, тот же Clipper... Clipper... Clipper - достаточно неплохой аггрегатор ссылок на разные публикации и гайды как по миграции с Клиппера на Харбор, так и по разработке приложения "с нуля" (в последнем случае - применимо именно для "чистых" неофитов, не знающих, что вообще был когда-то какой-то Клиппер ;) ). Массимо Бельграно (он ли? помню, что вроде итальянская фамилия... или Пьерпауло Мартинелло?.. вот сходу ссылку не найду) нашарашил здоровенную HTML-страницу по функциям Харбора (но именно как одну страницу - что не всегда есть удобно) (вот бы из нее и "передирать" кусками "по 3 копейки" постепенно коллективом в раздел "Справочник" - установив какой-то "шаблон" для описания функций [внешний вид описания, общепринятая терминология, "стандарты" перевода фраз и терминов]). Еще Harbour Language programming - тоже, конечно, пока еще "заготовка-прикидка", но кое-что интересное есть. У испаноязычных - можно глянуть линки в том же HMGforum.com (тоже, конечно, не "супер", но всё же...). UPD: О! Нашел эту "здоровенную страницу" :) см. I semplici Tutorial della ElektroSoft

alkresin: Если это все, что есть, то мы далеко не в худшем положении. В материалах по этим ссылкам нет того, что мы с вами, по результатам этого небольшого обсуждения, хотели бы иметь. Они обрывочны и совершенно не структуированы. Списки и описания функций представляют собой по другому отформатированные данные из harbour/doc/en и не несут ничего, что и без них можно прочитать в официальной документации. Не сочтите за саморекламу, но, в сравнении с этим, моя страница содержит на порядок более качественный материал, какого вы больше нигде не найдете. Все малопонятные и сложные моменты, никак не прокомментированные в документации, я разбирал по исходникам и сам проверял в действии. Значительная часть функций, конечно, пока осталась за бортом - но именно по той причине, что во всем предварительно надо тщательно разбираться самому. Просто откопипастить из harbour/doc/en не вижу большого смысла.

Andrey: alkresin пишет: Не сочтите за саморекламу, но, в сравнении с этим, моя страница содержит на порядок более качественный материал, какого вы больше нигде не найдете. Да, это точно ! Спасибо БОЛЬШОЕ за вашу работу ! Мы вас очень ценим !


alkresin: Добавил раздел 3.11 Многопоточность. Там еще предстоит добавить общих пояснений и примеров, но уже изложен так интересующий Андрея вопрос о совместном использовании БД в многопоточном приложении.

Andrey: alkresin пишет: Там еще предстоит добавить общих пояснений и примеров, но уже изложен так интересующий Андрея вопрос о совместном использовании БД в многопоточном приложении. СПАСИБО БОЛЬШОЕ ! Но все таки не знаю как сделать небольшой пример по базам .... http://clipper.borda.ru/?1-4-0-00000795-000-0-0-1356519713

alkresin: В раздел 3.11 Многопоточность добавлены новые примеры и пояснения.

alkresin: В раздел 3.10 Inet подсистема добавил пример использования INET функций в многопоточном ( двухпоточном ) приложении. Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :)

AlexMyr: alkresin пишет: Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :) спасибо за пример, уже тестирую.

AlexMyr: Запустил прогу, написал на форум, говорит "ничего нового", нажал Ecs и получил: Error BASE/3012 Argument error: HB_THREADJOIN Called from HB_THREADJOIN(0) Called from MAIN(32)

AlexMyr: AlexMyr пишет: Error BASE/3012 Argument error: HB_THREADJOIN Забыл опцию -mt, все работает. Извините.

Dima: alkresin Спасибо за примеры. Вопрос. [pre2] DO WHILE .T. hb_mutexLock( mutex1 ) cTime := Iif( !Empty( cOpt ), hb_Dtoc( Date(),cOpt ), Space(10) ) + " " + Time() hb_mutexUnLock( mutex1 ) hb_dispOutAt( 0, MaxCol() - Len( cTime ) + 1, cTime, "GR+/N" ) hb_idleSleep( 1 ) ENDDO [/pre2] Проверка на заблокированность мьютекса не нужна ? Я вот про такой код [pre2] DO WHILE .T. IF hb_mutexLock( mutex1 ) cTime := Iif( !Empty( cOpt ), hb_Dtoc( Date(),cOpt ), Space(10) ) + " " + Time() hb_mutexUnLock( mutex1 ) hb_dispOutAt( 0, MaxCol() - Len( cTime ) + 1, cTime, "GR+/N" ) ENDIF hb_idleSleep( 1 ) ENDDO [/pre2]

Andrey: alkresin Спасибо большое за пример ! Прямо то что нужно ! Побольше таких примеров....

alkresin: В данном случае в этом нет необходимости, так как 1) параллельный поток блокирует mutex на очень короткое время 2) поток, который выполняет этот код, все равно не делает больше ничего полезного, так что, будь даже потенциальная задержка большой, мы бы ничего не выиграли. Может, вы забыли, что hb_mutexLock( mutex1 ) не просто блокирует mutex, но останавливает выполнение текущего потока до тех пор, пока ему не удастся это сделать ( т.е., пока этот mutex не будет разблокирован другим потоком, если он был им заблокирован ).

Dima: alkresin пишет: Может, вы забыли Да точно , упустил этот момент.

Andrey: alkresin пишет: Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :) Отрубаем интернет, запускаем прогу, F5, программа пишет - "ничего нового". Правда иногда вверху пишет "сбой"... Через раз... Как бы правильно повесить ALERT("Нет ИНТЕРНЕТА !") ?

alkresin: Нажимать F5, пока не появилось в углу сообщение о наличии обновлений, большого смысла нет. Сообщение "Сбой" выскакивает как раз после каждой неудачной попытки соединения. Если нужна дополнительная информация о причинах сбоя, можно сделать еще одну раздляемую потоками переменную, куда один поток будет записывать текст, возвращаемый hb_inetErrorDesc(), другой - по F5 выводить этот текст.

Andrey: alkresin пишет: Если нужна дополнительная информация о причинах сбоя Да нет, не нужна. Просто проверить, есть ИНЕТ или нет. У Григория есть специальный пример на эту тему: MiniGUI\SAMPLES\Advanced\INET_CHECKER А просто средствами Харбора (функции) есть ? lInet := hb_inetInit() Возвращает .T. при включенном и отключенном интернете. Harbour 3.2.0dev (Rev. 18721)

AlexMyr: В документации указано: А строковые константы можно объявлять, как в C, используя литерал e"...": Local e"Helow\r\nWorld \x21\041\x21\000abcdefgh" при компиляции ошибка Error E0030 Syntax error "syntax error at 'Helow указать какую-то переменную Local str1 := e"Helow\r\nWorld \x21\041\x21\000abcdefgh"

alkresin: А, ну да, конечно, надо исправить.

alkresin: На днях переехал на новый домен и новый хостинг, теперь это http://www.kresin.ru, а "Harbour для начинающих" - http://www.kresin.ru/hrbfaq.html.



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