Автор | Сообщение |
|
| |
Пост N: 16
Зарегистрирован: 04.09.08
|
|
Отправлено: 22.10.08 11:09. Заголовок: Ряд вопросов по языку
1. есть ли документация по Harbour на русском языки или на анлийском но полностью))) 2. есть ли в языке "сырые" строки. то есть форматирование вида "а[%d, %d]=%d" % {i, j, x} ? 3. как пользоваться оператором $ применительно к различным типам данных, не только строкам. 4. насколько развито ооп? есть ли наследование и т.д. 5. можно ли переопределять операторы? 6. какие существую функции для работы с Hash-ами? 7. вопрос по миниджиюай. есть ли менеджер размещения? то есть класс, который облегчает размещение виджетов(компонент) на форме?
|
|
|
Ответов - 45
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 555
Зарегистрирован: 09.10.06
|
|
Отправлено: 22.10.08 11:51. Заголовок: 1) нет. 2) функции ..
1) нет. 2) функции Sql_sprintf, StrFormat ( contrib\hbmisc.lib) 3) см. п.5 4) достаточно развито , есть в т.ч. и множественное, конструкторы, деструкторы в наличии; 5) перегрузка операторов возможна 6) много разных EXTERNAL HB_HASH EXTERNAL HB_HHASKEY EXTERNAL HB_HPOS EXTERNAL HB_HGET EXTERNAL HB_HSET EXTERNAL HB_HDEL EXTERNAL HB_HKEYAT EXTERNAL HB_HVALUEAT EXTERNAL HB_HPAIRAT EXTERNAL HB_HDELAT EXTERNAL HB_HKEYS EXTERNAL HB_HVALUES EXTERNAL HB_HFILL EXTERNAL HB_HCLONE EXTERNAL HB_HCOPY EXTERNAL HB_HMERGE EXTERNAL HB_HEVAL EXTERNAL HB_HSCAN EXTERNAL HB_HCASEMATCH EXTERNAL HB_HAUTOADD EXTERNAL HB_HALLOCATE EXTERNAL HB_HDEFAULT EXTERNAL HB_HSETAUTOADD EXTERNAL HB_HSETCASEMATCH 7) MiniGUI не обьектная библиотека и такого класса конечно же нет, но в поставке есть пример как размещать пользовательские контролы на форме.
|
|
|
|
| |
Пост N: 17
Зарегистрирован: 04.09.08
|
|
Отправлено: 22.10.08 12:15. Заголовок: 1. очень плохо. что ..
1. очень плохо. что читать, кроме примеров? 3. как использовать $ с числами, не перегружая? 5. как выглядит перегрузка операторов? можно примеры?
|
|
|
|
| постоянный участник
|
Пост N: 556
Зарегистрирован: 09.10.06
|
|
Отправлено: 22.10.08 12:29. Заголовок: 1. Справочники по Cl..
1. Справочники по Clipper, xHarbour и самое главное исходники Harbour. 3. $ это так критично ? Чем AScan( {1, 2, 4}, 2 ) не устраивает? 5. Примерно так #include "hbclass.ch" create class tString VAR cValue METHOD New(cText) INLINE ::cValue := cText, self OPERATOR "=" ARG cArg INLINE ::cValue = cArg OPERATOR "==" ARG cArg INLINE ::cValue == cArg OPERATOR "!=" ARG cArg INLINE ::cValue != cArg OPERATOR "<" ARG cArg INLINE ::cValue < cArg OPERATOR "<=" ARG cArg INLINE ::cValue <= cArg OPERATOR ">" ARG cArg INLINE ::cValue > cArg OPERATOR ">=" ARG cArg INLINE ::cValue >= cArg OPERATOR "+" ARG cArg INLINE ::cValue + cArg OPERATOR "-" ARG cArg INLINE ::cValue - cArg OPERATOR "$" ARG cArg INLINE ::cValue $ cArg OPERATOR "[]" ARG nIndex INLINE iif( pcount()>2, ; ::cValue := stuff( ::cValue, nIndex, 1, hb_pvalue(3) ), ; substr( ::cValue, nIndex, 1 ) ) endclass
|
|
|
|
| |
Пост N: 18
Зарегистрирован: 04.09.08
|
|
Отправлено: 22.10.08 13:01. Заголовок: 3. тем, что вот така..
3. тем, что вот такая запись 2 $ {1, 2, 3} выглядит лучше, чем такая: empty(AScan( {1, 2, 4}, 2 ) )
|
|
|
|
| модератор
|
Пост N: 885
Зарегистрирован: 25.05.05
|
|
Отправлено: 22.10.08 13:15. Заголовок: Петр пишет: в поста..
Петр пишет: цитата: | в поставке есть пример как размещать пользовательские контролы на форме |
| Он находится в папке minigui\samples\Advanced\ControlPos
|
|
|
|
| постоянный участник
|
Пост N: 559
Зарегистрирован: 09.10.06
|
|
Отправлено: 22.10.08 13:47. Заголовок: Dimka пишет: тем, ч..
Dimka пишет: цитата: | тем, что вот такая запись 2 $ {1, 2, 3} выглядит лучше, чем такая: empty(AScan( {1, 2, 4}, 2 ) ) |
| Очень серьезный аргумент. Если вам нравиться запись в стиле 2 $ {1, 2, 3} или 2 IN {1, 2, 3}, то используйте ее, предварительно перекомпилировав Harbour c C_USR= -DHB_EXTENSION. P.S. Извиняюсь, включив xhb.ch и подключив xhb.lib
|
|
|
|
| |
Пост N: 19
Зарегистрирован: 04.09.08
|
|
Отправлено: 23.10.08 11:22. Заголовок: насмотрелся пример S..
насмотрелся пример Samles\Advanced\Report_Interpreter\ решил заюзать. не нашел нигде описание процедуры Winrepint. ни гугл, ни янденкс, ни справка, ни исходники(:-D) не знают о такой. 1. где взять описание? 2. что из себя представляет текст ReportS.mod из примера? обычный код харбора или нет? 3. что такое [Declare]80/PREV (из *.mod)? 4. можно ли использовать в шаблоне несколько бд? 5. сохранятся ли возможности группировки при использовании массивов? 6. откуда берутся переменные m (m->npag), NLINE (@NLINE, 0 SAY ...) ? слишком много магии. 7. можно ли заюзать подряд 2 winrepint для создания 1 документа? и если можно, то как? или каким-либо другим образом реализовать вызов 1 шаблона из другого.
|
|
|
|
| модератор
|
Пост N: 886
Зарегистрирован: 25.05.05
|
|
Отправлено: 23.10.08 12:05. Заголовок: Dimka пишет: не наш..
Dimka пишет: цитата: | не нашел нигде описание процедуры Winrepint |
| А в папке minigui\Doc файл WinReport.chm не догадался посмотреть?
|
|
|
|
| |
Пост N: 20
Зарегистрирован: 04.09.08
|
|
Отправлено: 23.10.08 15:20. Заголовок: жду ответы на вопрос..
жду ответы на вопросы с номерами 5 и 7. можно ли исполнить код winreporta не из файла, а из строки?
|
|
|
|
| модератор
|
Пост N: 889
Зарегистрирован: 25.05.05
|
|
Отправлено: 23.10.08 15:34. Заголовок: Dimka пишет: можно ..
Dimka пишет: цитата: | можно ли исполнить код winreporta не из файла, а из строки? |
| Нет, только из файла с описанием отчета. Если требуется использовать описание отчета в коде программы, то для этого существует команда DO REPORT. Пример использования: цитата: | DO REPORT; TITLE 'INFORME DE ARTISTAS DE CINE | segundo titulo'; HEADERS {'','','',''} , {'SIMPLE','APELLIDO','DOBLE','INGRESOS'} ; FIELDS {'code','last','BIO','incoming'} ; WIDTHS {10,20,26,14} ; TOTALS {.F.,.F.,.F.,.T.} ; NFORMATS {'','','','@E 99,999,999.99'} ; WORKAREA Test ; LPP 55 ; CPL 77 ; LMARGIN 3 ; TMARGIN 3 ; PAPERSIZE DMPAPER_A4 ; PREVIEW ; SELECT ; MULTIPLE ; GROUPED BY 'first' ; HEADRGRP 'Name' |
|
|
|
|
|
| |
Пост N: 21
Зарегистрирован: 04.09.08
|
|
Отправлено: 23.10.08 15:47. Заголовок: короче задача стоит ..
короче задача стоит следующим образом. надо из нескольких баз и массивов сваять 1 отчет для распечатки с предпросмотром. использование winreporta обуславливается возможностью переноса таблицы при разрыве строки с сохранением заголовка. выравнивание текста и т.д. Winreport мне здесь не поможет? убирается ли вотермарк? если его так можно назвать))))
|
|
|
|
|
| постоянный участник
|
Пост N: 565
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.10.08 16:11. Заголовок: Dimka пишет: короче..
Dimka пишет: цитата: | короче задача стоит следующим образом. |
| Фу ты блин, а я уже думал, что тут экзамен устроили Где вы там водяные знаки увидели, может быть splash ?
|
|
|
|
| |
Пост N: 22
Зарегистрирован: 04.09.08
|
|
Отправлено: 23.10.08 17:36. Заголовок: ну квадратик в право..
ну квадратик в правом нижнем углу.
|
|
|
|
| постоянный участник
|
Пост N: 566
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.10.08 17:50. Заголовок: Вам доступен весь ко..
Вам доступен весь код - правьте как хотите и пользуйтесь
|
|
|
|
| Администратор
|
Пост N: 1013
Зарегистрирован: 23.05.05
|
|
Отправлено: 24.10.08 08:28. Заголовок: Dimka пишет: что во..
Dimka пишет: цитата: | что вот такая запись 2 $ {1, 2, 3} выглядит лучше |
| в xHarbour это реализовано. Предложите перенести поддержку массивов в операции HB_P_INSTRING какому-нибудь Harbour-девелоперу
|
|
|
|
| |
Пост N: 23
Зарегистрирован: 04.09.08
|
|
Отправлено: 24.10.08 09:17. Заголовок: Петр пишет: Вам дос..
Петр пишет: цитата: | Вам доступен весь код - правьте как хотите и пользуйтесь |
| это уже хак. не тру.
|
|
|
|
| постоянный участник
|
Пост N: 569
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.10.08 09:43. Заголовок: Pasha пишет: в xHar..
Pasha пишет: цитата: | в xHarbour это реализовано. |
| В Harbour это реализовано, нужно просто использовать xhb.lib (xhb.ch). Предложение сделать это по умолчанию (кстати, предложенное Пржемеком) не набрало голосов в поддержку, демократия
|
|
|
|
| постоянный участник
|
Пост N: 570
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.10.08 09:48. Заголовок: Dimka пишет: это уж..
Dimka пишет: Это не хак, а Open Source. В знак благодарности, или по доброте душевной, можете усовершенствовать код и предложить его сообществу, например, устраните мерцание в превью
|
|
|
|
| |
Пост N: 24
Зарегистрирован: 04.09.08
|
|
Отправлено: 24.10.08 10:01. Заголовок: так мне кто-нибудь о..
так мне кто-нибудь ответит на этот вопрос? цитата: | надо из нескольких баз и массивов сваять 1 отчет для распечатки с предпросмотром. желание использовать winreport обуславливается возможностью переноса таблицы при разрыве страницы с сохранением заголовка. выравнивание и перенос текста и т.д. Winreport мне может в этом помочь? |
|
|
|
|
|
| |
Пост N: 25
Зарегистрирован: 04.09.08
|
|
Отправлено: 24.10.08 10:26. Заголовок: и как быть, если как..
и как быть, если какая-то часть отчетов общая и ее необходимо использовать повторно? отходить от принципа DRY тоже не тру.
|
|
|
|
| |
Пост N: 26
Зарегистрирован: 04.09.08
|
|
Отправлено: 27.10.08 17:03. Заголовок: решил отказаться от ..
решил отказаться от Winreport ввиду скромных возможностей))) пишу сам генератор отчетов))) есть такой код: цитата: | ... START DOC START PAGE @ 10, 10, 100, 100 draw text "бла бла бла" style DT_LEFT END PAGE END DOC ... |
| в style задаются параметры отображения строки в прямоугольнике. если написать "style DT_CALCRECT", то строка рисоваться не будет, а функция win api, которая вызывается, вернет прямоугольник, в который эта строка должна поместиться. конечно же ничего не возвращается. каковы минмиальные действия, чтобы этого добиться?
|
|
|
|
|
| |
Пост N: 88
Зарегистрирован: 05.06.07
|
|
Отправлено: 28.10.08 06:28. Заголовок: Править библиотеку. ..
|
|
|
|
| |
Пост N: 27
Зарегистрирован: 04.09.08
|
|
Отправлено: 28.10.08 08:27. Заголовок: спасибо. вашу тему ч..
спасибо. вашу тему читал, исправления делал)))
|
|
|
|
| |
Пост N: 89
Зарегистрирован: 05.06.07
|
|
Отправлено: 28.10.08 09:41. Заголовок: И какой результат?..
И какой результат?
|
|
|
|
| |
Пост N: 28
Зарегистрирован: 04.09.08
|
|
Отправлено: 30.10.08 15:03. Заголовок: как определить функц..
как определить функцию с необязательными параметрами?
|
|
|
|
| Администратор
|
Пост N: 1020
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.10.08 17:27. Заголовок: Dimka пишет: как оп..
Dimka пишет: цитата: | как определить функцию с необязательными параметрами? |
| Что имеется в виду ? При вызове функции любой фактический параметр может быть опущен В теле функции при этом надо проверять: if xParN <> nil Если имеется в виду переменное число параметров, то см. tests\varparam.prg
|
|
|
|
| |
Пост N: 29
Зарегистрирован: 04.09.08
|
|
Отправлено: 31.10.08 09:59. Заголовок: примерное такое. fun..
примерное такое. цитата: | function fun(param1, param2, param3=1, param4=2) ... return 1 fun(5, 6) fun(5, 6, 7) |
| tests\varparam.prg у меня нет. harbour\minigui
|
|
|
|
| Администратор
|
Пост N: 1021
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.10.08 11:07. Заголовок: Dimka пишет: tests&..
Dimka пишет: цитата: | tests\varparam.prg у меня нет. harbour\minigui |
| См. каталог [x]Harbour\tests Dimka пишет: цитата: | function fun(param1, param2, param3=1, param4=2) |
| Используй стандартный прием Clipper/Harbour: #include "common.ch" ... function fun(param1, param2, param3, param4) default ; param3 to 1,; param4 to 2
|
|
|
|
| |
Пост N: 30
Зарегистрирован: 04.09.08
|
|
Отправлено: 05.11.08 15:21. Заголовок: можно ли сделать так..
можно ли сделать так чтобы все имена, определяемые внутри функции или метода, были локальными?
|
|
|
|
| |
Пост N: 31
Зарегистрирован: 04.09.08
|
|
Отправлено: 05.11.08 15:25. Заголовок: SADSTAR2 пишет: И к..
SADSTAR2 пишет: не знаю как поиметь результат вызова функции drawtext.
|
|
|
|
| |
Пост N: 32
Зарегистрирован: 04.09.08
|
|
Отправлено: 05.11.08 16:01. Заголовок: как передаются парам..
как передаются параметры в функцию? создаются копии фактических параметров, которые и передаются? если да, то как передать указатель и работать потом с такими параметрами?
|
|
|
|
|
| Администратор
|
Пост N: 1023
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.11.08 16:09. Заголовок: Dimka пишет: как пе..
Dimka пишет: цитата: | как передаются параметры в функцию? создаются копии фактических параметров, которые и передаются? если да, то как передать указатель и работать потом с такими параметрами? |
| Массивы и обьекты классов передаются по ссылке, переменные остальных типов данных - по значению, т.е. создаются копии фактических параметров Чтобы передать параметр по ссылке, надо указать символ @ перед именем фактического параметра: p1 := 0 func1(@p1, @p2) ? p1 // результат - 1 ... function func1(p1, p2) p1 := 1 retu nil
|
|
|
|
| |
Пост N: 33
Зарегистрирован: 04.09.08
|
|
Отправлено: 05.11.08 16:47. Заголовок: а хеши, надо полагат..
а хеши, надо полагать, тоже по ссылке. есть ли в харбор аналог Python-овского метода хешей - get? то есть get(hash, x, default) вернет hash[x], если x - ключ hash, или default, если нет такого ключа.
|
|
|
|
| постоянный участник
|
Пост N: 577
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.11.08 15:06. Заголовок: Dimka пишет: есть л..
Dimka пишет: цитата: | есть ли в харбор аналог Python-овского метода хешей - get? |
| Нет function PyGet( hash, x, default ) return iif( hb_HHasKey(hash, x), hash[x], default )
|
|
|
|
| постоянный участник
|
Пост N: 578
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.11.08 15:26. Заголовок: Dimka пишет: можно ..
Dimka пишет: цитата: | можно ли сделать так чтобы все имена, определяемые внутри функции или метода, были локальными? |
| function test() local a, b, c local xyz .. RTFM
|
|
|
|
| |
Пост N: 34
Зарегистрирован: 04.09.08
|
|
Отправлено: 06.11.08 15:43. Заголовок: Петр пишет: functio..
Петр пишет: цитата: | function PyGet( hash, x, default ) return iif( hb_HHasKey(hash, x), hash[x], default ) |
| Спасибо, я уже написал. Петр пишет: цитата: | function test() local a, b, c local xyz |
| я имел ввиду, без local. то есть все определяемые имена по умолчанию считаются локальными. имхо, так гораздо удобнее и правильнее. Петр пишет: ссылку, пожалуйста.
|
|
|
|
| постоянный участник
|
Пост N: 579
Зарегистрирован: 09.10.06
|
|
Отправлено: 06.11.08 17:30. Заголовок: Dimka пишет: имхо, ..
Dimka пишет: цитата: | имхо, так гораздо удобнее и правильнее |
| Я так не считаю. Явное объявление переменных и использование ключей компиляции позволяют лучше контролировать программу. Не забывайте, что Harbour наследник Clipper, а не какого либо другого языка. Поэтому использует синтаксис и правила Clipper. Поэтому и RTFM Документацию по Clipper, в т.ч. и руссифицированую можете найти на сайте этого форума.
|
|
|
|
| |
Пост N: 35
Зарегистрирован: 04.09.08
|
|
Отправлено: 11.11.08 10:33. Заголовок: а как красиво записа..
а как красиво записать длинную строку (s="Длинная предлинная строка. Длинная предлинная строка. Длинная предлинная строка. Длинная предлинная строка. Длинная предлинная строка. Длинная предлинная строка." ) так чтобы она помещалась на экране редактора. конкатенация - не красиво.
|
|
|
|
| |
Пост N: 36
Зарегистрирован: 04.09.08
|
|
Отправлено: 13.11.08 14:52. Заголовок: ОМГ!!! я тут узнал, ..
ОМГ!!! я тут узнал, что в харборе для работы с dbf нет запросов. есть лишь простейшие операции поиска, фильтрации и никакой релятивисткой алгебры!!!!!!!!! как же вы с ними работаете. я в шоке.
|
|
|
|
| модератор
|
Пост N: 900
Зарегистрирован: 25.05.05
|
|
Отправлено: 13.11.08 15:46. Заголовок: Dimka пишет: в харб..
Dimka пишет: цитата: | в харборе для работы с dbf нет запросов |
| А никто не заставляет работать только с dbf форматом. Вы можете использовать бесплатные MySQL/PosgreSQL/SQLite/FireBird и т.п.
|
|
|
|
| |
Пост N: 37
Зарегистрирован: 04.09.08
|
|
Отправлено: 13.11.08 16:01. Заголовок: заставляет))))..
заставляет))))
|
|
|
|
|
| |
Пост N: 59
Зарегистрирован: 04.12.07
|
|
Отправлено: 13.11.08 17:09. Заголовок: Тогда используй ADS ..
Тогда используй ADS (Advantage Database Server). Сильная штука
|
|
|
|
| |
Пост N: 38
Зарегистрирован: 04.09.08
|
|
Отправлено: 13.11.08 17:36. Заголовок: можно поподробнее пр..
можно поподробнее про это, а так же про LetoDB? это терминальные субд? как там реализуются запросы?
|
|
|
|
| постоянный участник
|
Пост N: 735
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.11.08 15:51. Заголовок: Dimka пишет: а так ..
Dimka пишет: цитата: | а так же про LetoDB? это терминальные субд? как там реализуются запросы? |
| Читай в той ветке ! И что это за новый термин такой: "терминальные субд" ?
|
|
|
|
| |
Пост N: 62
Зарегистрирован: 04.12.07
|
|
Отправлено: 14.11.08 17:31. Заголовок: Про ADS можно почита..
Про ADS можно почитать для начала здесь http://www.hotsoft.ru/ADS/index.htm Документация по работе с Clipper+ADS имеется в NG файле, а также хорошо документированы функции по работе с ADS и в самом Харборе - огромное спасибо Александру Кресину. Это очень мощная DB и поддерживает столько всего, чего в некоторых других и нет. Кроме того, она может работать как со своим стандартом таблиц данных ADT/ADI, так и с DBF/CDX. Эта DB имеет бесплатный комплект библиотек для организации локального подключения к таблицам данных (не клиент-сервер) с использованием её команд и функций, а это означает, что разработчик может создать программу, обкатать (с некоторыми ограничениями) и даже установить клиенту с локальным подключением, а при увеличении объема данных и нагрузки клиент пусть покупает полный клиент-серверный ADS. Перенастраивать программу даже и не прийдётся, если предварительно проверять наличие удалённого или локального AD-сервера. LetoDB - это также творение (как и RDD ADS) Александра Кресина. Я лично ни разу не тестировал, но читаю соответствующую ветку на этом форуме регулярно - это должен быть отличный сервер, многие уже сейчас от него в восторге. Но SQL-запросы, по-моему, он ещё не поддерживает, хотя для тех, кто собрался здесь они не очень-то и нужны.
|
|
|
Ответов - 45
, стр:
1
2
3
All
[только новые]
|
|