Автор | Сообщение |
|
| moderator
|
Пост N: 450
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.11.12 14:07. Заголовок: Harbour для начинающих
Просто сообщаю, что я кардинально обновил одноименную страницу у себя на сайте: http://www.kresin.ru/hrbfaq.html, существенно пополнил (и продолжаю понемногу пополнять) раздел "Отличия от Клиппера".
|
|
|
Ответов - 157
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|
|
| moderator
|
Пост N: 454
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.11.12 10:21. Заголовок: Вчера добавил подраз..
Вчера добавил подраздел про хэш-массивы, сегодня - описание _obj... - функций.
|
|
|
|
| постоянный участник
|
Пост N: 2441
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.12 10:30. Заголовок: alkresin пишет: и п..
alkresin пишет: цитата: | и продолжаю понемногу пополнять |
| Спасибо БОЛЬШОЕ за ваш труд ! Очень интересные вещи узнаешь и у себя упорядочиваются знания (какие были).
|
|
|
|
| moderator
|
Пост N: 456
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.11.12 10:45. Заголовок: Я и сам узнаю много ..
Я и сам узнаю много нового, когда пишу эту документацию :). Да и удобно складывать то, что узнал, в одном месте. А то часто бывает - разобрался в чем-то, написал соответствующий фрагмент программы, а через какое-то время напрочь забыл, как ту или иную функцию использовать и даже как она называлась, и ищешь нужный кусок кода по всем исходникам. Так что польза взаимная.
|
|
|
|
| постоянный участник
|
Пост N: 48
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.11.12 11:20. Заголовок: Отлично !!! aHash2..
Отлично !!! aHash2 := hb_hCopy( aHash2, aHash, [nStart], [nCount] ) Копирует пары из массива aHash в aHash. ... aHash2 := hb_hMerge( aHash2, aHash, bBlock | nPosition ) добавляет пары из массива aHash в aHash. .. здесь, наверное, надо уточнить где aHashSourse и где aHashDest
|
|
|
|
| |
Пост N: 651
Зарегистрирован: 11.06.10
|
|
Отправлено: 30.11.12 12:22. Заголовок: Примеры для других п..
Примеры для других платформ и компиляторов смотрите в INSTALL INSTALL уже переименован в README.txt
|
|
|
|
| moderator
|
Пост N: 457
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.11.12 13:15. Заголовок: Спасибо, поправил...
Спасибо, поправил.
|
|
|
|
| постоянный участник
|
Пост N: 2442
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.12 15:04. Заголовок: alkresin пишет: а ч..
alkresin пишет: цитата: | а через какое-то время напрочь забыл, как ту или иную функцию использовать и даже как она называлась, и ищешь нужный кусок кода по всем исходникам. |
| Аналогично....
|
|
|
|
| |
Пост N: 72
Зарегистрирован: 03.12.08
|
|
Отправлено: 30.11.12 21:12. Заголовок: иногда даже про нали..
иногда даже про наличие этой самой функции забываешь и пишешь "ручками" .....
|
|
|
|
| |
Пост N: 44
Зарегистрирован: 15.12.09
|
|
Отправлено: 01.12.12 20:04. Заголовок: Не буду новую тему п..
Не буду новую тему поднимать, в статье достаточно доходчиво о возможностях .... .hrb, но вот что мне интересно является ли он мультиплатформенным если внутри себя по кодировкам и путям к файлам учтёт особенности разных систем?
|
|
|
|
| moderator
|
Пост N: 458
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.12.12 09:39. Заголовок: pureproft пишет: .h..
pureproft пишет: цитата: | .hrb, но вот что мне интересно является ли он мультиплатформенным |
| Не проверял, но, думаю, да.
|
|
|
|
| moderator
|
Пост N: 462
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.12.12 09:05. Заголовок: Добавил раздел "..
Добавил раздел "Классы и объекты", он еще не закончен, но основные моменты упомянуты. Еще добавлены функции для работы с Public/Private переменными - __mv...
|
|
|
|
|
| постоянный участник
|
Пост N: 803
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.12.12 09:11. Заголовок: Александр, есть пред..
|
|
|
|
| moderator
|
Пост N: 464
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.12.12 09:32. Заголовок: Попробую...
Попробую.
|
|
|
|
| постоянный участник
|
Пост N: 2450
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.12 09:48. Заголовок: Документация - прост..
Документация - просто супер !
|
|
|
|
| постоянный участник
|
Пост N: 804
Зарегистрирован: 27.01.07
|
|
Отправлено: 05.12.12 10:44. Заголовок: alkresin пишет: Поп..
alkresin пишет: По-моему, гораздо лучше. )))
|
|
|
|
| moderator
|
Пост N: 468
Зарегистрирован: 06.07.06
|
|
Отправлено: 06.12.12 14:55. Заголовок: Расширено описание р..
Расширено описание реализации ООП - BLOCK,SETGET,EXTERN методы, ERROR HANDLER
|
|
|
|
| moderator
|
Пост N: 482
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.12.12 08:29. Заголовок: Добавил раздел "..
Добавил раздел "Регулярные выражения".
|
|
|
|
| постоянный участник
|
Пост N: 325
Зарегистрирован: 13.10.05
|
|
Отправлено: 11.12.12 11:21. Заголовок: Александр. Вопрос не..
Александр. Вопрос не по теме - dbch .Вопрос о шрифте, какой-то он трудночитаемый, привыкать надо. Но не могли бы Вы заменить.
|
|
|
|
| постоянный участник
|
Пост N: 2462
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.12.12 11:55. Заголовок: Александр, а можно ч..
Александр, а можно чуть подробней по функциям "Управление запуском процессов" ? И туда же поместить (или отдельно тему сделать про RUN() ) - ShellExecute() ? Ксати а для Linux что используется ? А то многим новичкам (как я раньше) не хватает описания и примеров ... Так же наверно нужно дать описание для Проводника и Папки выбора/записи... Если нужно, свои примеры могу выслать.
|
|
|
|
| moderator
|
Пост N: 483
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.12.12 12:38. Заголовок: Вопрос не по теме - ..
цитата: | Вопрос не по теме - dbch .Вопрос о шрифте, какой-то он трудночитаемый, привыкать надо. Но не могли бы Вы заменить. |
| Я его не устанавливал специально, там тот, что по умолчанию в gtwvt, я даже не уверен, что его можно заменить - по крайней мере, gtinfo( HB_GT_FONTWEIGHT, ... ) и gtinfo( HB_GT_FONTNAME, ... ) не работают. Можете перекомпилировать его с gtwin ( убрать ключ /dGTWVT и прописать gtwin.lib вместо gtwvt.lib ).
|
|
|
|
| moderator
|
Пост N: 484
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.12.12 12:41. Заголовок: Andrey пишет: Алекс..
Andrey пишет: цитата: | Александр, а можно чуть подробней по функциям "Управление запуском процессов" |
| Я с ними еще не разбирался, как только - так сразу :). цитата: | И туда же поместить (или отдельно тему сделать про RUN() ) - ShellExecute() |
| ShellExecute() ? Это не из Harbour, это из GUI библиотек, наверное. цитата: | Так же наверно нужно дать описание для Проводника и Папки выбора/записи |
| А что это ?
|
|
|
|
|
| постоянный участник
|
Пост N: 2463
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.12.12 13:28. Заголовок: alkresin пишет: She..
alkresin пишет: цитата: | ShellExecute() ? Это не из Harbour, это из GUI библиотек, наверное. |
| Да оттуда. ShellExecute(), Проводник и Папка выбора - http://files.mail.ru/4Y9OE8
|
|
|
|
| moderator
|
Пост N: 485
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.12.12 13:52. Заголовок: В Harbour для начина..
В Harbour для начинающих я включаю описания модулей, функций, средств существующих в Harbour, буду, наверное, включать описания некоторых дополнительных библиотек из Harbour/contrib. А то, что вы предлагаете, это несколько другое.
|
|
|
|
| постоянный участник
|
Пост N: 2464
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.12.12 15:15. Заголовок: alkresin пишет: А т..
alkresin пишет: цитата: | А то, что вы предлагаете, это несколько другое. |
| Может быть. Но я в свое время, когда переходил с Клипера, очень долго не мог сделать выбор файла и т.д. Только благодаря вам и помощи на форуме Pasha, Григория и других смог разобраться в этом. Да и задачи выглядят более цивильно с Виндовыми окнами...
|
|
|
|
| moderator
|
Пост N: 486
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.12.12 18:09. Заголовок: Возможно, создам поп..
Возможно, создам попозже новую страницу - что-то типа "Harbour для продолжающих" :), там надо будет подробно описать систему расширения (связь с С) и то, как писать оболочки для вызовов разных API, Windows API в том числе, вот тут в качестве примера и ShellExecute() будет уместен.
|
|
|
|
| moderator
|
Пост N: 489
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.12.12 09:39. Заголовок: Добавлены описания е..
Добавлены описания еще несколько битовых функций, которые не заметил раньше, и набор фунций компрессии данных, основанных на zlib.
|
|
|
|
| |
Пост N: 674
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.12.12 12:40. Заголовок: Александр, вместо HB..
Александр, вместо HB_OSPATHSEPARATOR() надо HB_PS() 2012-11-23 12:50 UTC+0100 Viktor Szakats (harbour syenar.net) ... * deprecated HB_OSPATHSEPARATOR() with HB_LEGACY_LEVEL4 (after next release). Use HB_PS() instead. HB_OSPATHSEPARATOR() will continue to live as an xhb compatibility function after that.
|
|
|
|
| |
Пост N: 675
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.12.12 12:59. Заголовок: Пример для hb_hash()..
Пример для hb_hash() надо подправить вместо FUNCTION Main local harr := hb_Hash( "six", 6, "eight", 8, "eleven", 11 ) надо FUNCTION Main local harr := hb_Hash( ["six", 6], ["eight", 8], ["eleven", 11] )
|
|
|
|
| moderator
|
Пост N: 492
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.12.12 13:13. Заголовок: вместо HB_OSPATHSEPA..
цитата: | вместо HB_OSPATHSEPARATOR() надо HB_PS() |
| Ok. цитата: | вместо FUNCTION Main local harr := hb_Hash( "six", 6, "eight", 8, "eleven", 11 ) надо FUNCTION Main local harr := hb_Hash( ["six", 6], ["eight", 8], ["eleven", 11] ) |
| У меня первый вариант работает правильно, а ваш вылетает с ошибкой во время исполнения, пробовал и с Harbour 2, и с Harbour 3.2
|
|
|
|
| |
Пост N: 676
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.12.12 13:27. Заголовок: alkresin пишет: ва..
alkresin пишет: цитата: | ваш вылетает с ошибкой во время исполнения, пробовал и с Harbour 2, и с Harbour 3.2 |
|
согласен, мой вариант не катит, извините. Как альтернатива, можно еще использовать такую конструкцию LOCAL harr := { "six" => 6, "eight" => 8, "eleven" => 11 }
|
|
|
|
| moderator
|
Пост N: 505
Зарегистрирован: 06.07.06
|
|
Отправлено: 19.12.12 10:12. Заголовок: Обновлен раздел ..
Обновлен раздел "Компиляция и линковка программы". В частности, добавлен подраздел "Как использовать динамические библиотеки ( dll, so )".
|
|
|
|
|
| moderator
|
Пост N: 507
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.12.12 08:10. Заголовок: Добавил материалы о ..
Добавил материалы о создании и использовании p-code dll.
|
|
|
|
| постоянный участник
|
Пост N: 2492
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.12.12 09:15. Заголовок: Если можно, то укажи..
Если можно, то укажите в разделе "2.4 Hbmk2" как добавить ключ для сборки несколькими компиляторами: под BCC и MinGw (MinGw64) Думаю многим будет интересно...
|
|
|
|
| moderator
|
Пост N: 508
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.12.12 09:40. Заголовок: Если можно, то укажи..
цитата: | Если можно, то укажите в разделе "2.4 Hbmk2" как добавить ключ для сборки несколькими компиляторами |
| Хорошо, добавлю - только сам сначала выясню как. Вообще, много чего интересного находишь, создавая документацию :) Буквально сейчас, обдумывая разницу между p-code dll и hrb, обнаружил интересную вещь. Оказывается, функции, определенные в hrb, можно, как и в случае с p-code dll, вызывать напрямую, без предварительного получения хэндла функции. Подробности уже добавил в раздел "Работа с hrb - файлами"
|
|
|
|
| постоянный участник
|
Пост N: 2497
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.12.12 00:35. Заголовок: alkresin пишет: Хор..
|
|
|
|
| постоянный участник
|
Пост N: 2508
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.12.12 21:45. Заголовок: alkresin пишет на св..
alkresin пишет на своем сайте: цитата: | 14/11/2012 - Dbc - выложена новая версия 3.8 - добавлена поддержка расширенных типов данных ( F,B,Y,Z,I,2,4,8,Q,V,P,W,T,@,+,=,^ ). |
| Что за типы данных в базе ? Я читал еще где-то на LetoDb, но так и забыл спросить... Дайте описание, а то в языках Clipper/Harbour/xHarbour такого нет !
|
|
|
|
| moderator
|
Пост N: 517
Зарегистрирован: 06.07.06
|
|
Отправлено: 24.12.12 07:58. Заголовок: В Harbour/xHarbour о..
В Harbour/xHarbour они есть, вот выдержка из одного из документов на https://docs.google.com/ цитата: | D Date 3, 4 or 8 Date M Memo 4 or 8 Memo + AutoInc 4 Auto increment = ModTime 8 Last modified date & time of this record ^ RowVers 8 Row version number; modification count of this record @ DayTime 8 Date & Time I Integer 1, 2, 3, 4 or 8 Signed Integer ( Width : )" },; T Time 4 or 8 Only time (if width is 4 ) or Date & Time (if width is 8 ) (?) V Variant 3, 4, 6 or more Variable type Field Y Currency 8 64 bit integer with implied 4 decimal B Double 8 Floating point / 64 bit binary |
|
|
|
|
|
| постоянный участник
|
Пост N: 2509
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.12.12 14:28. Заголовок: alkresin пишет: В H..
alkresin пишет: цитата: | В Harbour/xHarbour они есть |
| А есть ли примеры по их использованию ? Кто пользуется новыми типами переменных ?
|
|
|
|
| Администратор
|
Пост N: 2637
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.12.12 14:50. Заголовок: Я пользуюсь. Насчет ..
Я пользуюсь. Насчет примеров - неясно, что за примеры нужны. Создал поле - и используй его, обращайся по имени, как обычно.
|
|
|
|
| постоянный участник
|
Пост N: 58
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.12.12 15:45. Заголовок: Pasha пишет:Насчет п..
Pasha пишет: цитата: | Насчет примеров - неясно, что за примеры нужны |
| Поле + Auto increment. При EXCLUSIVE - понятно, SHARED уже не очень, а в LETO совсем не понятно как будет и стоит ли применять ?
|
|
|
|
| Администратор
|
Пост N: 2639
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.12.12 16:03. Заголовок: Последнее значение a..
Последнее значение autoinc хранится в заголовке dbf, насколько я помню, и dbfcdx его увеличивает по dbAppend() Чтобы клиент letodb его увидел, надо после append сделать commit (если установлено FastAppend), и затем перечитать запись по dbGoto(RecNo()) или dbSkip(0) Можно конечно доработать rdd leto, чтобы сервер после добавления возвращал не только номер новой записи, но и значения autoinc-полей. Сейчас этого нет.
|
|
|
|
|
| постоянный участник
|
Пост N: 60
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.12.12 16:31. Заголовок: Pasha пишет:dbfcdx е..
Pasha пишет: цитата: | dbfcdx его увеличивает по dbAppend() |
|
насколько стабильно Autoincrement делается для dbAppend() нескольких клиентов, если делать FLock(), наверно будет нормально, а если не делать ? цитата: | Можно конечно доработать rdd leto, чтобы сервер после добавления возвращал не только номер новой записи, но и значения autoinc-полей. Сейчас этого нет. |
| Возможно кому то это актуально, но нам нет. Сервер подстрогали под себя с использованием переменных сервера и триггера.
|
|
|
|
| Администратор
|
Пост N: 2641
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.12.12 16:47. Заголовок: SergKis пишет: наск..
SergKis пишет: цитата: | насколько стабильно Autoincrement делается для dbAppend() нескольких клиентов, если делать FLock(), наверно будет нормально, а если не делать ? |
| Я autoinc не использую, и насчет стабильности точно не скажу. Но мне кажется, что и без flock, т.е. по rlock, будет стабильнее, чем делать go bottom, выбирать последний ключ, и т.д, поскольку узких мест для autoinc меньше.
|
|
|
|
| moderator
|
Пост N: 530
Зарегистрирован: 06.07.06
|
|
Отправлено: 17.01.13 13:56. Заголовок: http://kresin.belgor..
|
|
|
|
| постоянный участник
|
Пост N: 2576
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.01.13 19:20. Заголовок: SergKis пишет: Поле..
SergKis пишет: Дайте пример пожалуйста как это делать ? Ни разу не видел и не знаю как сделать...
|
|
|
|
| постоянный участник
|
Пост N: 100
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.01.13 22:44. Заголовок: Andrey пишет:Дайте п..
Andrey пишет: цитата: | Дайте пример пожалуйста как это делать ? Ни разу не видел и не знаю как сделать... |
| Аналогично, но думаю как то так: aStru := {{"R_0", "+", 7, 0}, ...} ? R_0 // nnn dbAppend(.T.) dbUnlock() ? R_0 // nnn+1
|
|
|
|
| moderator
|
Пост N: 531
Зарегистрирован: 06.07.06
|
|
Отправлено: 23.01.13 09:05. Заголовок: Добавлен подраздел 3..
Добавлен подраздел 3.10 INET подсистема с описанием всех hb_inet... функций.
|
|
|
|
| постоянный участник
|
Пост N: 354
Зарегистрирован: 06.02.07
|
|
Отправлено: 28.01.13 12:45. Заголовок: alkresin Александр, ..
alkresin Александр, может быть постепенно начать это описание перегонять в тот же Викиучебник? (там же, где я начал про Harbour - вот тут - да никто [пока] не поддержал) (даже без "изысков", без разбивки на разделы в разных страницах, одним plain-викитекстом) Или переделать нашлепанное мной - или рядом "с нуля" (под каким-то чуть иным названием)... Тогда можно было бы коллективно "по 5 копеек" править/дополнять. Или нет смысла? Если есть - могу "скелет" по уже существующему (Вашему) сделать.
|
|
|
|
| moderator
|
Пост N: 532
Зарегистрирован: 06.07.06
|
|
Отправлено: 29.01.13 10:39. Заголовок: Александр, может быт..
цитата: | Александр, может быть постепенно начать это описание перегонять в тот же Викиучебник? |
| Перегоняйте :). Лично мне удобнее хранить/пополнять эти описания так, как сейчас, поскольку, во-первых, я могу их править в оффлайне простым текстовым редактором ( я пользуюсь Far с плагинами ) и, во-вторых, опять-таки в оффлайне использовать как справочник. Кстати, там есть небольшая ошибка, та же, что и в Википедии ( ту статью тоже вы писали ? ): цитата: | Первые версии Harbour были созданы Антонио Линаресом (исп. Antonio Linares) (Испания) в 1999 году. |
|
Антонио сам не создал ни одной версии, хотя его вклад на начальном этапе был значительным. Он выступил с инициативой, сказал: давайте будем делать так, так и так, выложил первые файлы - заготовки, версией это назвать нельзя, так как с ними еще ничего нельзя было делать.
|
|
|
|
| постоянный участник
|
Пост N: 357
Зарегистрирован: 06.02.07
|
|
Отправлено: 29.01.13 21:12. Заголовок: alkresin пишет: ту ..
alkresin пишет: цитата: | ту статью тоже вы писали ? |
|
"Ту"?.. Я писал (опять же, не "из головы", а переводя из англо-Вики, оф.сайта и еще откуда-то - возможно, в т.ч. и из вас) и в Википедии, и (практически копипастом) перенес в Викиучебник. Насчет цитата: | там есть небольшая ошибка |
|
- я не историк, я только учусь :) Не тщился сходу создать "подлинную историю Harbour" - лишь сделал "заготовку" (уж что где увидел-перевел, возможно, что увидел не то); никто из лучше меня знающих предмет (или желающих "иметь русскую документацию") не поддержал хотя бы "тремя копейками правок" (не жалуюсь и не наезжаю - просто констатирую ;) взгляните в Вики-статье в "История" - кроме меня, существенного изменения не внёс никто). Мне тоже удобнее иметь офлайн-справочник (и спокойно пользуюсь CHMами из поставки HMG - на столько-то знаний английского хватает), но дело в настоящий момент обстоит таким образом, что НЕ СУЩЕСТВУЕТ нормального, внятного онлайнового "курса молодого бойца" на РУССКОМ языке (да и офлайнового - тоже; да и " немолодого бойца" - тоже). Предположим, некий "неофит", захотевший либо перегнать клипперную прогу и добавить туда некие харборовские "навороты", либо слепить нечто на HMG, но не силён в английском - практически обречен начать задавать, например, здесь в форуме, "дурацкие чайниковские вопросы" типа "с чего начать?"; ему НЕ надо еще знать, "как скачать исходники Harbour с SVN" или еще что-то, ему нужен раздел "вот что можно сделать!" (на том же "стандартном Harbour" и "стандартном Harbour+HMG"; как первоначальная "завлекалочка"), раздел "делаем шаг за шагом", раздел "справочник", раздел "ЧаВо"... У англоязычных это более-менее есть, у испаноязычных - есть, у португало (бразило-португало) - есть, у русскоязычных - пока нет. И времени/сил лепить в одиночку ни у кого из нас, конечно, нет. Потому (в том числе), думаю, здесь активно участвующих (в т.ч. и присоединяющихся "неофитов") достаточно немного - поскольку НЕТ "учебника для 1го класса". Ребята! Я же не сержусь и никого не "гоню пинками" википедировать! :) :) Просто "уж сколько раз твердили миру", что "вот бы кто сделал хоть какую-то русскую доку..." А проще Вики для коллективного создания подобного методом "с каждого по копейке"... если кто знает - "ткните пальцем" :)
|
|
|
|
| постоянный участник
|
Пост N: 2599
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.01.13 22:04. Заголовок: gustow пишет: разде..
|
|
|
|
| постоянный участник
|
Пост N: 360
Зарегистрирован: 06.02.07
|
|
Отправлено: 30.01.13 06:27. Заголовок: Andrey , и это, в ча..
Andrey , и это, в частности, тоже пойти может, почему нет? Я просто зафиксировал "текущее положение на фронтах" на сегодня. Но не буду больше оффтопить в ветке - Александр, извините ;)
|
|
|
|
| moderator
|
Пост N: 533
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.01.13 11:44. Заголовок: gustow пишет: никто..
gustow пишет: цитата: | никто из лучше меня знающих предмет (или желающих "иметь русскую документацию") не поддержал хотя бы "тремя копейками правок" (не жалуюсь и не наезжаю - просто констатирую ;) |
| Я даже зарегистрировался на Википедии специально чтобы поправить это дело, оставил там сообщение для авторов, но, может, не там, где надо. Интерфейс там не то, чтобы был интуитивно понятный, пока еще не начал разбираться. цитата: | Предположим, некий "неофит", захотевший либо перегнать клипперную прогу и добавить туда некие харборовские "навороты", либо слепить нечто на HMG, но не силён в английском - практически обречен начать задавать, например, здесь в форуме, "дурацкие чайниковские вопросы" типа "с чего начать?"; ему НЕ надо еще знать, "как скачать исходники Harbour с SVN" или еще что-то, ему нужен раздел "вот что можно сделать!" |
| Мне кажется, что у меня на сайте достаточно информации для "неофита", или я что-то упустил ? "Что можно сделать" - тоже есть, там несколько программ, написанных на Харборе. цитата: | А проще Вики для коллективного создания подобного методом "с каждого по копейке" |
| Да, Вики отличный инструмент именно для коллективной работы, но, кроме самого инструмента нужен еще и коллектив - группа людей, желающая этим регулярно заниматься.
|
|
|
|
| moderator
|
Пост N: 534
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.01.13 11:46. Заголовок: Добавил в "3.11 ..
Добавил в "3.11 Всякие новые функции" описание hb_token... , hb_numtohex, hb_hextonum.
|
|
|
|
| постоянный участник
|
Пост N: 363
Зарегистрирован: 06.02.07
|
|
Отправлено: 30.01.13 13:45. Заголовок: alkresin пишет: нуж..
alkresin пишет: Вот и я примерно о том же гундел ;) alkresin пишет: цитата: | Интерфейс там не то, чтобы был интуитивно понятный |
| Ну, в общем-то да - но мне месяца (с перекурами) хватило, чтобы научиться без особых "наворотов" что-то лепить. К Вашей инфе (на Вашем сайте), Александр, претензий не имею (кроме того, что по "технологии" именно Вам, одному, приходится - по необходимости - добавлять/обновлять/оформлять информацию). Но... нескольких "ищущих новых путей" (но слабых в инглише) отправлял туда (правда, где-то с год или раньше назад) - им было либо многое непонятно (с "неофитского" взгляда), либо много лишнего (тоже оттуда же), либо многого недоставало (и тоже оттуда же). Я же не наезжаю - представляю, как "трудновато" грамотно "введение" в достаточно новый язык сделать (особенно для привыкших "программировать", ляпая формочки в каком-то "вижуале", не более того)...
|
|
|
|
| постоянный участник
|
Пост N: 364
Зарегистрирован: 06.02.07
|
|
Отправлено: 30.01.13 15:13. Заголовок: alkresin Александр, ..
alkresin Александр, посмотрите "прикидку" вот тут. Содержание (пока) взял из англо-учебника - но "никто не держит нас за руку", чтобы мы не изменили это в два клика :) А начало раздела "Установка" - практически копипастом от Вас. (чтобы слепить это, понадобилось минут 20)
|
|
|
|
| moderator
|
Пост N: 536
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.01.13 15:13. Заголовок: Но... нескольких ..
цитата: | Но... нескольких "ищущих новых путей" (но слабых в инглише) отправлял туда (правда, где-то с год или раньше назад) - им было либо многое непонятно (с "неофитского" взгляда), либо много лишнего (тоже оттуда же), либо многого недоставало (и тоже оттуда же). |
| С тех пор там многое изменилось, я два месяца назад это дело кардинально переработал - исправил, убрал весь устаревший материал, часть переписал, добавил еще много "лишнего" :). Наверное, многое можно было бы сделать лучше, но для этого нужна обратная связь. цитата: | представляю, как "трудновато" грамотно "введение" в достаточно новый язык сделать (особенно для привыкших "программировать", ляпая формочки в каком-то "вижуале", не более того)... |
| Ну, вообще-то, этот материал - не введение в новый язык, он для тех, кто уже писал на Клиппере. Для остальных, действительно, нужен для начала учебник по языку.
|
|
|
|
| постоянный участник
|
Пост N: 366
Зарегистрирован: 06.02.07
|
|
Отправлено: 31.01.13 12:21. Заголовок: alkresin Александр, ..
alkresin Александр, смотрели ли "прикидку" в Викиучебнике? (см. на два коммента выше) А то как-то не заметил реакции (ни в каких смыслах) ;)
|
|
|
|
| moderator
|
Пост N: 539
Зарегистрирован: 06.07.06
|
|
Отправлено: 31.01.13 13:06. Заголовок: Александр, смотрели ..
цитата: | Александр, смотрели ли "прикидку" в Викиучебнике? (см. на два коммента выше) А то как-то не заметил реакции (ни в каких смыслах) ;) |
| То сообщение появилось пока я писал свое и я его просто не заметил. Посмотрел "прикидку". Первое, что хочу сказать - ее бы надо, наверное, сделать частью той страницы По содержанию - я бы сделал раздел "Основы языка" и включил бы туда подразделы "Типы данных и их описание", "Управляющие структуры", "Операторы" ( раз уж мы описываем язык, то и это надо ),"Команды" ( может, не все сразу перечислять, но объяснить, что это такое), "Функции"(то же, что и для команд). Можно здесь делать подразделы ? Термин "парадигмы" я бы здесь не использовал. Парадигма - это не то, что написано в англоязычном оригинале, это нечто другое. Ну и, возможно, именно для начинающих имеет смысл сделать раздел еще до описания языка ( я подумываю и у себя что-то такое сделать ) типа "Начинаем писать на Harbour". И - по шагам: скачиваем вот это и это, пишем вот такую маленькую программу и вот так компилируем, скачиваем GUI библиотеку, пишем вот это и компилируем.
|
|
|
|
| moderator
|
Пост N: 540
Зарегистрирован: 06.07.06
|
|
Отправлено: 31.01.13 14:08. Заголовок: gustow пишет: У анг..
gustow пишет: цитата: | У англоязычных это более-менее есть, у испаноязычных - есть, у португало (бразило-португало) - есть, |
| А ссылки можно ? Что именно имеется ввиду ?
|
|
|
|
| постоянный участник
|
Пост N: 367
Зарегистрирован: 06.02.07
|
|
Отправлено: 31.01.13 20:51. Заголовок: Вот именно подобную ..
Вот именно подобную структуру я и имел в виду! С одной стороны - чтобы "неофит" мог быстро и без "уходов в прерывания" создать свое первое приложение (к примеру, с помощью того же "филатовского" 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
|
|
|
|
| moderator
|
Пост N: 542
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.02.13 09:20. Заголовок: Если это все, что ес..
Если это все, что есть, то мы далеко не в худшем положении. В материалах по этим ссылкам нет того, что мы с вами, по результатам этого небольшого обсуждения, хотели бы иметь. Они обрывочны и совершенно не структуированы. Списки и описания функций представляют собой по другому отформатированные данные из harbour/doc/en и не несут ничего, что и без них можно прочитать в официальной документации. Не сочтите за саморекламу, но, в сравнении с этим, моя страница содержит на порядок более качественный материал, какого вы больше нигде не найдете. Все малопонятные и сложные моменты, никак не прокомментированные в документации, я разбирал по исходникам и сам проверял в действии. Значительная часть функций, конечно, пока осталась за бортом - но именно по той причине, что во всем предварительно надо тщательно разбираться самому. Просто откопипастить из harbour/doc/en не вижу большого смысла.
|
|
|
|
| постоянный участник
|
Пост N: 2622
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.02.13 12:06. Заголовок: alkresin пишет: Не ..
alkresin пишет: цитата: | Не сочтите за саморекламу, но, в сравнении с этим, моя страница содержит на порядок более качественный материал, какого вы больше нигде не найдете. |
| Да, это точно ! Спасибо БОЛЬШОЕ за вашу работу ! Мы вас очень ценим !
|
|
|
|
| moderator
|
Пост N: 544
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.02.13 15:50. Заголовок: Добавил раздел 3.11 ..
Добавил раздел 3.11 Многопоточность. Там еще предстоит добавить общих пояснений и примеров, но уже изложен так интересующий Андрея вопрос о совместном использовании БД в многопоточном приложении.
|
|
|
|
| постоянный участник
|
Пост N: 2628
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.02.13 23:43. Заголовок: alkresin пишет: Там..
alkresin пишет: цитата: | Там еще предстоит добавить общих пояснений и примеров, но уже изложен так интересующий Андрея вопрос о совместном использовании БД в многопоточном приложении. |
| СПАСИБО БОЛЬШОЕ ! Но все таки не знаю как сделать небольшой пример по базам .... http://clipper.borda.ru/?1-4-0-00000795-000-0-0-1356519713
|
|
|
|
| moderator
|
Пост N: 553
Зарегистрирован: 06.07.06
|
|
Отправлено: 08.02.13 08:30. Заголовок: В раздел 3.11 Многоп..
В раздел 3.11 Многопоточность добавлены новые примеры и пояснения.
|
|
|
|
| moderator
|
Пост N: 556
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.02.13 15:38. Заголовок: В раздел 3.10 Inet п..
В раздел 3.10 Inet подсистема добавил пример использования INET функций в многопоточном ( двухпоточном ) приложении. Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :)
|
|
|
|
| |
Пост N: 719
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.02.13 16:21. Заголовок: alkresin пишет: Мал..
alkresin пишет: цитата: | Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :) |
|
спасибо за пример, уже тестирую.
|
|
|
|
| |
Пост N: 720
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.02.13 16:24. Заголовок: Запустил прогу, напи..
Запустил прогу, написал на форум, говорит "ничего нового", нажал Ecs и получил: Error BASE/3012 Argument error: HB_THREADJOIN Called from HB_THREADJOIN(0) Called from MAIN(32)
|
|
|
|
| |
Пост N: 721
Зарегистрирован: 11.06.10
|
|
Отправлено: 18.02.13 16:38. Заголовок: AlexMyr пишет: Erro..
AlexMyr пишет: цитата: | Error BASE/3012 Argument error: HB_THREADJOIN |
|
Забыл опцию -mt, все работает. Извините.
|
|
|
|
| |
Пост N: 2633
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.02.13 17:12. Заголовок: alkresin Спасибо за..
alkresin Спасибо за примеры. Вопрос. 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 Проверка на заблокированность мьютекса не нужна ? Я вот про такой код 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
|
|
|
|
| постоянный участник
|
Пост N: 2684
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.13 17:44. Заголовок: alkresin Спасибо бо..
alkresin Спасибо большое за пример ! Прямо то что нужно ! Побольше таких примеров....
|
|
|
|
| moderator
|
Пост N: 557
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.02.13 17:48. Заголовок: В данном случае в эт..
В данном случае в этом нет необходимости, так как 1) параллельный поток блокирует mutex на очень короткое время 2) поток, который выполняет этот код, все равно не делает больше ничего полезного, так что, будь даже потенциальная задержка большой, мы бы ничего не выиграли. Может, вы забыли, что hb_mutexLock( mutex1 ) не просто блокирует mutex, но останавливает выполнение текущего потока до тех пор, пока ему не удастся это сделать ( т.е., пока этот mutex не будет разблокирован другим потоком, если он был им заблокирован ).
|
|
|
|
| |
Пост N: 2634
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.02.13 17:49. Заголовок: alkresin пишет: Мож..
alkresin пишет: Да точно , упустил этот момент.
|
|
|
|
| постоянный участник
|
Пост N: 2687
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.13 02:52. Заголовок: alkresin пишет: Мал..
alkresin пишет: цитата: | Маленькая консольная программа, которая проверяет главную страницу этого форума на наличие обновлений :) |
| Отрубаем интернет, запускаем прогу, F5, программа пишет - "ничего нового". Правда иногда вверху пишет "сбой"... Через раз... Как бы правильно повесить ALERT("Нет ИНТЕРНЕТА !") ?
|
|
|
|
| moderator
|
Пост N: 558
Зарегистрирован: 06.07.06
|
|
Отправлено: 19.02.13 08:45. Заголовок: Нажимать F5, пока не..
Нажимать F5, пока не появилось в углу сообщение о наличии обновлений, большого смысла нет. Сообщение "Сбой" выскакивает как раз после каждой неудачной попытки соединения. Если нужна дополнительная информация о причинах сбоя, можно сделать еще одну раздляемую потоками переменную, куда один поток будет записывать текст, возвращаемый hb_inetErrorDesc(), другой - по F5 выводить этот текст.
|
|
|
|
| постоянный участник
|
Пост N: 2689
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.13 12:14. Заголовок: alkresin пишет: Ес..
alkresin пишет: цитата: | Если нужна дополнительная информация о причинах сбоя |
| Да нет, не нужна. Просто проверить, есть ИНЕТ или нет. У Григория есть специальный пример на эту тему: MiniGUI\SAMPLES\Advanced\INET_CHECKER А просто средствами Харбора (функции) есть ? lInet := hb_inetInit() Возвращает .T. при включенном и отключенном интернете. Harbour 3.2.0dev (Rev. 18721)
|
|
|
|
| |
Пост N: 734
Зарегистрирован: 11.06.10
|
|
Отправлено: 27.02.13 13:45. Заголовок: В документации указа..
В документации указано: цитата: | А строковые константы можно объявлять, как в 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"
|
|
|
|
| moderator
|
Пост N: 562
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.02.13 14:23. Заголовок: А, ну да, конечно, н..
А, ну да, конечно, надо исправить.
|
|
|
|
| moderator
|
Пост N: 572
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.03.13 19:10. Заголовок: http://www.kresin.ru/hrbfaq.html
|
|
|
|
| moderator
|
Пост N: 575
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.03.13 18:03. Заголовок: Добавил новую страни..
Добавил новую страницу: Harbour - шаг за шагом - примерно то, о чем мы здесь говорили пару месяцев назад. Что еще можно сюда добавить ?
|
|
|
|
| |
Пост N: 2910
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.03.13 19:21. Заголовок: alkresin Для первог..
alkresin Для первого старта более чем достаточно.
|
|
|
|
| постоянный участник
|
Пост N: 852
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.03.13 13:22. Заголовок: Александр, видимо пр..
Александр, видимо придется "Шаг за шагом" подправить в связи с переходом на Git.
|
|
|
|
| |
Пост N: 801
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.03.13 16:33. Заголовок: C git тянем исходник..
C git тянем исходники, чтобы самим собрать harbour, а в "Шаг за шагом" скачиваем уже готовый дистрибутив harbour готовый к использованию.
|
|
|
|
| постоянный участник
|
Пост N: 853
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.03.13 16:46. Заголовок: Да, но с течением вр..
Да, но с течением времени те готовые дистрибутивы будут уже далеко не up-to-date. Решать автору, надо или нет.
|
|
|
|
| |
Пост N: 802
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.03.13 16:53. Заголовок: На то они и Nightly ..
На то они и Nightly binary чтобы быть всегда up-to-date.
|
|
|
|
| постоянный участник
|
Пост N: 854
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.03.13 17:05. Заголовок: Вы уж простите меня,..
Вы уж простите меня, что спорю, но в только что скачанном мной архиве Changelog.txt оканчивается вот этим: 2013-03-18 19:03 UTC+0100 Viktor Szakats (harbour syenar.net) * doc/en/*.txt * doc cleanups Вот я и сделал вывод, что эти архивы не обновляются.
|
|
|
|
| |
Пост N: 803
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.03.13 17:30. Заголовок: PSP пишет: Вот я и ..
PSP пишет: цитата: | Вот я и сделал вывод, что эти архивы не обновляются. |
|
Для большинства пользователей лучше скачивать стабильную версию harbour, что и предлагаю указать в "Шаг за шагом".
|
|
|
|
| moderator
|
Пост N: 576
Зарегистрирован: 06.07.06
|
|
Отправлено: 31.03.13 18:35. Заголовок: AlexMyr пишет: Для ..
AlexMyr пишет: цитата: | Для большинства пользователей лучше скачивать стабильную версию harbour, что и предлагаю указать в "Шаг за шагом". |
| Сложный вопрос, я думал об этом и выбрал nightly по следующей причине. Стабильная версия - это 3.0 от июля 2011 года. Сейчас 3.2, с тех пор было множество изменений, в том числе и таких, из-за которых, возможно, при обновлении версии придется что-то менять в программах и опциях того же hbmk. Хотя, может, вы и правы.
|
|
|
|
| постоянный участник
|
Пост N: 855
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.03.13 18:45. Заголовок: Было слишком много и..
Было слишком много изменений с 3.0 до нынешних пор. 3.0 нельзя рекомендовать, как основу, имхо. Может быть ночные сборки снова будут обновляться ежесуточно...
|
|
|
|
| |
Пост N: 804
Зарегистрирован: 11.06.10
|
|
Отправлено: 31.03.13 22:29. Заголовок: PSP пишет: Может б..
PSP пишет: цитата: | Может быть ночные сборки снова будут обновляться ежесуточно... |
|
Будут, настроят скрипты и будут, НО ночные это нестабильные сборки и рекомендовать их новичкам, мы ведь о новичках говорим, нельзя. PSP пишет: цитата: | Было слишком много изменений с 3.0 до нынешних пор. 3.0 нельзя рекомендовать, как основу, имхо. |
|
почему же? это все таки оф. релиз, хоть и 2011 года. Много изменений? Вопрос к Александру - насколько помню, еще до не давнего времени, Вы работали на старых версиях harbour и hwgui, а сейчас?
|
|
|
|
| moderator
|
Пост N: 577
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.04.13 08:32. Заголовок: AlexMyr пишет: Вопр..
AlexMyr пишет: цитата: | Вопрос к Александру - насколько помню, еще до не давнего времени, Вы работали на старых версиях harbour и hwgui, а сейчас? |
| На работе для Windows использую Harbour 2 от июня 2010 - чтобы не заморачиваться с последствиями Unicode сборки для Win98 ( у нас кое-где она еще стоит ). Но я не новичок и обновиться до 3.2 для меня не проблема. Полностью согласен со всеми возражениями против ночных сборок для новичков - может, еще пара постов, и вы меня убедите окончательно :).
|
|
|
|
| |
Пост N: 805
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.04.13 08:56. Заголовок: Хорошо, изменений мн..
Хорошо, изменений много, но о них упоминается только в changelog, т.е. для новичка будет сложно определить что же кардинально изменилось с предыдущего стабильного релиза. Посмотрим в doc/oldnews.txt и увидим для версии 3.0.0 до 30 строк описания изменений с версии 2.0.0 и это за два года, т.е. новичок может подумать что проект вовсе не развивается, хотя на самом деле работы проделано много. Вывод - основы harbour можно изучать и на стабильной версии. И еще по hbmk2 - основное использование это hbmk2 file.prg (но это конечно тривиально), а все опции могут не понадобится никогда даже и для профи.
|
|
|
|
| |
Пост N: 806
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.04.13 13:10. Заголовок: И еще один нюанс, Ni..
И еще один нюанс, Nightly binary только для win, в этом случае будут вопросы у тех кто под linux и не только, а значит качать Current release.
|
|
|
|
| moderator
|
Пост N: 578
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.04.13 15:25. Заголовок: AlexMyr пишет: Nigh..
AlexMyr пишет: цитата: | Nightly binary только для win, в этом случае будут вопросы у тех кто под linux и не только |
| Ну, вообще-то, обсуждаеиый Harbour - шаг за шагом сделан пока для Windows пользователей, для Linux еще предстоит это сделать.
|
|
|
|
| moderator
|
Пост N: 582
Зарегистрирован: 06.07.06
|
|
Отправлено: 08.04.13 15:57. Заголовок: Обновлен Harbour для..
Обновлен Harbour для начинающих - добавлен раздел 4. Дополнительные библиотеки с подразделами 4.1 Обзор и 4.2 GUI.
|
|
|
|
| moderator
|
Пост N: 592
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.04.13 11:00. Заголовок: Изменил-таки Harbour..
|
|
|
|
| |
Пост N: 57
Зарегистрирован: 15.12.09
|
|
Отправлено: 15.04.13 11:30. Заголовок: Стоит ли смотреть в ..
Стоит ли смотреть в сторону 3.0 для "дважды начинающего" или уж сесть и разобраться с текущим состоянием? Что такого очень вкусного можно потерять оставаясь на 3.0? p.s. вопрос от человека не когда не стремящегося к новизне в ущерб стабильности, например в линуксе дистрибутивы на пакетной базе ubuntu 10.04 меня устраивают на все 100% как например XP и прочее для многих http://www.viterminal.ru/blog/page/vi1cwinxp#cut
|
|
|
|
| moderator
|
Пост N: 594
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.04.13 11:47. Заголовок: pureproft пишет: Чт..
pureproft пишет: цитата: | Что такого очень вкусного можно потерять оставаясь на 3.0? |
| Принципиальных, знаковых изменений не припомню, хотя, может, что-то упустил. Проблема с Nightly builds простая - никто не гарантирует, что "начинающий", скачав его в "неудачный" день, получит работающий продукт.
|
|
|
|
| moderator
|
Пост N: 683
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.06.13 15:59. Заголовок: Harbour для начинающ..
Harbour для начинающих, 3.2 Некоторые языковые расширения дополнен информацией о расширенных кодоблоках. Рекомендую почитать, там указывается на очень интересную деталь ( реализацию замыканий ), на что, мне кажется, никто еще не обращал внимания.
|
|
|
|
| Администратор
|
Пост N: 2903
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.06.13 16:22. Заголовок: alkresin пишет: Рек..
alkresin пишет: цитата: | Рекомендую почитать, там указывается на очень интересную деталь ( реализацию замыканий ), на что, мне кажется, никто еще не обращал внимания. |
| Так эти замыкания имеются и в клиппере, правда, их так не принято называть. Я еще 20 с лишним лет назад использовал функции вроде: Function C4Block(n) Return {|a| a[4][n]} переменная n остается жить вне функции C4Block, и, таким образом, возвращаемый ею блок кода является замыканием
|
|
|
|
| moderator
|
Пост N: 684
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.06.13 17:36. Заголовок: Pasha пишет: Так эт..
Pasha пишет: цитата: | Так эти замыкания имеются и в клиппере, правда, их так не принято называть |
| Совершенно верно, я так там и написал. Разница в том, что кодоблок теперь может быть достаточно большим фрагментом кода, полноценной функцией, включающей любые языковые средства и это дает новые возможности по использованию замыканий ( в Javascript это один из основных инструментов ).
|
|
|
|
| moderator
|
Пост N: 685
Зарегистрирован: 06.07.06
|
|
Отправлено: 26.06.13 18:36. Заголовок: Скажем так, из-за ог..
Скажем так, из-за ограниченности возможностей кодоблоков этой особенности не уделяли особого внимания.
|
|
|
|
| |
Пост N: 895
Зарегистрирован: 11.06.10
|
|
Отправлено: 27.06.13 09:46. Заголовок: Насколько я понял пр..
Насколько я понял про замыкание, то получается, что пример closure можно написать след. образом: 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 т.е. грубо это использование static переменных, но видимых только в пределах блока кода. Или все намного сложнее?
|
|
|
|
| Администратор
|
Пост N: 2904
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.06.13 10:16. Заголовок: AlexMyr пишет: т.е...
AlexMyr пишет: цитата: | т.е. грубо это использование static переменных, но видимых только в пределах блока кода. Или все намного сложнее? |
| Не только static, можно использовать и local-переменные. В клиппере/харборе в каждой переменной есть счетчик ее использования. Для local-переменной функции он равен 1. Если переменная используется еще и в блоках кода, этот счетчик инкрементируется. Когда функция завершается, или блок кода уничтожается, счетчик декрементируется. Когда значение счетчика станет равным нулю, переменная будет уничтожена.
|
|
|
|
| Администратор
|
Пост N: 2905
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.06.13 10:18. Заголовок: alkresin пишет: Ска..
alkresin пишет: цитата: | Скажем так, из-за ограниченности возможностей кодоблоков этой особенности не уделяли особого внимания. |
| Я всегда активно использовал замыкания. Из-за ограниченности блоков кода просто делал отдельную функцию, которую вызывал из блока кода, с передачей ей параметров. Этот стиль использую по привычке и в харборе. Не создаю многострочные блоки кода, а делаю отдельную функцию. Разница небольшая.
|
|
|
|
| moderator
|
Пост N: 686
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.06.13 11:25. Заголовок: AlexMyr пишет: т.е...
AlexMyr пишет: цитата: | т.е. грубо это использование static переменных, но видимых только в пределах блока кода. |
| Не совсем. Дело в том, что у каждого экземпляра кодоблока ( если вы запустили функцию Closure() из моего примера несколько раз ) будет свой набор этих переменных ( тех, что определены в Closure() как Local ), т.е. этот экземпляр чем-то похож на объект, вот только по именам нельзя обращаться извне к тем переменным. А в Javascript, кстати, можно - поэтому там эта штука активно используется вместо объектов, в ряде случаев ( есть определенные нюансы ) это бывает удобнее.
|
|
|
|
| moderator
|
Пост N: 720
Зарегистрирован: 06.07.06
|
|
Отправлено: 20.11.13 15:35. Заголовок: Добавил JSON - функц..
Добавил JSON - функции, hb_Random...(), и еще по мелочи.
|
|
|
|
| |
Пост N: 73
Зарегистрирован: 14.01.09
|
|
Отправлено: 13.12.13 09:21. Заголовок: Александр, спасибо з..
Александр, спасибо за труд! много интересного узнал о старом добром Харборе. Кстати, весьма полезно, что сразу есть ссылки на скачку и инструкции , как получить работающий комплект Харбор+HWGUI. еще интересно бы узнать, как обстоят дела с компиляцией программ для Андроид? и про создание простейших вебсервисов на Харборе тоже интересно почитать. По английски и испански есть некоторая информация, а по русски - нету.
|
|
|
|
| moderator
|
Пост N: 750
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.12.13 11:42. Заголовок: Про Андроид ничего н..
Про Андроид ничего не могу сказать, для меня эта тема не актуальна, у меня нет ни смартфона, ни планшета - и я не планирую их заводить. Вроде, были сообщения в developers list и здесь на эту тему... Вебсервисами занимался, вот тут об этом шла речь. Давно собираюсь сделать страничку на эту тему у себя на сайте.
|
|
|
|
| |
Пост N: 3834
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.02.14 11:21. Заголовок: alkresin пишет: Воз..
alkresin пишет: цитата: | Возможно, создам попозже новую страницу - что-то типа "Harbour для продолжающих" :), там надо будет подробно описать систему расширения (связь с С) и то, как писать оболочки для вызовов разных API, Windows API в том числе |
| Ждем с нетерпением
|
|
|
|
| постоянный участник
|
Пост N: 3233
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.02.14 20:26. Заголовок: Dima пишет: Ждем с ..
Dima пишет: Поддерживаю !
|
|
|
|
| moderator
|
Пост N: 815
Зарегистрирован: 06.07.06
|
|
Отправлено: 24.10.14 13:47. Заголовок: Обновил раздел 3.6 ..
Обновил раздел 3.6 Работа с hrb - файлами: Добавлено описание hb_hrbGetFunList(), дополнено описание hb_hrbLoad() - новые параметры.
|
|
|
|
| moderator
|
Пост N: 836
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.01.15 10:50. Заголовок: Обновлен раздел 3.12..
Обновлен раздел 3.12 Всякие новые функции: Добавлены краткие описания семейства hb_FName...()
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 18.06.15
|
|
Отправлено: 24.06.15 08:31. Заголовок: Уважаемый модератор ..
Уважаемый модератор "alkresin" - огромное спасибо за документацию. Это лучшее из всего что удалось отыскать по xHarbour на русском языке. Одна проблема - нет возможности при работе находиться постоянно в интернете. Нет ли возможности скачать данную документацию в PDF формате ...?
|
|
|
|
| |
Пост N: 4955
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.06.15 08:57. Заголовок: Alex_Cher В браузер..
Alex_Cher В браузере Файл - Сохранить как и сохраняем целиком всю страницу куда нужно. Смотрим локально.
|
|
|
|
| |
Пост N: 335
Зарегистрирован: 16.12.08
|
|
Отправлено: 20.01.16 22:08. Заголовок: Новый сайт для изуче..
|
|
|
|
| постоянный участник
|
Пост N: 1233
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.10.16 07:48. Заголовок: alkresin Сломалось ..
alkresin Сломалось на сайте http://www.kresin.ru/ "Статьи" -> "Harbour для начинающих" -> 404 ... Вход с "Главной" по строке 23/08/2016 - Дополнен раздел Harbour для начинающих, 3.3 Классы и объекты - добавлены несколько функций. проходит
|
|
|
|
| moderator
|
Пост N: 1043
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.10.16 09:14. Заголовок: SergKis пишет: Слом..
SergKis пишет: Спасибо за информацию. В самом деле пропал файл с сайта. Переписал по новой.
|
|
|
|
| moderator
|
Пост N: 1045
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.11.16 11:16. Заголовок: Дополнен раздел Допо..
|
|
|
|
| постоянный участник
|
Пост N: 5173
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.16 11:43. Заголовок: Классное описание ! ..
Классное описание ! Спасибо за описание ! Только сделайте пожалуйста ссылки на эти библиотеки, чтобы всем было понятно, о каких библиотеках идёт речь. Minigui - свободно распространяемая библиотека, в отличие от остальных, основана на использовании массивов, а не классов, но с помощью препроцессора предлагает ООП-подобный синтаксис, отличающийся от ООП-синтаксиса, принятого в Harbour. Я так понял МиниГуи - это несколько библиотек (где слово MiniGui, кстати говоря очень часто встречаемое в библиотеках): 1) Григория Филатова: Harbour MiniGUI Extended Edition - http://www.hmgextended.com/download.html 2) Roberto Lopez: HMG xBase Development System For Windows - http://harbourminigui.googlepages.com
|
|
|
|
| moderator
|
Пост N: 1046
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.11.16 12:32. Заголовок: Сделал...
Сделал.
|
|
|
|
| moderator
|
Пост N: 1035
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.11.16 13:14. Заголовок: alkresin пишет: Сде..
alkresin пишет: Есть еще и библиотека ooHG, полностью совместимая по синтаксису с МиниГуи, но основанная на использовании классов. Это противоречит описанию, которое дано другим диалектам библиотеки МиниГуи Возможно ли дополнить Ваше описание
|
|
|
|
| moderator
|
Пост N: 1047
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.11.16 14:09. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Это противоречит описанию, которое дано другим диалектам библиотеки МиниГуи |
| Ну так помещу ее отдельным пунктом.
|
|
|
|
| moderator
|
Пост N: 1036
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.11.16 14:23. Заголовок: alkresin пишет: пом..
alkresin пишет: цитата: | помещу ее отдельным пунктом |
| Благодарю за сверхбыструю реакцию
|
|
|
|
| moderator
|
Пост N: 1050
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.11.16 14:57. Заголовок: Дополнен раздел Допо..
|
|
|
|
| |
Пост N: 6162
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.11.16 18:45. Заголовок: alkresin Спасибо за..
alkresin Спасибо за труд ! Простой вопрос. А не могли бы ,вот эту всю документацию конвертнуть в формат CHM , если это конечно не сложно. Если нужна в этом какая то помощь , я готов.
|
|
|
|
| moderator
|
Пост N: 1051
Зарегистрирован: 06.07.06
|
|
Отправлено: 01.12.16 11:30. Заголовок: Могу, htm2chm справи..
Могу, htm2chm справится, наверное. Надо только разобраться, как там разделы сделать.
|
|
|
|
| |
Пост N: 329
Зарегистрирован: 12.11.06
|
|
Отправлено: 01.12.16 11:53. Заголовок: alkresin огромное сп..
alkresin огромное спасибо за Ваш труд!
|
|
|
|
| moderator
|
Пост N: 1052
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.12.16 11:49. Заголовок: На главную страницу ..
|
|
|
|
| |
Пост N: 197
Зарегистрирован: 19.05.05
|
|
Отправлено: 02.12.16 13:44. Заголовок: После скачивания при..
После скачивания при попытке открыть выдает информацию Переход на веб-страницу отменен Попробуйте сделать следующее: Повторите ввод адреса.
|
|
|
|
| |
Пост N: 6165
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.12.16 13:59. Заголовок: nick_mi На файле - ..
nick_mi На файле - свойства-разблокировать и все будет норм alkresin Большое спасибо за CHM !!!
|
|
|
|
| |
Пост N: 198
Зарегистрирован: 19.05.05
|
|
Отправлено: 02.12.16 14:25. Заголовок: Dima пишет: На файл..
Dima пишет: цитата: | На файле - свойства-разблокировать и все будет норм |
| Спасибо помогло
|
|
|
|
| moderator
|
Пост N: 1053
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.12.16 14:31. Заголовок: Упаковал его в zip, ..
Упаковал его в zip, чтобы не было этих заморочек с блокировкой.
|
|
|
|
| moderator
|
Пост N: 1054
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.12.16 12:56. Заголовок: Добавлена информация..
|
|
|
|
| постоянный участник
|
Пост N: 5246
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.16 14:37. Заголовок: alkresin пишет: обн..
alkresin пишет: Спасибо БОЛЬШОЕ за вашу работу ! А откуда хелпер можно скачать ?
|
|
|
|
| moderator
|
Пост N: 1055
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.12.16 16:50. Заголовок: Andrey пишет: А отк..
|
|
|
|
| постоянный участник
|
Пост N: 5247
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.12.16 00:49. Заголовок: alkresin пишет: там..
alkresin пишет: Спасибо, то что нужно !
|
|
|
|
| moderator
|
Пост N: 1328
Зарегистрирован: 06.07.06
|
|
Отправлено: 27.07.19 10:20. Заголовок: Добавил подраздел пр..
|
|
|
|
| moderator
|
Пост N: 1431
Зарегистрирован: 06.07.06
|
|
Отправлено: 30.09.20 11:39. Заголовок: В подраздел строковы..
В подраздел строковых функций http://www.kresin.ru/hrbfaq_3.html#Doc13_4 добавил hb_strIsUtf8(), hb_strReplace(), hb_strShrink() - только сегодня их обраружил и был приятно удивлен. Особенно понравилась hb_strReplace()ю
|
|
|
|
| постоянный участник
|
Пост N: 7001
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.07.21 10:47. Заголовок: Здравствуйте. Очень..
Здравствуйте. Очень мало документации по переменным времени. Можете сделать отдельный раздел у себя в справке ? Чтобы было в одном месте. tDtm := HB_DATETIME() ? HB_TSTOSTR( tDtm ) // 2021-07-19 00:28:52.946 "C" ? HB_TTOC( tDtm ) // 19.07.2021 00:28:52.946 "C" ? HB_TTOD( tDtm ) // 19.07.2021 "D" ? HB_TTON( tDtm ) // 2459415.02 "N" ? HB_TTOS( tDtm ) // 20210719002852946 "C" cDtm := HB_TSTOSTR( tDtm ) ? HB_STRTOTS( cDtm ) // 2021-07-19 00:28:52.946 "T" ? HB_CToT(cDtm) // 00:28:52.946 "T" cTm1 := cTm2 := "" ? tDtm := HB_DATETIME() // 2021-07-19 00:28:52.949 "T" ? tUtc := hb_TSToUTC( tDtm ) // 2021-07-18 21:28:52.949 "T" HB_TTOD( tDtm, @cTm1, "hh:mm:ss.fff" ) HB_TTOD( tUtc, @cTm2, "hh:mm:ss" ) ? cTm1 // 00:28:52.949 "C" ? cTm2 // 21:28:52 "C"
|
|
|
|
| |
Пост N: 1708
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.07.21 11:59. Заголовок: Andrey пишет: Очень..
Andrey пишет: цитата: | Очень мало документации по переменным времени. Можете сделать отдельный раздел у себя в справке ? Чтобы было в одном месте |
| тогда тут дублировать весь хелп по харбуру придется. Зачем ? достаточно где есть https://github.com/Petewg/harbour-core/wiki/hb_T Более того в ChangeLog.txt по Harbour эти функции прекрасно документированы * harbour/source/rtl/dateshb.c + added new .prg functions to mange date and timestamp values: HB_DATETIME() -> <tTimeStamp> HB_CTOD( <cDate> [, <cDateFormat> ] ) -> <dDate> HB_DTOC( <dDate> [, <cDateFormat> ] ) -> <cDate> HB_NTOT( <nValue> ) -> <tTimeStamp> HB_TTON( <tTimeStamp> ) -> <nValue> HB_TTOC( <tTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) -> <cTimeStamp> HB_CTOT( <cTimeStamp>, [ <cDateFormat> ] [, <cTimeFormat> ] ) -> <tTimeStamp> HB_TTOS( <tTimeStamp> ) -> <cYYYYMMDDHHMMSSFFF> HB_STOT( <cDateTime> ) -> <tTimeStamp> <cDateTime> should be in one of the above form: - "YYYYMMDDHHMMSSFFF" - "YYYYMMDDHHMMSSFF" - "YYYYMMDDHHMMSSF" - "YYYYMMDDHHMMSS" - "YYYYMMDDHHMM" - "YYYYMMDDHH" - "YYYYMMDD" - "HHMMSSFFF" - "HHMMSSF" - "HHMMSS" - "HHMM" - "HH" Important is number of digits.
|
|
|
|
| постоянный участник
|
Пост N: 7002
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.07.21 12:22. Заголовок: Haz пишет: Более то..
Haz пишет: цитата: | Более того в ChangeLog.txt по Harbour эти функции прекрасно документированы |
| Блин, а я искал по всему инету, вместо того чтобы первоисточник посмотреть... И поиск правильно нужно делать, я искал "HARBOUR hh:mm:ss"
|
|
|
|
| постоянный участник
|
Пост N: 7374
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.05.23 18:22. Заголовок: На сайте у вас есть:..
На сайте у вас есть: 3.13.6 Управление запуском процессов nResult := hb_ProcessRun( cCommand, [cStdIn], [@cStdOut], [@cStdErr], [lDetach] ) handle := hb_ProcessOpen( cCommand, [cStdIn], [@cStdOut], [@cStdErr], [lDetach] ) nResult := hb_ProcessValue( handle, [lWait] ) nResult := hb_ProcessClose( handle, lGentle ) А можно более подробнее дать параметры ? Я использую то что здесь на форуме давали: hPID := hb_processOpen( cRun + " " + cParam,,,,.F., @hProcess) Может и неправильно... nResult := hb_ProcessClose( handle, lGentle ) - возвращает логическую переменную ! Не понял почему ?
|
|
|
|
| moderator
|
Пост N: 1494
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.05.23 09:45. Заголовок: Описаний нигде нет, ..
Описаний нигде нет, разобраться можно только по исходникам и примерам применения. handle := hb_ProcessOpen( cCommand, [cStdIn], [@cStdOut], [@cStdErr], [lDetach] ) Здесь cCommand - сама команда, cStdIn - то, что для этой команды вы бы ввели с клавиатуры, cStdOut и cStdErr - в эти переменные записывается вывод запускаемой программы, если он направлен в стандартные потоки stdout, stderr, lDetach - чтобы запустить процесс и не ждать его завершения, "отвязать" от своей программы, @hProcess - сюда записывается идентификатор процесса. hb_ProcessClose() возвращает результат - удалось ли нормально завершить процесс.
|
|
|
|
| постоянный участник
|
Пост N: 7375
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.05.23 11:24. Заголовок: alkresin пишет: hb_..
alkresin пишет: цитата: | hb_ProcessClose() возвращает результат - удалось ли нормально завершить процесс. |
| Это я понял, просто наверное nResult нужно поменять на lResult ! А то получается, что ожидаешь число (N), и пишешь сразу в коде HB_NtoS(nResult) и получаешь пустоту....
|
|
|
|
| moderator
|
Пост N: 1495
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.05.23 12:48. Заголовок: А... Ну да, надо буд..
А... Ну да, надо будет исправить
|
|
|
|
| постоянный участник
|
Пост N: 7377
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.05.23 13:55. Заголовок: Ещё вопрос по вашей ..
Ещё вопрос по вашей документации. Можно ли разместить отдельный пример работы с потоком с одной базой данных ? Не знаю как сделать у себя. Базу открываю монопольно, запускаются несколько потоков с РАЗНЫМИ RECNO(), нужно записать в базу по этим RECNO() что-то и потом завершить поток.
|
|
|
|
| moderator
|
Пост N: 1496
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.05.23 15:45. Заголовок: Не получится. В доку..
Не получится. В документации написано, что workarea - локальные ресурсы потока, т.е., они не наследуются потоком. Для проверки написал вот это: Скрытый текст Function Main LOCAL hThread IF hb_mtvm() ? "Start" ELSE ? "No threads support..." QUIT ENDIF select a use life exclusive hThread := hb_threadStart( @thFunc() ) hb_threadDetach( hThread ) Inkey(1) ? "End" return nil Function thFunc select a dbgoto( 3 ) ? field->EVENT return nil
| и оно не работает, потому что поток "не видит" открытую родителем базу. Да, вообще говоря, такой режим работы не очень эффективен. Если бы это работало, то надо было бы расставлять мьютексы: hb_mutexLock( mutex1 ) dbgoto( nRec ) field->MYFIELD := ... hb_mutexUnLock( mutex1 ) чтобы между dbgoto() и изменением записи другой поток не передвинул указатель записи в другое место. Так что вряд ли это получится быстрее, чем в одном потоке.
|
|
|
|
| постоянный участник
|
Пост N: 7378
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.05.23 16:46. Заголовок: Спасибо, понял ! :s..
Спасибо, понял ! А если открывать базу тогда в многопользовательском режиме ? Или вообще заново открывать базу в этом потоке, а потом закрывать. Будет тогда работать ? Мне не быстрота нужна, а независимость потока для записи в базу. Т.е. что то сделали в потоке и записали в базу. А в это время юзер может передвигаться по базе в основном потоке.
|
|
|
|
| moderator
|
Пост N: 1497
Зарегистрирован: 06.07.06
|
|
Отправлено: 18.05.23 19:52. Заголовок: Да, базу надо открыв..
Да, базу надо открывать в потоке в shared режиме, будет работать.
|
|
|
|
| постоянный участник
|
Пост N: 1640
Зарегистрирован: 27.01.07
|
|
Отправлено: 18.05.23 20:28. Заголовок: Andrey пишет: что т..
Andrey пишет: цитата: | что то сделали в потоке и записали в базу. А в это время юзер может передвигаться по базе в основном потоке |
| Нужно как-то отслеживать изменения. Иначе юзер может их и не увидеть.
|
|
|
|
| постоянный участник
|
Пост N: 7379
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.05.23 20:58. Заголовок: PSP пишет: Нужно ка..
PSP пишет: цитата: | Нужно как-то отслеживать изменения. Иначе юзер может их и не увидеть. |
| Ну можно сделать Public nPubUpdateBase := 0 и из потока присваивать 1 при нужных условиях. А в главном потоке следить за этой переменной и делать Refresh базы если nPubUpdateBase == 1 Только как это реализовывать я не знаю ... Нужно как то блокировать переменную M->nPubUpdateBase ?
|
|
|
|
| |
Пост N: 1934
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.05.23 08:10. Заголовок: Andrey пишет: Ну мо..
Andrey пишет: цитата: | Ну можно сделать Public nPubUpdateBase := 0 и из потока присваивать 1 при нужных условиях. |
| Поток используется чтобы не прерывать работу в основном процессе. Базы открываются в каждом потоке в режиме совместного доступа и логика точно такая же как и при работе с базой нескольких пользователей. Естественно в рамках работы в одной программе у нас есть вся информация о действиях "второго" пользователя и можно организовать хитрые рефреши если изменились записи из активного окна бровса, но на практике не заморачиваемся и все как при работе многопользовательской среде.. Если открывать базу в монопольном режиме, то eе нужно перемещать в zero space и забирать оттуда потоком при необходимости ( не забывая возвращать ) . Пока не забрали - алиас в потоке не увидим. У Александра все очень доступно написано о принципах работы с базой в многопоточке, никакие примеры не нужны. При монопольном доступе: Открыл базу и сразу в переместил в зеро. #xcommand UNLOCK WORKAREA [] => hb_dbDetach( ) #xcommand LOCK WORKAREA => hb_dbRequest( , .T.,, .T. ) При необходимости забрал из зеро, поработал и вернул. Вот и вся хитрость. При многопользовательском: Все тоже как будто работает ещё другой пользователь. Можно в разных потоках открывать с одним и тем же алиасом, все равно он будет локальный и виден только в потоке ( как и все прочие установки RDD ) Ранее в xharbour потоком наследовались не только паблик переменные но и рабочие области, это приводило к тому, что приходилось вешать мютексы и запоминать установки RDD в рабочей области для их корректного восстановления. Позже и считаю правильным, наследование рабочей области убрали.
|
|
|
|
| постоянный участник
|
Пост N: 7386
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.05.23 21:32. Заголовок: В МиниГуи есть глоба..
В МиниГуи есть глобальные переменные: App.Cargo := oHmgData() (App.Cargo):nTimerSec := 5 (App.Cargo):aClose := {} (App.Cargo):cFileDbf := GetStartUpFolder() + "\test.dbf" (App.Cargo):cAlias := "MyTest" И ещё можно делать на окно контейнер с нужными переменными: DEFINE WINDOW wMain ; ..... This.Cargo := oHmgData() // for the window we create an object without variables (conditionally empty) This.Cargo:lRefresh := .F. nRecno := (cAls)->Lastrec() This.Cargo:oBrw := oBrw // положить объект TBROWSE на форму This.Cargo:aBrw := ARRAY(nRecno) AFILL( This.Cargo:aBrw, 0 ) Если я запускаю поток: hb_threadDetach( hb_threadStart( HB_THREAD_INHERIT_MEMVARS, @RunExternal(), aFile, oWnd ) ) То эти переменные доступны в потоке. Вопрос такой, если нужно записать в потоке допустим в oWnd:Cargo:aBrw[25] := hPid или This.Cargo:lRefresh := .T. или AADD( (App.Cargo):aClose , {хендл окна, hPid, } ) НУЖНО ли делать блокировку этих переменных ? Или лучше использовать обычные PUBLIC переменные ? Или делать через класс TThrData (доступ в потоках к переменным идет с блокировками) из МиниГуи ?
|
|
|
|
| постоянный участник
|
Пост N: 4280
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.05.23 06:55. Заголовок: Andrey пишет НУЖНО л..
Andrey пишет цитата: | НУЖНО ли делать блокировку этих переменных ? |
| Делай так (только используй h_objects.prg, в нем THmgData и TThrData max совмещены) FUNCTION oThrData() RETURN TThrData():New() тогда App.Cargo := oThrData() (App.Cargo):nTimerSec := 5 (App.Cargo):aClose := {} (App.Cargo):cFileDbf := GetStartUpFolder() + "\test.dbf" (App.Cargo):cAlias := "MyTest" ... DEFINE WINDOW wMain ; ..... This.Cargo := oThrData() // for the window we create an object without variables (conditionally empty) This.Cargo:lRefresh := .F. nRecno := (cAls)->Lastrec() This.Cargo:oBrw := oBrw // положить объект TBROWSE на форму This.Cargo:aBrw := ARRAY(nRecno) AFILL( This.Cargo:aBrw, 0 ) тогда и к этим переменным App.Cargo, This.Cargo доступ будет с блокировками в потоках, не путать с oBrw := This.Cargo:oBrw, тут обычный доступ. Можно делать свою переменную для потоков PUBLIC oThread := oThrData() и работать в потоках через нее. Управлять окнами, тсб можно через сообщения окну (по уст. событиям)
|
|
|
|
| moderator
|
Пост N: 1509
Зарегистрирован: 06.07.06
|
|
Отправлено: 02.06.23 14:58. Заголовок: Обновил Harbour для ..
|
|
|
Ответов - 157
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|