Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1
Зарегистрирован: 25.12.07
|
|
Отправлено: 25.12.07 17:41. Заголовок: C чего начать? Есть ли С-API? И т. д.
Здравствуйте. Хотелось бы услышать советы и рекомендации, во-первых, "откуда качать, что ставить и т.п.". И второе, это информация по С-API. Объясню свою ситуацию. Я не клипперист (дельфист), однако, получилось, что плотно познакомился с Clipper и Alaska Xbase++. Для Alaska Xbase написал дельфи-оболочку над С-API и полностью портировал FastReport (генератор отчетов) для этого языка, продукт продается и т.д (см. http://www.hotsoft.ru/ALASKA/frax_eng.htm). Но вот стал получать много писем из Испании Призывают тоже самое сделать для Harbour/xHarbour/FiveWin и т. д.. Так как ничего до этого про Harbour не знал (слышал краем уха только), то хочется и услышать советы по поводу "с чего начать, на что обратить внимание", да и вообще советы по поводу "а стоит ли заморачиваться, есть ли здесь рынок и т.д." Спасибо. Спирин Сергей.
|
|
|
Ответов - 201
, стр:
1
2
3
4
5
6
7
8
9
10
11
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 54
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 12:56. Заголовок: Pasha пишет: Харбор..
Pasha пишет: цитата: | Харбор (оба) содержит терминал gtwvt/gtwvg, который включает в себя основные контролы windows в качестве надстройки над текстовым режимом. Если использовать его, то можно сделать демку и без минигуи, используя базовую поставку. Демо графических примитивов gtwvt xharbour\contrib\wvtgui\samples harbour\contrib\hbgtwvg\tests Мне кажется, этих средств будет вполне достаточно для рисования главного окошка демки |
| Что-то у себя в харборе нашел gtwvt.lib, но не нашел никаких примеров использования.
|
|
|
|
| постоянный участник
|
Пост N: 363
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 13:37. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Что-то не пойму, чем INLINE лучше? Код прямо в объявлении класса? Это быстрее работает? |
| Да - это работает быстрее К тому же, если помните, я на примере fnDBStruct() показал Вам как нужно писать быстрый код, поверьте на слово - разница в скорости довольно ощутимая. цитата: | Точное сравнение поставлю "==", но тоже хочется узнать, чем оно лучше? |
| "=" может использоваться и как оператор сравнения и как оператор присваивания, в зависимости от контекста применения. В связи с чем иногда делаются ненужные ошибки. цитата: | Здесь есть нюансы. Нюансы с многопоточностью. Например по аляске. Сейчас FRAX не полностью ее поддерживает. Но есть обходной путь, которым некоторые алясковцы пользуются. Накопировать несколько dll-ей. И создать несколько объектов "от" разных dll. |
| Сейчас не только FRAX ее не поддерживает, но и [х]Harbour - поэтому не надо усложнять себе жизнь. Но это на Ваше усмотрение.
|
|
|
|
| постоянный участник
|
Пост N: 55
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 14:16. Заголовок: Петр пишет: Что-то ..
Петр пишет: цитата: | Что-то не пойму, чем INLINE лучше? Код прямо в объявлении класса? Это быстрее работает? Да - это работает быстрее |
| Ok. Буду знать и использовать. Петр пишет: цитата: | К тому же, если помните, я на примере fnDBStruct() показал Вам как нужно писать быстрый код, поверьте на слово - разница в скорости довольно ощутимая. |
| Ok. Там для меня несколько непонятный синтаксис, а fnDBStruct() не критичная по скорости функция, но тем не менее, хорошо, давайте, Вы будете присылать оптимизированные куски, а я их буду менять. Методы все короткие, не так много и оптимизировать. Если можно, fnDBStruct() продублируйте на "мыло". Петр пишет: цитата: | "=" может использоваться и как оператор сравнения и как оператор присваивания, в зависимости от контекста применения. В связи с чем иногда делаются ненужные ошибки. |
| Ok. Правило принимаю, при сравнениях буду писать ==. Петр пишет: цитата: | Сейчас не только FRAX ее не поддерживает, но и [х]Harbour - поэтому не надо усложнять себе жизнь. Но это на Ваше усмотрение. |
| Да? [х]Harbour не поддерживает многопоточность? Хорошо, тогда действительно можно CLASSVAR. Спирин Сергей.
|
|
|
|
| модератор
|
Пост N: 689
Зарегистрирован: 25.05.05
|
|
Отправлено: 15.01.08 14:57. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | [х]Harbour не поддерживает многопоточность? |
| Что касается Харбора, то поддержка многопоточности планируется после выпуска версии 1.0. Что касается хHarbour, то поддержка многопоточности в нем теоретически есть, но периодически пишут на его форуме, что практически она не работает
|
|
|
|
| постоянный участник
|
Пост N: 338
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.01.08 15:08. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Точное сравнение поставлю "==", но тоже хочется узнать, чем оно лучше? |
| Для числовых данных точное сравнение и просто сравнение - это одно и тоже. Различие имеет место, когда сравниваются текстовые данные. В этом случае алгоритм сравнения разный. Как было выше сказано, можно, якобы, перепутать сравнение и оператор присваивания. Но в Clipper (не знаю, как в [x]Harbour) оператор присваивания не может использоваться в выражениях. Там может использоваться только строчный оператор присваивания :=, то есть когда перед знаком равенства ставится двоеточие. Привычка заменять знак = на два знака == восходит к языку C/C++, где сравнение всегда указывается в виде ==. В этом языке действительно можно по ошибке заменить == на = и получить совершенно другой результат. Например while ( x = 1 ) { x = 2; } вместо while ( x == 1 ){ x = 2; } В первом случае цикл while будет выполняться бесконечно, так как в условии while x каждый раз будет получать значение, равное 1. В Clipper такую ошибку допустить нельзя, так как в конструкции DO WHILE ( x = 1 ) оператор = всегда рассматривается, как оператор сравнения. Тем не менее так как Clipper и [x]Harbour, фактически написаны на C, то все по привычке пишут для оператора сравнения два знака равенства ==. Хотя надо осознанно к этому подходить для строковых данных, как я заметил выше.
|
|
|
|
| постоянный участник
|
Пост N: 364
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 16:33. Заголовок: Григорьев Владимир п..
Григорьев Владимир пишет: цитата: | Как было выше сказано, можно, якобы, перепутать сравнение и оператор присваивания. |
| Когда приблизительно месяца два назад на форуме разработчиков обсуждали так называемую "дорожную карту" Harbour 2.x , то помимо всего того, что может привести в ужас добропорядочного клиппериста, предлагалось добавить ключ компилятора, при использовании которого = ставится фактически вне закона: для присваивания использовать исключительно :=, для сравнения ==.
|
|
|
|
| постоянный участник
|
Пост N: 56
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 16:44. Заголовок: Все-таки хотелось бы..
Все-таки хотелось бы определиться с демо, и с целесообразностью его типов. -Делать ли консольную версию? -Можно ли "извернуться" и сделать "полу-псевдо.."-windows приложение, которое будет компилироваться в обоих "голых" харбурах? Спирин Сергей.
|
|
|
|
| постоянный участник
|
Пост N: 57
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 16:50. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | METHOD SetTitle(cTitle) class frReportManager RETURN Call_Func_C_I(::_SetTitle, cTitle) = 1 лучше обьявлять как METHOD SetTitle INLINE ( Call_Func_C_I(::_SetTitle, cTitle) == 1 ) |
| Что-то не пойму, а как сюда передать cTitle?
|
|
|
|
| модератор
|
Пост N: 690
Зарегистрирован: 25.05.05
|
|
Отправлено: 15.01.08 17:02. Заголовок: Петр пишет: лучше о..
Петр пишет: цитата: | лучше обьявлять как METHOD SetTitle INLINE ( Call_Func_C_I(::_SetTitle, cTitle) == 1 ) |
| Опечатка Имелось ввиду, конечно: METHOD SetTitle( cTitle) INLINE ( Call_Func_C_I(::_SetTitle, cTitle) == 1 )
|
|
|
|
| постоянный участник
|
Пост N: 365
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 17:07. Заголовок: Сергей, это зависит ..
Сергей, это зависит от Вас и от маркетинговой политики выбранной опять же Вами. Консольную версию обязательно. А остальное, как мне видится, весьма желательно, т.е. пример для FiveWin, Visual xHarbour, HWGUI, MiniGUI, gtwvt&co. Затраты небольшие, а Вам только +. Поскольку кому и примера не нужно, а кто без примера и шагу ступить не может. К тому же не спрос рождает предложение, а предложение спрос.
|
|
|
|
| постоянный участник
|
Пост N: 366
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 17:08. Заголовок: gfilatov пишет: Опе..
|
|
|
|
|
| модератор
|
Пост N: 691
Зарегистрирован: 25.05.05
|
|
Отправлено: 15.01.08 17:11. Заголовок: gfilatov пишет: Дел..
gfilatov пишет: цитата: | Делать ли консольную версию? |
| Да. Sergey Spirin пишет: цитата: | Можно ли "извернуться" и сделать "полу-псевдо.."-windows приложение |
| Возможно, поскольку библиотека GTWVT входит в стандартную поставку обоих Харборов Но рекомендую также рассмотреть вопрос включения исходников полноценного Win-приложения, основанного на MiniGUI и аналогичного по функциональности демке для Alaska XBase++, ссылку на которую Вы дали в начале топика
|
|
|
|
| постоянный участник
|
Пост N: 339
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.01.08 17:24. Заголовок: Петр пишет: ключ ко..
Петр пишет: цитата: | ключ компилятора, при использовании которого = ставится фактически вне закона: для присваивания использовать исключительно :=, для сравнения ==. |
| Но на самом деле это некорректно! Так как вы тем самым перечеркиваете установку SET EXACT ON|OFF. Если вы всегда будете заменять = на ==, то эта установка будет бессмысленна, а многие программы, которые по незнанию, или случайно будут откомпиллированы с этим ключом перестанут работать! Другое дело, что я согласен с тем, что лучше простой оператор присваивания = заменять на строчный оператор присваивания :=, что я сам лично всегда так и делаю. Но вот со знаком сравнения = этого делать нельзя. То есть следует различать знаки сравнения = и ==. Они имеют разную семантику и не являются взаимозаменяемыми.
|
|
|
|
| постоянный участник
|
Пост N: 58
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 17:27. Заголовок: Кстати, забавно, в х..
Кстати, забавно, в хелпе Аляски про INLINE- It is generally recommended to always separate the method declaration from its implementation. Мне тоже вот как-то психологически "перечит".... gfilatov пишет: цитата: | Делать ли консольную версию? Да. |
| gfilatov пишет: цитата: | Возможно, поскольку библиотека GTWVT входит в стандартную поставку обоих Харборов Но рекомендую также рассмотреть вопрос включения исходников полноценного Win-приложения, основанного на MiniGUI |
| Ок. Давайте определяться кто что делает. Мне демы писать сильно не хочется, я не клипперист, у меня просто получится хуже. Для дем же уже все есть, коды вызовов можно копировать из алясочного, должно в большинстве своем работать и т.д. Если неудобно на форуме, то давайте мылом.
|
|
|
|
| Администратор
|
Пост N: 707
Зарегистрирован: 23.05.05
|
|
Отправлено: 15.01.08 17:37. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Что-то у себя в харборе нашел gtwvt.lib, но не нашел никаких примеров использования. |
| Все эти примеры используют функции/классы из библиотеки wvtgui для xHarbour и ее аналога в Harbour - hbgtwvg.lib. Это собственно надстройка над терминалом gtwvt. Эти библиотеки с примерами находятся в разделе contrib - его надо дополнительно выкачать цитата: | Можно ли "извернуться" и сделать "полу-псевдо.."-windows приложение, которое будет компилироваться в обоих "голых" харбурах? |
| С помощью этой библиотеки можно получить полноценное gui-окно - с меню, кнопками, тулбаром, btnbmp, radiobutton - чего душе угодно Для демо думаю будет вполне достаточно
|
|
|
|
| постоянный участник
|
Пост N: 367
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 18:15. Заголовок: Григорьев Владимир п..
Григорьев Владимир пишет: цитата: | Но на самом деле это некорректно! Так как вы тем самым перечеркиваете установку SET EXACT ON|OFF. Если вы всегда будете заменять = на ==, то эта установка будет бессмысленна, а многие программы, которые по незнанию, или случайно будут откомпиллированы с этим ключом перестанут работать! Другое дело, что я согласен с тем, что лучше простой оператор присваивания = заменять на строчный оператор присваивания :=, что я сам лично всегда так и делаю. Но вот со знаком сравнения = этого делать нельзя. То есть следует различать знаки сравнения = и ==. Они имеют разную семантику и не являются взаимозаменяемыми. |
| Я думаю, что это обращение относится не ко мне Этот ключ не будет включен по умолчанию. И опасений, подобных высказанным Вами было также достаточно. К соглашению не пришли и решили вернуться к вопросу попозже. Если я найду в архиве высказанные предложения - я их опубликую здесь. Лично я использую только := для присваивания, == для сравнения числовых данных ( вот почему и написал на автомате Call_Func_C_I(::_SetTitle, cTitle) == 1 ), = и == для работы со строками.
|
|
|
|
| постоянный участник
|
Пост N: 368
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 18:26. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | Кстати, забавно, в хелпе Аляски про INLINE- It is generally recommended to always separate the method declaration from its implementation. Мне тоже вот как-то психологически "перечит".... |
| Личные симпатии-антипатии не в счет Мне вот это тоже не нравится HB_FUNC( FRLOAD ) { hb_retnl((long)(HMODULE)LoadLibrary(hb_parc(1))); } HB_FUNC( GETFRPROCADDRESS ) { hb_retnl((long)(FARPROC)GetProcAddress((HMODULE)hb_parnl(1) , hb_parc(2))); } HB_FUNC( FRUNLOAD ) { FreeLibrary((HMODULE)hb_parnl(1)); } но ведь работает ! цитата: | Ок. Давайте определяться кто что делает. Для дем же уже все есть, коды вызовов можно копировать из алясочного, должно в большинстве своем работать и т.д. Если неудобно на форуме, то давайте мылом. |
| Это в смысле портировать алясочный пример ? И что должно быть неудобно на форуме ?
|
|
|
|
| постоянный участник
|
Пост N: 59
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 18:38. Заголовок: Петр пишет: Мне вот..
Петр пишет: цитата: | Мне вот это тоже не нравится HB_FUNC( FRLOAD ) { hb_retnl((long)(HMODULE)LoadLibrary ................... |
| А что, кстати, не нравится? HMODULE/FARPROC появились по "требованию Microsoft" А к long приводить надо, чтоб в Харбур-переменной хранить... Петр пишет: цитата: | Это в смысле портировать алясочный пример ? И что должно быть неудобно на форуме ? |
| Форум больше для общение и обмена... Мне бы хотелось организовать более рабочий процесс
|
|
|
|
| постоянный участник
|
Пост N: 369
Зарегистрирован: 09.10.06
|
|
Отправлено: 15.01.08 18:43. Заголовок: Sergey Spirin пишет:..
Sergey Spirin пишет: цитата: | А к long приводить надо, чтоб в Харбур-переменной хранить... |
| В Харбур-переменной с одинаковым успехом можна и указатели хранить..
|
|
|
|
| постоянный участник
|
Пост N: 60
Зарегистрирован: 25.12.07
|
|
Отправлено: 15.01.08 18:49. Заголовок: Петр пишет: В Харбу..
Петр пишет: цитата: | В Харбур-переменной с одинаковым успехом можна и указатели хранить.. |
| Да пробовал я hb_retptr в первую очередь, но уже не помню что, не срослось....В обратной "отдаче" что ли... не помню уже.
|
|
|
Ответов - 201
, стр:
1
2
3
4
5
6
7
8
9
10
11
All
[только новые]
|
|