On-line: PSP, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник


Пост 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 не знал (слышал краем уха только), то хочется и услышать советы по поводу "с чего начать, на что обратить внимание", да и вообще советы по поводу "а стоит ли заморачиваться, есть ли здесь рынок и т.д."

Спасибо.

Спирин Сергей.


Спасибо: 0 
Профиль
Ответов - 201 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]


модератор




Пост N: 667
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 25.12.07 18:15. Заголовок: C чего начать?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 2
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 25.12.07 18:21. Заголовок: OK. Спасибо. :sm29: ..


OK. Спасибо.

А насчет, есть ли потребность в профессиональном генераторе отчетов? Много ли пользователей, испытывающих такую потребность?


Спирин Сергей.

Спасибо: 0 
Профиль
модератор




Пост N: 668
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 25.12.07 18:35. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
есть ли потребность в профессиональном генераторе отчетов?


Конечно, есть!

Sergey Spirin пишет:

 цитата:
Много ли пользователей, испытывающих такую потребность?


Точно не скажу, каждый отвечает на этот вопрос индивидуально...


Спасибо: 0 
Профиль
постоянный участник


Пост N: 3
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 25.12.07 18:49. Заголовок: Насчет API? Какой ..


Насчет API?

Какой у Харбура ран-тайм? Набор dll? Или возможен полность "независимый" exe (раз компилируется на С)?

В Xbase, например, это набор dll, а API - это функции экспортируемые этими dll.

Спирин Сергей.

Спасибо: 0 
Профиль



Пост N: 90
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 25.12.07 19:14. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
А насчет, есть ли потребность в профессиональном генераторе отчетов?


Я тоже поддерживаю Григория насчет необходимости генератора отчетов !!!

Спасибо: 0 
Профиль
модератор




Пост N: 669
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 25.12.07 19:24. Заголовок: i3t4j6 пишет: возмо..


i3t4j6 пишет:

 цитата:
возможен полность "независимый" exe ?


Да, именно так (это основной режим сборки программы).



Спасибо: 0 
Профиль
постоянный участник


Пост N: 4
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 09:40. Заголовок: gfilatov пишет: Да,..


gfilatov пишет:

 цитата:
Да, именно так (это основной режим сборки программы).



Есть и неосновной режим? Хотя, по Вашей ссылке вижу, что можно "спокойно" использовать С. А значит, во внешнюю dll я могу передать просто указатели на точки входа в функции... Вопрос, все-таки, на какие функции. Есть ли все-таки С-API? Если я не ошибаюсь, то в самом Клиппере С-API был. Меня интересуют наиболее универсальные, например, в Xbase:

_conCallPa() - вызов любой функции
_conGetXXX - возвращает значение любой переменной

и т. д. Подобное было и в Клиппере (для С расширений), что-то должно быть и в Харбуре?

Устанавливать и экпериментировать начну на праздниках, наверное, сейчас же хотелось бы больше информации "для размышления". Поэтому буду признателен за такую информацию и за любые советы.

Кстати, "просто" Харбур - это только консоль?

Спирин Сергей.



Спасибо: 0 
Профиль
модератор




Пост N: 670
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 26.12.07 11:09. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Есть и неосновной режим?


Да, это сборка программы с harbour.dll, при которой экзешник будет небольшого размера (подобно VB), но потребление памяти значительно вырастет.

Sergey Spirin пишет:

 цитата:
Есть ли все-таки С-API?


Конечно, есть. Но это вопрос к сишникам... Паша, поможешь?

Sergey Spirin пишет:

 цитата:
"просто" Харбур - это только консоль?


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

Спасибо: 0 
Профиль
модератор




Пост N: 671
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 26.12.07 11:13. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
буду признателен за ... любые советы


Рекомендую посетить мою страничку, посвященную бесплатной библиотеке MiniGUI для Харбора:
http://hmg.narod.ru

К сожалению, русскоязычных ресурсов, посвященных Харбору, немного...



Спасибо: 0 
Профиль
постоянный участник


Пост N: 5
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 12:03. Заголовок: gfilatov пишет: Для..


gfilatov пишет:

 цитата:
Для создания графического интерфейса потребуется дополнительная GUI-библиотека: таковых есть несколько, как платных, так и бесплатных.



Правильно ли я понимаю, что если мой Fast будет работать с просто Харбур, то он будет работать и с любым расширением Харбура? То есть, все эти расширения используют Харбур как ядро? xHarbour - это только графическое расширение?


 цитата:
Но это вопрос к сишникам... Паша, поможешь?



По API пока вижутолько один ресурс вообще - http://culikr.sites.uol.com.br/funcapi.htm Похоже и непохоже на Xbase одновременно.

Да, помогите пожалуйста. Давайте, может быть, заинтересую Реальным помошникам могу пообещать FastReport for Harbour либо по себястоимости (очень недорого), либо вовсе подарком

Помощь, кстати, не только от сишников нужна будет. Демо надо будет, консольное, например, делать (если под чистый Харбур) и т.д.

Кстати, у тех же испанцев можно мое демо для Xbase полностью скомпилированное скачать:

http://www.canudas.com/xbase/

И убедиться, что FastReport продукт стоящий...некоторого времени

Спасибо.

Спирин Сергей.


Спасибо: 0 
Профиль
Администратор




Пост N: 675
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 12:39. Заголовок: C-API конечно есть, ..


C-API конечно есть, см. include\hbapi.h

Принцип такой: вместо семейства функций клиппер _par*(), _ret*() вводятся
функции hb_par*() и hb_ret*(). причем этот набор функций намного больше, поскольку поддерживается больше типов данных - как самого языка Harbour, так и внутренних типов данных

Кстати, глянь и другие файлы *.h, там содержатся другие прототипы с-функций

По поводу режима сборки. Официальный релиз Harbour содержит как библиотеки *.lib, предназначенные для создания одного exe, так и Harbour.lib, которая ссылается на harbour.dll. harbour.dll собирается из основных библиотек. Но поскольку имеются все сырцы, можно собрать свой вариант harbour.dll, исключив лишнее и добавив те библиотеки, которые необходимы. Так я поступаю
В целом: поскольку проект открытый, любой программист может использовать подходящий ему режим



Спасибо: 0 
Профиль
модератор




Пост N: 672
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 26.12.07 12:46. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
все эти расширения используют Харбур как ядро?


Не совсем так. Посмотрите схему создания экзешника на Харборе, может станет яснее:

PRG -> HARBOUR -> C -> C compiler -> EXE
........................................RES compiler /
Таким образом, Харбор создает исходник на Си, который затем компилируется и линкуется обычным Си-компилятором.
На выходе имеем 32-разрядное приложение: либо консольное, либо GUI, если использована графическая библиотека.

Sergey Spirin пишет:

 цитата:
xHarbour - это только графическое расширение?


Однозначно - нет, это Расширенный Харбор-компилятор, который разрабатывается параллельно Харбору.

Sergey Spirin пишет:

 цитата:
FastReport продукт стоящий


Да, знаем...



Спасибо: 0 
Профиль
постоянный участник


Пост N: 6
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 12:49. Заголовок: Pasha пишет: Принци..


Pasha пишет:

 цитата:
Принцип такой: вместо семейства функций клиппер .....



Ok. Спасибо. А какое "типичное" использование этих функций. И, как думаете, возможен ли описанный мною выше способ использования? То есть, я загружаю dll, передаю в нее все точки входа, и далее вызываю эти фунуции из dll?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 7
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 13:17. Заголовок: gfilatov пишет: Одн..


gfilatov пишет:

 цитата:
Однозначно - нет, это Расширенный Харбор-компилятор, который разрабатывается параллельно Харбору.



Пожалуй, здесь мне надо быть осторожней Скажем так, если Fast будет использовать только 10-15 С-API функций, которые изначально присутствуют в Харбур, то он будет совместим с FiveWin или c Xailer и с другими?

Спирин Сергей.

Спасибо: 0 
Профиль
модератор




Пост N: 673
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 26.12.07 13:41. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
он будет совместим с FiveWin или c Xailer и с другими?


Уточнение: он будет совместим с FiveWin для Harbour
и Xailer для xHarbour (поскольку Xailer ориентирован на использование только компилятора xHarbour, сборка которого (с внесенными изменениями) есть на их сайте).
Но можно сформулировать проще: если FastReport будет представлять из себя обычную сишную DLL, то доступ к такой библиотеке будет возможен из любого Win-приложения, независимо от того, написано оно на Си, [х]Харборе, VB или Дельфи.
Например, мы можем из Харбора работать с бесплатной библиотекой UnRar.Dll, позволяющей разархивировать любые RAR-архивы



Спасибо: 0 
Профиль
Администратор




Пост N: 676
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 13:53. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Правильно ли я понимаю, что если мой Fast будет работать с просто Харбур, то он будет работать и с любым расширением Харбура? То есть, все эти расширения используют Харбур как ядро? xHarbour - это только графическое расширение?



В принципе да. FastRep может создавать свое отдельное окно, и быть независимым от харбор-программы. harbour-api необходим только для передачи параметров и возврата резельтата

Sergey Spirin пишет:

 цитата:
Ok. Спасибо. А какое "типичное" использование этих функций. И, как думаете, возможен ли описанный мною выше способ использования? То есть, я загружаю dll, передаю в нее все точки входа, и далее вызываю эти фунуции из dll?

Спирин Сергей.



Сам генератор отчетов можно оформить в виде отдельной dll (назовем ее fr.dll) в том случае, если одновременно используется harbour.dll. При создании fr.dll необходимо вызывать функции вида HB_par, а это тянет за собой довольно тяжелые библиотеки rtl.lib, vm, lib, common.lib. Все они содержатся в harbour.dll.
Если собирать без dll, то всю виртуальную машину харбора (из vm.lib) прийдется
дублировать в fr.dll, что не есть хорошо

А использовать hb-api совсем несложно

Делается C-функция:

#include "hbapi.h"
...

HB_FUNC( FUNCNAME )
{
// затем надо принять параметры из вызывающей процедуры функциями hb_par*()
// к примеру числовой параметр типа long:
long lPar1 = hb_parnl(1); // 1 - это номер параметра
или числовой параметр типа double:
double dPar1 = hb_parnd(2);
или строка
char *szStr = hb_parc(3);

// затем можно делать что угодно, например вызывать функции из модуля на pas
// и в конце если надо - возврат результата

hb_retnl(lRet);
}

Из харбор-программы вызов этой функции:

FUNCNAME(p1, p2, p3, ...)

Есть возможность работы с массивами харбор, или с другими специфическими типами данных

Спасибо: 0 
Профиль
Администратор




Пост N: 677
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 13:56. Заголовок: gfilatov пишет: Но ..


gfilatov пишет:

 цитата:
Но можно сформулировать проще: если FastReport будет представлять из себя обычную сишную DLL, то доступ к такой библиотеке будет возможен из любого Win-приложения, независимо от того, написано оно на Си, [х]Харборе, VB или Дельфи.



Да, кстати, это мысль
Можно разделить fr на 2 части: маленькая lib будет содержать харбор-функцию написанную на С, созданную через HB_FUNC. предназначенную для взаимодействия с хаобор-программой. А основная часть (fr.dll) может быть уже полностью независима от харбора

Спасибо: 0 
Профиль
Администратор




Пост N: 678
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 14:01. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
"а стоит ли заморачиваться, есть ли здесь рынок и т.д."



У нас это малоизвестный продукт, но в некоторых странах в силу обстоятельств Харбор очень популярен: в основном это Латинская Америка

Спасибо: 0 
Профиль
постоянный участник


Пост N: 8
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 14:06. Заголовок: gfilatov пишет: Уто..


gfilatov пишет:

 цитата:
Уточнение: он будет совместим с FiveWin......



Ok. Здесь понятно.


 цитата:
Но можно сформулировать проще: если FastReport будет представлять из себя обычную сишную DLL, то



А вот здесь, проще не значит правильней FastReport может представлять собой только дельфишную DLL, ну это конечно роли особой не играет. А вот насчет паралели с RAR-ом. Мой "FastReport for Alaska Xbase (FRAX)" и есть одна DLL, испанцы, кстати, и стали сначала приходить с вопросом, а почему под Харбур не работает, вроде все одно и тоже? ... Я, конечно, могу скомпилировать универсальную DLL, но не знаю насколько Вам понравиться открывать dbf-ы через ADO и не иметь в отчетах никакого взаимодействия ни с данными программы, ни с языком и т. д. И это уже не будет "FastReport ДЛЯ КАКОЙ-ТО ЯЗЫК". FRAX - это ДВУХСТОРОННЕЕ взимодействие. Так же я хочу сделать и FastReport for Harbour (если буду делать). Для двухстороннего взаимодействия мне и нужен С-API.

Спирин Сергей.







Спасибо: 0 
Профиль
постоянный участник


Пост N: 9
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 14:32. Заголовок: Pasha пишет: Из хар..


Pasha пишет:

 цитата:
Из харбор-программы вызов этой функции:

FUNCNAME(p1, p2, p3, ...)



Спасибо. Единственное, меня больше интересует "движение в другую сторону" FastReport - это одна Дельфи-dll (для Xbase - FrSyst.dll ). Понятно, что я могу написать в ней любую функцию и эту функцию вызвать из харбур-программы. Пока мне не очевидно (хотя уже одну версию говорил) как сделать наоборот Как мне например из этой dll вызвать .. ну, DbSkip() ?



Спасибо: 0 
Профиль
Администратор




Пост N: 679
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 14:49. Заголовок: dbSkip() может наход..


dbSkip() может находится как в основной exe, так и в harbour.dll. Из основного exe-модуля харбор-программы dbSkip() вызвать имхо невозможно, из harbour.dll - без проблем, если при создании frsyst.dll линковать ее вместе с Harbour.dll
Поскольку для Харбора допустимы оба режима: как с dll, так и без, а большинство пользователей с dll не заморачиваются, будем считать, что напрямую из frsyst вызвать dbSkip нельзя
Значит, надо dbSkip() вызывать из интерфейсной lib, которая будет прилинковываться к харбор-программе независимо от ее режима, и взаимодействовать с frsyst.dll


Спасибо: 0 
Профиль
постоянный участник


Пост N: 332
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 15:01. Заголовок: C-API Harbour hbvm.h..


C-API [x]Harbour hbvm.h

extern HB_EXPORT void hb_vmDo( USHORT uiParams ); /* invoke the virtual machine */
extern HB_EXPORT void hb_vmFunction( USHORT uiParams ); /* executes a function */
extern HB_EXPORT void hb_vmSend( USHORT uiParams ); /* sends a message to an object */
extern HB_EXPORT PHB_ITEM hb_vmEvalBlock( PHB_ITEM pBlockItem ); /* executes passed codeblock with no arguments */
/* executes passed codeblock with variable number of arguments */
extern HB_EXPORT PHB_ITEM hb_vmEvalBlockV( PHB_ITEM pBlockItem, ULONG ulArgCount, ... );
extern HB_EXPORT PHB_ITEM hb_vmEvalBlockOrMacro( PHB_ITEM pItem ); /* executes codeblock or macro pointed by given item */
extern HB_EXPORT void hb_vmDestroyBlockOrMacro( PHB_ITEM pItem ); /* destroy codeblock or macro in given item */

Маленький пример, в [x]Harbour (prg level) определена функция _ONTIMEREVENTS

VOID CALLBACK TTimerProc( HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
if ( ! pSymbolEvents )
pSymbolEvents = hb_dynsymSymbol( hb_dynsymGet( "_ONTIMEREVENTS" ) ); // есть такая функция или нет

if ( pSymbolEvents ) // если есть
{
hb_vmPushSymbol( pSymbolEvents ); //перед выполнением помещаем p-code функции в стек
hb_vmPushNil(); // обязательно
hb_vmPushLong( ( LONG ) hWnd ); //передаем первый параметр числовой в данном случае
hb_vmPushLong( uMsg ); // передаем второй параметр
hb_vmPushLong( idEvent ); // передаем третий
hb_vmPushLong( dwTime ); // передаем 4- параметр
hb_vmDo( 4 ); // виртуальная машина [x]Harbour выполняет код помещенный в стек - что значит 4 обьяснять смысла нет

к результату выполнения можно достучаться
hb_param( -1, HB_IT_LONG)
или проще
hb_parnl( -1 )

}
}


Спасибо: 0 
Профиль
Администратор




Пост N: 680
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 15:02. Заголовок: Кстати, к слову Мне ..


Кстати, к слову
Мне кажется, что сейчас пользователей у Харбора куда больше, чем у Alaska xBase

Спасибо: 0 
Профиль
постоянный участник


Пост N: 333
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 15:06. Заголовок: Pasha пишет: Из осн..


Pasha пишет:

 цитата:
Из основного exe-модуля харбор-программы dbSkip() вызвать имхо невозможно


Довольно спорное утверждение



Спасибо: 0 
Профиль
постоянный участник


Пост N: 10
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 15:07. Заголовок: Pasha пишет: Из осн..


Pasha пишет:

 цитата:
Из основного exe-модуля харбор-программы dbSkip() вызвать имхо невозможно



Здесь не факт, хотя нюансы могут быть. Почему не передать указатель на dbSkip(), а в dll присвоить прототипу... Но действительно, больше интересно:


 цитата:
Значит, надо dbSkip() вызывать из интерфейсной lib, которая будет прилинковываться к харбор-программе независимо от ее режима, и взаимодействовать с frsyst.dll



Отсюда вопрос: Как будет выглядеть функция на С, вызывающая любую харбур-функцию. Типа:

CallAnyHarbourFunc(cFuncName, xListOfParametrs) возврат xValue ?





Спасибо: 0 
Профиль
постоянный участник


Пост N: 334
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 15:13. Заголовок: Pasha пишет: Мне ка..


Pasha пишет:

 цитата:
Мне кажется, что сейчас пользователей у Харбора куда больше, чем у Alaska xBase



Мне тоже, но часть этих пользователей пользуется не коммерческими, а GPL разработками и заставить их что-то купить - это значит оскорбить их религиозные чувства


Спасибо: 0 
Профиль
постоянный участник


Пост N: 11
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 15:19. Заголовок: Петр пишет: Мне тож..


Петр пишет:

 цитата:
Мне тоже, но часть этих пользователей пользуется не коммерческими, а GPL разработками и заставить их что-то купить - это значит оскорбить их религиозные чувства



В переписке с испанцами, я переспрашивал их. Говорят купим

Но честно говоря, я колебался (и сейчас колеблюсь) именно из-за этого...

Спасибо: 0 
Профиль
Администратор




Пост N: 681
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 15:20. Заголовок: Чтобы напрямую испол..


Чтобы напрямую использовать из frsyst harbour vm, надо ее по крайней мере прилинковать
А это значит, что vm будет содержаться и в основном exe, и в frsyst.dll, что не есть хорошо, а наоборот, очень плохо.

А пример вызова харбор-функции Петр дал. Педед вызовом в стек харбора надо затолкать параметры функции. Но может быть стоит вызывать не харбор-функцию, а ее аналог на C, к примеру, средства rdd

Что касается dbSkip, это может выглядеть так:

#include "hbapi.h"
#include "hbapirdd.h"

...
AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer();
long lRecToSkip = ...;
if( pArea )
SELF_SKIP( pArea, lRecToSkip );



Спасибо: 0 
Профиль
Администратор




Пост N: 682
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 15:23. Заголовок: Петр пишет: Pasha п..


Петр пишет:

 цитата:
Pasha пишет:

цитата:
Из основного exe-модуля харбор-программы dbSkip() вызвать имхо невозможно



Довольно спорное утверждение



Я имел в виду вызов из внешней dll (frsyst) функции, находящейся в основном exe-модуле программы
Как это сделать, я не представляю

Спасибо: 0 
Профиль
постоянный участник


Пост N: 12
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 16:03. Заголовок: Pasha пишет: Я имел..


Pasha пишет:

 цитата:
Я имел в виду вызов из внешней dll (frsyst) функции, находящейся в основном exe-модуле программы
Как это сделать, я не представляю



Чисто теоретически это просто. Я не буду "мучится" и писать пример на С (я все-таки дельфист ). Поэтому пример на Паскале, он язык читабельный:

EXE:

type
TCallBack = procedure (P: Pointer); stdcall;

procedure MMsg(P: PChar);
begin
ShowMessage(StrPas(P));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
CallBack: TCallBack;
H: THandle;
begin
H := LoadLibrary('Project2.dll');
@CallBack := GetProcAddress(H, 'CallBack');
CallBack(@MMsg); <----------------------------передаем адрес процедуры MMsg
FreeLibrary(H);
end;

-------------------------
DLL:

type
TMsgProc = procedure (P: PChar);

procedure CallBack(P: Pointer); stdcall; export;
var
MsgProc: TMsgProc;
begin
@MsgProc := P; <-------------------------------------------- присваиваем адрес
MsgProc(PChar('Это dll вызвала процедуру в exe !!!!')); <-------- и вызываем
end;

exports
CallBack name 'CallBack';

--------------------------------------------------------------------

Ну вот, только что проверил в Delphi, все OK. Оттого, что EXE будет С-ишное, это ничего не поменяет.

То есть, в MMsg можно по моей задумке поместить:

CallAnyHarbourFunc(cFuncName, xListOfParametrs) -> xValue ...

Понятно, что не все так просто, параметры и т. д. , но если прототип заработает, то это уже.. неплохо будет....

Спирин Сергей.




Спасибо: 0 
Профиль
постоянный участник


Пост N: 13
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 16:40. Заголовок: Меня все-таки интере..


Меня все-таки интересуют возможные подходы реализации функции:

CallAnyHarbourFunc(cFuncName, xListOfParametrs) -> xValue ...

Возможно, реализация этой функции может быть чисто на Харбуре, плюс какая-то С-оболочка к ней , адрес этой оболочки и будет передаваться в Fast?

Хотя, в Аляске есть просто С-API функция - _conCallPa(). Может что-то подобное есть и Харбуре?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 335
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 16:44. Заголовок: Чем не устраивает то..


Чем не устраивает то, что я написал?

Спасибо: 0 
Профиль
Администратор




Пост N: 683
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 16:45. Заголовок: Такой способ по-види..


Такой способ по-видимому будет работать
В этом случае я советую обратить внимание на то, что из-за трансляции средствами препроцессора (#define) настоящее имя функции может быть другим
Надо внимательно смотреть на описание каждой функции в *.h

Спасибо: 0 
Профиль
постоянный участник


Пост N: 336
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 16:53. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Поэтому пример на Паскале, он язык читабельный:



Да?

Посмотри здесь http://clipper.fastbb.ru/?1-1-0-00000105-000-0-0-1191730075

Это то?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 14
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 17:10. Заголовок: Петр пишет: Чем не ..


Петр пишет:

 цитата:
Чем не устраивает то, что я написал?



Почему не устраивает? Спасибо. Кстати, если можно еще раз "выжимку" про VM. Почему это плохо использовать (по словам Pasha)? И, это будет работать только с harbour.dll? Или в "монолитном" exe тоже?

Простите, я действительно пока здесь новичек.

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 15
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 17:17. Заголовок: Петр пишет: Поэтому..


Петр пишет:

 цитата:
Поэтому пример на Паскале, он язык читабельный:

Да?

Посмотри здесь http://clipper.fastbb.ru/?1-1-0-00000105-000-0-0-1191730075

Это то?



Честно говоря, тоже не понял Вашу ссылку, мне для примера на Паскале быстрее набросать просто, да и проверить...

Но все-равно, спасибо, увидел, что в Харбуре загружать dll намного удобнее чем в той же Аляске


Спасибо: 0 
Профиль
Администратор




Пост N: 684
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 17:21. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Кстати, если можно еще раз "выжимку" про VM. Почему это плохо использовать (по словам Pasha)? И, это будет работать только с harbour.dll? Или в "монолитном" exe тоже?



Плохо иметь две vm. В этом случает одна из них работать не будет
А если vm будет содержаться в харбор-программе (exe), и будет механизм вызова функций vm из сторонней dll, то ничего в этом плохого нет

Спасибо: 0 
Профиль
постоянный участник


Пост N: 16
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 17:31. Заголовок: Pasha пишет: А если..


Pasha пишет:

 цитата:
А если vm будет содержаться в харбор-программе (exe), и будет механизм вызова функций vm из сторонней dll, то ничего в этом плохого нет



OK. Тогда это действительно хороший вариант.

В семействе hb_vmXXX - функций, наверное, есть и для работы с переменными, массивами, объектами? Если так, то пожалуй, это то что мне надо

Спасибо: 0 
Профиль
постоянный участник


Пост N: 337
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 17:43. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Почему это плохо использовать (по словам Pasha)? И, это будет работать только с harbour.dll? Или в "монолитном" exe тоже?



Пример который я привел корректно работает в "монолитном" exe.

Я не знаю, что имел ввиду Pasha, собственно он использует для работы xHarbour,- я Harbour.
Могу лишь добавить, что по планам разработчиков Harbour, функции можно будет вызывать и использовать не только из dll, но и из другого exe файла, также можно будет использовать библиотеки hrb, но это будет в Harbour 2.0.

Я Pascal не очень, понял лишь, что это вызов функции из dll,
и подумал, что Вам будет интересно узнать об использовании dll в Harbour (в xHarbour функции немного иначе называются), .



Спасибо: 0 
Профиль
постоянный участник


Пост N: 338
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 17:55. Заголовок: Pasha пишет: Плохо ..


Pasha пишет:

 цитата:
Плохо иметь две vm. В этом случает одна из них работать не будет


Это в лучшем случае, скорее всего программа просто вылетит с GPF.

Sergey Spirin пишет:

 цитата:
В семействе hb_vmXXX - функций, наверное, есть и для работы с переменными, массивами, объектами? Если так, то пожалуй, это то что мне надо



Это все конечно есть но не только в hb_vm, а и в hb_item*, что которые собственно и являются аналогами _con* в Alaska.




Спасибо: 0 
Профиль
постоянный участник


Пост N: 17
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 18:07. Заголовок: Петр пишет: В семей..


Петр пишет:

 цитата:
В семействе hb_vmXXX - функций, наверное, есть и для работы с переменными, массивами, объектами? Если так, то пожалуй, это то что мне надо


Это все конечно есть но не только в hb_vm, а и в hb_item*, что которые собственно и являются аналогами _con* в Alaska.



Отлично. Спасибо большое. Похоже мои переспективы на праздники проясняются

Спирин Сергей.




Спасибо: 0 
Профиль
Администратор




Пост N: 685
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.07 18:08. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
В семействе hb_vmXXX - функций, наверное, есть и для работы с переменными, массивами, объектами? Если так, то пожалуй, это то что мне надо



Это уже другое семейство функций
Для C харбор-переменная - это структура типа Item
Для них есть свои функции

Для работы с массивами - C функции hb_array*()
Для работы с Private и Public переменными - функции работы через таблицу символов

Но можно без всего этого обойтись, роаботая с подсистемами харбора посредством вызова С-функций (не задействуя vm), а структуры типа item (переменные) использовать только для приема значений параметров. И, насколько я представляю, для генератора отчетов могут быть полезны параметры типа массив


Спасибо: 0 
Профиль
постоянный участник


Пост N: 18
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 26.12.07 18:48. Заголовок: Pasha пишет: Это уж..


Pasha пишет:

 цитата:
Это уже другое семейство функций
Для C харбор-переменная - это структура типа Item....



ОK. Спасибо. Направление понял.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 339
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.12.07 19:56. Заголовок: Несколько советов 1)..


Несколько советов
1) Следует помнить о различиях в C-API Harbour и xHarbour
2) Следует помнить о различиях в C-API xHarbour версии 0.9х, 1.0.0 и 1.1.х
3) Следует помнить о довольно частой смене версии p-code для xHarbour
4) Следует помнить о том, что разработчики Harbour уже обьявили о возможной будущей несовместимости на бинарном уровне с пр.версиями
5) Тестирование желательно проводить с несколькими C-компиляторами, не только bcc
и может что-то еще


Спасибо: 0 
Профиль
постоянный участник


Пост N: 19
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 27.12.07 11:39. Заголовок: Петр пишет: Несколь..


Петр пишет:

 цитата:
Несколько советов



Вариантов много получается Пожалуй, если все пойдет нормально, я сделаю так. Сам ограничусь вариантом Harbour+BCC, и снова подниму тему "не бескорыстных" помошников , которые и будут тестировать и поправлять меня в различных "конфигурациях!.

Спирин Сергей.

Спасибо: 0 
Профиль
модератор




Пост N: 674
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 27.12.07 11:55. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
снова подниму тему "не бескорыстных" помощников



Удачи Вам в конвертации!
Если потребуется помощь в написании GUI демки, аналогичной Вашей FastDemo для xBase++, то я смогу помочь

Спасибо: 0 
Профиль
постоянный участник


Пост N: 20
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 27.12.07 11:59. Заголовок: gfilatov пишет: .....


gfilatov пишет:

 цитата:
...то я смогу помочь



Отлично, буду иметь в виду.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 383
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.12.07 20:04. Заголовок: gfilatov пишет: мы ..


gfilatov пишет:

 цитата:
мы можем из Харбора работать с бесплатной библиотекой UnRar.Dll, позволяющей разархивировать любые RAR-архивы



А пример можно выложить ?

Sergey Spirin пишет:

 цитата:
FastReport продукт стоящий.



Поддерживаю !!!

Спасибо: 0 
Профиль
модератор




Пост N: 675
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 30.12.07 21:00. Заголовок: Andrey пишет: приме..


Andrey пишет:

 цитата:
пример можно выложить ?


Пример использования этой DLL есть в поставке HMG Extended, папка samples\Advanced\UnRar

Спасибо: 0 
Профиль
постоянный участник


Пост N: 21
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 04.01.08 17:31. Заголовок: Здравствуйте. Что ..


Здравствуйте.


Что ж, могу сказать, что пока "процесс портирования" идет даже более гдадко, чем я предполагал, тьфу-тьфу

Но как я уже упоминал, у меня все "крутится" по Харбур + BCC. Кто может проверить "компилируемость и работоспособность" тестовых примеров на других связках, пожалуйста напишите мне в "мыло" - spirin [at] paritetsoft [dot] ru

Я вышлю пример, который хотел бы проверить.

Заранее, спасибо .

Спирин Сергей.



Спасибо: 0 
Профиль
постоянный участник




Пост N: 385
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.08 01:38. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Я вышлю пример, который хотел бы проверить.



Высылай мне на мыло 30195@mail.ru !

Спасибо: 0 
Профиль
Администратор




Пост N: 689
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.08 09:25. Заголовок: Поздравляю с успехом..


Поздравляю с успехом
Я могу проверить для xHarbour для следующих C-компиляторов (кроме, естественно, bcc):
free MS Visual C++ Toolkit 2003
Open Watcom C++
Digital Mars C++
mingw32
Pelles C

Harbour я собирал только для bcc, но можно попробовать собрать и для остальных поддерживаемых компиляторов (некоммерческих под win32)

tpe2 (at) mail.ru

Спасибо: 0 
Профиль
постоянный участник


Пост N: 22
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.01.08 12:57. Заголовок: Списибо всем, предл..


Списибо всем, предложившим помощь.

Уже несколько человек обратило мое внимание на неаккуратность кода загрузки тестовой dll. Абсолютно согласен, "в свое оправдание" могу заметить, что этот код, ну явно временный, набросанный "лишь бы" загрузить эту dll. Просто я сейчас занимаюсь именно Дельфи-стороной, написанием всех классов взаимодействия и т.д. А это тысячи строк, на все пока времени не хватает

А на Харбор-стороне тоже я думаю будет класс (frReportManager), то есть, "теперешнего" кода не будет.

Еще раз всем спасибо

Спирин Сергей.

Спасибо: 0 
Профиль
Администратор




Пост N: 690
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.08 13:54. Заголовок: Связка xHarbour+bcc ..


Связка xHarbour+bcc - ok
Отстальное я посмотрю позже, так как у меня все эти компиляторы дома
Хотел проверить работу xHarbour с harbour.dll, но на $Id: ChangeLog,v 1.5812 2007/12/17 16:48:42 likewolf Exp $ программа не работает: не загружает rdd
Это проблема xHarbour, возможно уже пофиксено, у меня под рукой сейчас нет последних сырцов


Спасибо: 0 
Профиль
Администратор




Пост N: 691
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.08 14:09. Заголовок: Запустил тест в связ..


Запустил тест в связке Harbour+bcc, собранный с harbour-b32.dll
Приложение запустилось, но при нажатии на кнопку Open выдается сообщение

Could not convert variant of type (Null) into type (String)

Спасибо: 0 
Профиль
постоянный участник


Пост N: 23
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.01.08 14:23. Заголовок: Pasha пишет: Запуст..


Pasha пишет:

 цитата:
Запустил тест в связке Harbour+bcc, собранный с harbour-b32.dll
Приложение запустилось, но при нажатии на кнопку...



Ok. Сразу два вопроса:

- С каким "calling convention" экспортирует функции harbour-b32.dll? Если не cdecl, то придется мне здесь параметризировать что-ли...
- Как собственно мне скомпилировать, запустить и проверить с harbour-b32.dll, что для этого надо?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 24
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.01.08 18:11. Заголовок: Pasha пишет: Запуст..


Pasha пишет:

 цитата:
Запустил тест в связке Harbour+bcc, собранный с harbour-b32.dll
Приложение запустилось, но при нажатии на кнопку Open выдается сообщение

Could not convert variant of type (Null) into type (String)



Догадался "дописать" harbour-b32.lib (все-таки delphi-c здесь в идеологии сильно расходятся). У меня, правда, ошибки другие, но в основном ситуация ясна:

Со стеком, слава богу, везде cdecl, здесь "дурного ветвления" не будет.

Но harbour-b32.dll содержит лишь некоторую часть С-API, и система "не понимает" вложенных вызовов одной части из другой.

Получается, что для универсальности я должен использовать только harbour-b32.dll-часть API. Чтож попробуем


Спирин Сергей.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 340
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.01.08 18:51. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Догадался "дописать" harbour-b32.lib (все-таки delphi-c здесь в идеологии сильно расходятся). У меня, правда, ошибки другие




@set HB_INSTALL=C:\harbour
@set HB_BIN_INSTALL=C:\harbour\bin
@set HB_LIB_INSTALL=C:\harbour\lib
@set HB_INC_INSTALL=C:\harbour\include

%HB_BIN_INSTALL%\harbour 2.prg -n -i%HB_INC_INSTALL%
%HB_BIN_INSTALL%\harbour FastRepH.prg -n -i%HB_INC_INSTALL%

bcc32 -c -O2 -d -I%HB_INC_INSTALL% 2.c FastRepH.c %HB_INSTALL%\source\vm\mainwin.c

@echo c0w32.obj + > b32.bc
@echo 2.obj + >> b32.bc
@echo FastRepH.obj + >> b32.bc
@echo mainwin.obj, + >> b32.bc
@echo 3.exe,, + >> b32.bc

@echo %HB_LIB_INSTALL%\harbour-b32.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\debug.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\vm.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\rtl.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\gtwin.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\lang.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\rdd.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\macro.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\pp.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\dbfntx.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\dbfcdx.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\dbffpt.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\hbsix.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\common.lib + >> b32.bc
@echo %HB_LIB_INSTALL%\codepage.lib + >> b32.bc

@echo cw32.lib + >> b32.bc
@echo import32.lib, >> b32.bc

ilink32 -Tpe -Gn @b32.bc

if exist *.c del *.c
if exist *.obj del *.obj
if exist *.bak del *.bak
if exist *.tds del *.tds
if exist *.ilc del *.ilc
if exist *.ild del *.ild
if exist *.ilf del *.ilf
if exist *.ils del *.ils
if exist *.map del *.map

А так?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 25
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.01.08 19:39. Заголовок: Петр пишет: А так? ..


Петр пишет:

 цитата:
А так?



Ничего не изменилось. Ошибки те же. Да и зачем такие "сложности". В общем-то, проблему я решил как уже и говорил - использовать только harbour-b32.lib-С-API подможество. То есть, при компоновке с harbour-b32.dll моя dll будет работать только с ней.

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 341
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.01.08 20:08. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Ничего не изменилось. Ошибки те же. Да и зачем такие "сложности"



Sergey Spirin пишет:

 цитата:
Догадался "дописать" harbour-b32.lib



Куда Вы дописали harbour-b32.lib?

Sergey Spirin пишет:

 цитата:
использовать только harbour-b32.lib-С-API подможество. То есть, при компоновке с harbour-b32.dll моя dll будет работать только с ней.


Если Вас не затруднит, что Вы подразумеваете под "harbour-b32.lib-С-API подможество"?







Спасибо: 0 
Профиль
постоянный участник


Пост N: 26
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.01.08 20:34. Заголовок: Петр пишет: Куда Вы..


Петр пишет:

 цитата:
Куда Вы дописали harbour-b32.lib?



В 2.bat-файл. Эта фраза была Павлу. Я просто действительно не знал как скомпилировать проект с использованием harbour-b32.dll. Но после сам "догадался дописать":

bcc32 -O2 -d........2.c FastRepH.c harbour-b32.lib...

Петр пишет:

 цитата:
Если Вас не затруднит, что Вы подразумеваете под "harbour-b32.lib-С-API подможество"?



Очень просто, это набор функций, который экспортируется harbour-b32.dll. Например, я начал дебажить ошибки и увидел "Access violation" на вызове hb_stackPopReturn. Поиск этой функции в harbour-b32.lib/dll результата не дал. В результате меняю эту функцию на аналогичную hb_xvmRetValuе, но убедившись, что она "присутствует" в harbour-b32.lib. Работает.

То есть, похоже при использование harbour-b32.dll смешанный вызов функций и из harbour-b32.dll и из exe приводит к "чехарде" в стеке. Значит для универсальности мне нужно при harbour-b32.dll использовать только ее. При монолитном exe это все неважно.

Спирин Сергей.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 342
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.01.08 00:57. Заголовок: Сергей, Pasha пишет..


Сергей,

Pasha пишет:

 цитата:
Запустил тест в связке Harbour+bcc, собранный с harbour-b32.dll
Приложение запустилось, но при нажатии на кнопку Open выдается сообщение

Could not convert variant of type (Null) into type (String)



Вы написали:

 цитата:
Догадался "дописать" harbour-b32.lib (все-таки delphi-c здесь в идеологии сильно расходятся). У меня, правда, ошибки другие



Потом я привел скрипт, в результате которого все происходит, как написал выше Паша
"Приложение запустилось, но при нажатии на кнопку Open выдается сообщение
Could not convert variant of type (Null) into type (String)".

Какие были другие ошибки и откуда это сообщение Could not convert variant of type (Null) into type (String), я так понимаю - это работа testlib.dll?

Теперь о подмножествах, разработчикам рекомендуется использовать функции обьявленные как extern HB_EXPORT. Работать со стеком напрямую или использовать функции "для внутреннего употребления" нельзя, т.е. можно, но никто не будет выслушивать претензии после очередного изменения структуры стека, например после ожидаемого введения поддержки "strong type" переменных или MT. Для коммерческого продукта такая ситуация недопустима.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 27
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 06.01.08 01:22. Заголовок: Петр пишет: Какие б..


Петр пишет:

 цитата:
Какие были другие ошибки и откуда это сообщение Could not convert variant of type (Null) into type (String), я так понимаю - это работа testlib.dll?



Ok. Сейчас вышлю новый "рабочий вариант". А ошибка "Could not conver" конечно чисто дельфишная, но у меня действительно были "Access violation" и с моим и с Вашим вариантами bat-ника, что странно, но разберемся

Петр пишет:

 цитата:
Теперь о подмножествах, разработчикам рекомендуется использовать функции обьявленные как extern HB_EXPORT.



Супер! Спасибо, вот это действительно для меня ценная информация. Даже проверил сейчас, описываемый мною предыдущий пример:

extern void hb_stackPopReturn( void );
extern HB_EXPORT void hb_xvmRetValue( void );

То есть, вот он действующий ориентир. Еще раз спасибо :)

Спирин Сергей.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 28
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 06.01.08 16:06. Заголовок: Здравствуйте. Подс..


Здравствуйте.

Подскажите, откуда и как брать "ультрасвежий" Харбор. Оказалось, что уже используется beta4 = 1.0.0, но не могу ее найти. Что такое SVN и т.д.?

И про возможные "непонятки" при компиляции исходников, если они есть.

Спасибо.

Спирин Сергей.

Спасибо: 0 
Профиль
Администратор




Пост N: 692
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.01.08 17:55. Заголовок: xHarbour можно выкач..


xHarbour можно выкачать с помощью CVS-клиента по адресу:

:pserver:anonymous@xharbour.cvs.sourceforge.net:/cvsroot/xharbour

protocol :pserver

user name: anonymous

module: xharbour

Бесплатный клиент под windows: http://www.tortoisecvs.org

Harbour: с помощью SVN-клиента, URL:

https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk

Бесплатный клиент под windows: http://tortoisesvn.net

Для сборки понадобится bison, версии 2.1
Еще пару недель назад я собирал с помощью старенького bison 1.28, но теперь он не поддерживается

Ссылка
http://puzzle.dl.sourceforge.net/sourceforge/gnuwin32/bison-2.1.exe

Еще понадобится файл bison.simple
Его можно взять на www.harbour_project.org или на www.xharbour.org


Спасибо: 0 
Профиль
постоянный участник


Пост N: 29
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 06.01.08 18:00. Заголовок: Pasha пишет: Беспла..


Pasha пишет:

 цитата:
Бесплатный клиент под windows: http://www.tortoisecvs.org



Вроде я уже и сам все это нашел, но вот этот клиент упрямо у меня требует пароля Хотя вроде не должен.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 344
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 06.01.08 20:23. Заголовок: Небольшое уточнение ..


Небольшое уточнение - для Harbour URL:

https://harbour-project.svn.sourceforge.net/svnroot/harbour-project/trunk/harbour

Спасибо: 0 
Профиль
Администратор




Пост N: 693
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.08 11:44. Заголовок: У кого установлен MS..


У кого установлен MS Visual Studio, просьба. Можно бросить в меня nmake.exe из этого пакета ? Адрес есть в этой теме. С dll, если есть такие, которые нужны для его работы
Нужен для сборки xHarbour. У меня есть какой-то nmake 1.5, но это уж больно старая версия. Не понимает синтаксис makefile.vc


Спасибо: 0 
Профиль
постоянный участник


Пост N: 345
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 07.01.08 12:06. Заголовок: От VS2003 подойдет?..


От VS2003 подойдет?

Спасибо: 0 
Профиль
Администратор




Пост N: 694
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.08 14:23. Заголовок: Думаю да Как раз too..


Думаю да
Как раз tooklit 2003-года выпуска

Не распознаюся команды вида:

.c.obj::

То есть подряд 2 даоеточия

Спасибо: 0 
Профиль
Администратор




Пост N: 695
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.08 16:00. Заголовок: Спасибо, получил, ра..


Спасибо, получил, работает
Петр, если можно, пришлите еще lib.exe. Года 3 назад я собирал xHb под MS VC toolkit, но с тех пор так далеко запрятал эти утилиты (nmake, lib), что и сам не найду
SDK у меня есть


Спасибо: 0 
Профиль
Администратор




Пост N: 696
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.08 22:41. Заголовок: xHarbour + ms vc - o..


xHarbour + ms vc - ok

Только у компилятотра msvc более строгий контроль типов, поэтому надо поправить:

HB_FUNC( PRLOAD )
{
FrLib = LoadLibrary("Testlib.dll");
DllF = (DllFunc)GetProcAddress((HMODULE) FrLib , (LPCSTR) "CallBack" );
InitEng = (InitEngFunc)GetProcAddress((HMODULE) FrLib , (LPCSTR) "InitEngine");
}

HB_FUNC( PRUNLOAD )
{
FreeLibrary((HMODULE) FrLib);
}

Иначе выдается ошибка. И для остальных вызовов winapi типы должны строго соотвествовать обьявленным


Спасибо: 0 
Профиль
постоянный участник


Пост N: 30
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 08.01.08 01:05. Заголовок: Pasha пишет: xHarbo..


Pasha пишет:

 цитата:
xHarbour + ms vc - ok

Только у компилятотра msvc более строгий контроль типов, поэтому надо поправить:



Ok. Спасибо. Буду иметь в виду.

Еще вот такая проблемка. Доступ к переменным (memvars) я организовал через hb_memvarGetValue/hb_memvarSetValue, но они как Вы можете убедиться не HB_EXPORT. Что-то, ломаю голову и не могу понять как без них сделать мне функции GetValue/SetValue для переменных?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 386
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.01.08 12:21. Заголовок: Работаю только на xH..


Работаю только на xHarbour'e исключительно из-за совместимости (почти 100%) с Clipper'om !
Использую терминалку gtwin и gtwvt !

Собрал проект hbmake 2.bc -e

При сборке под xHarbour Compiler build 0.99.70 (SimpLex) выдает:
Error E2451 FASTREPH.PRG 92: Undefined symbol 'hb_stackPopReturn' in function HB_FUN_INITENGINE

Что делать ?


Спасибо: 0 
Профиль
постоянный участник


Пост N: 31
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 08.01.08 13:15. Заголовок: Andrey пишет: Error..


Andrey пишет:

 цитата:
Error E2451 FASTREPH.PRG 92: Undefined symbol 'hb_stackPopReturn' in function HB_FUN_INITENGINE

Что делать ?



Несколько странно, так как hb_stackPopReturn объявлена в hbstack.h. Но в любом случае, hb_stackPopReturn я уже "выбросил" так как она не HB_EXPORT. Сейчас вышлю посвежее вариант.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 346
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.01.08 14:37. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Что-то, ломаю голову и не могу понять как без них сделать мне функции GetValue/SetValue для переменных?



Это можно сделать так, как душе угодно :) Разнообразное API не только помогает, но иногда сбивает с толку.
Пример

PROCEDURE main()

PRIVATE mvp := "123"

? mvp
? __mvget( "mvp" )
? my__mvget( "mvp" )
?

? __mvput( "mvp", "456" )
?

? mvp
? __mvget( "mvp" )
? my__mvget( "mvp" )
?

?my__mvput( "mvp", "123" )
?

? mvp
? __mvget( "mvp" )
? my__mvget( "mvp" )
?

RETURN

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbvm.h"
#include "hbstack.h"

static PHB_DYNS pDynsGet = 0;
static PHB_DYNS pDynsPut = 0;

HB_FUNC( MY__MVGET )
{
if ( ! pDynsGet )
pDynsGet = hb_dynsymFindName( "__MVGET" );

if ( pDynsGet && hb_dynsymIsFunction(pDynsGet) )
{
PHB_ITEM itm;

hb_vmPushDynSym( pDynsGet );
hb_vmPushNil();
hb_vmPushString( hb_parc(1), hb_parclen(1) );
hb_vmDo( 1 );

itm = hb_itemClone( hb_param( -1, HB_IT_ANY) );

#ifdef __XHARBOUR__
hb_itemReturn( itm ); hb_itemRelease( itm );
#else
hb_itemReturnRelease( itm );
#endif
}
}

HB_FUNC( MY__MVPUT )
{
PHB_ITEM xNewValue = hb_param( 2, HB_IT_ANY );

if ( ! pDynsPut )
pDynsPut = hb_dynsymFindName( "__MVPUT" );

if ( pDynsPut && hb_dynsymIsFunction(pDynsPut) )
{
PHB_ITEM itm;

hb_vmPushDynSym( pDynsPut );
hb_vmPushNil();
hb_vmPushString( hb_parc(1), hb_parclen(1) );
hb_vmPush( xNewValue );
hb_vmDo( 2 );

itm = hb_itemClone( hb_param( -1, HB_IT_ANY) );

hb_itemReturnRelease( itm );
}
}

#pragma ENDDUMP



Спасибо: 0 
Профиль
постоянный участник




Пост N: 387
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.01.08 20:01. Заголовок: Опять не собирается ..


Опять не собирается под хХарбором

xHarbour Compiler build 0.99.70 (SimpLex)
Copyright 1999-2006, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'FASTREPH.PRG'...
Lines 182, Functions/Procedures 2
Generating C source output to 'obj\FASTREPH.c'...
Done.

Building object module for 'obj\FASTREPH.c'
using C compiler 'BCC32' as defined in 'Z:\xHARBOUR\BIN\harbour.cfg'...
Exec: BCC32 -c -D__EXPORT__ -IZ:\xHARBOUR\include -d -LZ:\xHARBOUR\lib -oobj\FASTREPH.obj obj\FASTREPH.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
obj\FASTREPH.c:
Error E2451 FASTREPH.PRG 62: Undefined symbol 'hb_itemPutSymbol' in function HB_FUN_INITENGINE
*** 1 errors in Compile ***



Спасибо: 0 
Профиль
постоянный участник


Пост N: 32
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 08.01.08 20:18. Заголовок: Andrey пишет: Опять..


Andrey пишет:

 цитата:
Опять не собирается под хХарбором




Вообще, если Вы были внимательны, то уже несколько человек сообщили что под xHarbour все собирается, поэтому думаю, что проблема какая-то у Вас, с путями, lib, и т.п....

'hb_itemPutSymbol' объявлена в hbapiitm.h и она - HB_EXPORT.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 33
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 08.01.08 23:19. Заголовок: Петр пишет: Это мож..


Петр пишет:

 цитата:
Это можно сделать так, как душе угодно :) Разнообразное API не только помогает, но иногда сбивает с толку.
Пример....



А какие еще есть варианты ;-) За вариант, спасибо, если ничего другого не "придумается", то буду использовать. Но, просто, доступ к переменным через выполнения функций prg-уровня, как то не кажется самым оптимальным решением :)

Кстати, заглянул в реализацию __mvget/__mvset и даже улыбнулся увидев: hb_memvarGetValue/hb_memvarSetValue, то есь то, что сейчас менять и приходится.




Спасибо: 0 
Профиль
постоянный участник


Пост N: 349
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 08.01.08 23:40. Заголовок: Сергей, это самое оп..


Сергей, это самое оптимальное и безопасное решение -__MVPUT и __MVGET, публичные функции, описанные в справочной документации, и в этом случае Вам все равно, как они устроены, лишь бы результат правильный возвращали. Все остальные функции тоже из официального API. Да, возможно изящностью такое решение сильно не отличается, да и быстродействием - но Вам этого и не нужно, Вам нужен надежный код который бы работал вне зависимости от смены версий. К тому же легко написать функцию prg-уровня, которая возвращает результат макрокомпиляции и вообще под что угодно.

Я Вам уже писал, что Harbour ожидают серьезные нововведения, в часности поддержка MT, к примеру

* harbour/include/hbstack.h
* harbour/source/vm/estack.c
* harbour/source/vm/hvm.c
+ added support for thread specific data located on HVM stack
Now it's possible to allocate static variables which are
local to thread. Such variables are allocated on HVM stack
and automatically destroyed. To declare new TSD variable use:
HB_TSD_NEW( <name>, <size>, <init>, <destruct> )
<name> - name of variable which holds TSD handler

и все, что из этого следует.

Так что решать Вам. можете хоть с HB_API_INTERNAL экспериментировать и работать напрямую со стеком и таблицей символов без всяких функций.

Не, ну конечно hb_itemClone на hb_itemCopy поменять можно

Спасибо: 0 
Профиль
постоянный участник


Пост N: 34
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 00:11. Заголовок: Петр пишет: Сергей,..


Петр пишет:

 цитата:
Сергей, это самое оптимальное и безопасное решение -__MVPUT и __MVGET...



Ок. Убедили.

Петр пишет:

 цитата:
Так что решать Вам. можете хоть с HB_API_INTERNAL экспериментировать и работать напрямую со стеком и таблицей символов без всяких функций.



Нет-нет. У меня нет особенного желания сделать все на "сверхнизком" уж уровне. Просто я поначалу для FastReport (script) начал делать все по аналогии реализации prg-уровня. :)) А выяснилось, что надо чуть повыше взять, поэтому сейчас в стадии "перестройки мышления".

Спасибо.




Спасибо: 0 
Профиль
постоянный участник




Пост N: 388
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.08 12:24. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Вообще, если Вы были внимательны,



Вы знаете, вообще то я на эти вещи обращаю внимание, и считаю некорректно так обращаться.
Вы попросили помощи в тестировании продукта, что я честно стараюсь делать.

Sergey Spirin пишет:

 цитата:
то уже несколько человек сообщили что под xHarbour все собирается, поэтому думаю, что проблема какая-то у Вас, с путями, lib, и т.п....


Нет с ними никаких проблем, все правильно !!!
У других могут быть отличия, я собираю на дистрибутиве скачаном с сайта, без дополнительных библиотек.
Причина выявлена из вашего нижеперечисленного комментария.

Sergey Spirin пишет:

 цитата:
'hb_itemPutSymbol' объявлена в hbapiitm.h и она - HB_EXPORT.



Оказывается hb_itemPutSymbol не перечислена в hbapiitm.h входящем в xHarbour Compiler build 0.99.70 и xHarbour Compiler build 1.0.0 а в MiniGUI есть !!!

Так что ваши действия по совместимости, господин Спирин !

Спасибо: 0 
Профиль
постоянный участник


Пост N: 35
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 12:39. Заголовок: Andrey пишет: Вы зн..


Andrey пишет:

 цитата:
Вы знаете, вообще то я на эти вещи обращаю внимание, и считаю некорректно так обращаться.



Извините, совсем не хотел Вас как-то задеть. Для меня, наверное, такая сверхмножественная вариативность возможной сборки очень непривычна. Еще раз простите.

Andrey пишет:

 цитата:
Оказывается hb_itemPutSymbol не перечислена в hbapiitm.h входящем в xHarbour Compiler build 0.99.70 и xHarbour Compiler build 1.0.0 а в MiniGUI есть !!!

Так что ваши действия по совместимости, господин Спирин !



Ok. Уже, "выкидываем" hb_itemPutSymbol. Тем более, я посмотрел уже дельфийский код, я ее не использую, по инерции осталась в передаче точки входа.

Через часик, с Вашего разрешения, пришлю посвежее версию.

Спирин Сергей.




Спасибо: 0 
Профиль
постоянный участник


Пост N: 36
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 15:33. Заголовок: Петр пишет: Сергей,..


Петр пишет:

 цитата:
Сергей, это самое оптимальное и безопасное решение -__MVPUT и __MVGET



А нет ли аналогичной универсальной функции, которая вернет макрос от строки?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 351
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.08 16:14. Заголовок: Нет, по крайней мере..


Нет, по крайней мере - я не знаю.
Зато можно создать свою сборку Harbour с запретом вызова макрокомпилятора

Здесь прийдется писать UDF.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 37
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 16:44. Заголовок: Петр пишет: Нет, по..


Петр пишет:

 цитата:
Нет, по крайней мере - я не знаю.



Ситуация у меня сейчас такая. Остались всего три функции, которые я использую и которые не HB_EXPORT. Это:

hb_macroCompile, hb_macroRun, hb_macroDelete

То есть, работа с макросами. При этом эти функции "прекрасно" работают у меня как в монолитном exe, так и с harbour.dll. То есть, проблемы с harbour.dll этих функций не касались.

У меня такое ощущение, что я могу их оставить. Как думаете?

Кстати, написал на уровне следующее:

FUNCTION __MacroCall( cString )
RETURN &(cString)

И стал вызывать как обычно через hb_vmDo.... и в варианте с harbour.dll проблемы появились (!!!). Стала появляться нестабильная ошибка "No exported method EVAL" ???

Опять таки количество употреблений hb_macroCompile, hb_macroRun, hb_macroDelete по кодам высокое.... Хочется мне их оставить, что скажете?












Спасибо: 0 
Профиль
постоянный участник


Пост N: 352
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.08 17:28. Заголовок: Я думаю, что большой..


Я думаю, что большой проблемы не будет
Если подключать RDD, т.е.работать с базами данных - эти функции обязательно используются.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 353
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.08 17:38. Заголовок: Но попробуйте еще за..


Но попробуйте еще заменить вызов vmDo(1) на vmFunction(1) и потестировать.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 38
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 20:16. Заголовок: Что-то не нашел функ..


Что-то не нашел функцию DbRefresh(). Какой аналог используется обычно в Харборе?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 354
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.08 20:38. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
то-то не нашел функцию DbRefresh()



А что она делает?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 39
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 20:47. Заголовок: Петр пишет: А что о..


Петр пишет:

 цитата:
А что она делает?



Сбрасывает локальный клиентский кэш рабочей области и перечитывает его из реальных данных. Например, например, кто-то по сети поменял запись, у другого "висит" старая версия на экране. После DbRefresh() должна "приехать" новая.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 355
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.01.08 20:54. Заголовок: DbSkip(0) flushes an..


DbSkip(0) flushes and refreshes the internal database buffers. All changes made to the record become visible without moving the record pointer in either direction.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 40
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 09.01.08 23:24. Заголовок: Петр пишет: DbSkip(..


Петр пишет:

 цитата:
DbSkip(0) flushes and refreshes...




Ok. Спасибо.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 41
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 10.01.08 12:28. Заголовок: Здравствуйте, Выс..


Здравствуйте,

Выслал окончательный (надеюсь :)) вариант теста.

Но что-то у меня сегодня почта "подглючмвает", поэтому, если кто-то не получил, напишите пожалуйста.

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 42
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 10.01.08 16:42. Заголовок: Здравствуйте, еще ра..


Здравствуйте, еще раз.

Начинаю "прощупывать" реализацию класса менеджера отчетов. Отсюда следующие вопросы.

- Похоже синтаксис классов/объектов у Харбура и Аляски несколько различаются. В связи с этим не подскажите где что посмотреть, какие-то примеры и т.д.

- Есть ли типовые средства загрузки "сторонних" dll в Харборе? Везде, что не найду, речь о "Харбор"-dll-ях. Или сторонние принято грузить с помощью С? В той же Аляске есть DllLoad(), DllCall(). Иди я просто не вижу?

Спирин Сергей.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 356
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.01.08 17:19. Заголовок: Судя по тому, что кн..


Судя по тому, что кнопка Open блокируется - проблемы с memory leak остаются?

Я не буду говорить о том, что синтаксис классов у Harbour и xHarbour различаются, достаточно сказать, что в самом Harbour доступно несколько "стилей" ООП , при этом их вполне можно смешивать.
Как пример для "подражания" я рекомендую посмотреть реализацию класса TXMLNode из библиотеки xhb (harbour\contrib), особенно обратить внимание на взаимодействие с C level.

Типовых средств загрузки "сторонних" dll в Harbour нет - Harbour кросплатформенное средство, а работа с so в Linux отличается от работы с dll Windows или OS\2. Условно - xHarbour больше ориентирован на Win, он включает в себя функции для работы с "сторонними" dll.

Если ищете универсальное решение - я советую обратить внимание на исходники библиотек Dll and CallDll из состава MiniGUI Ex, тут на форуме недавно о них вспоминали..



Спасибо: 0 
Профиль
постоянный участник


Пост N: 43
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 10.01.08 17:57. Заголовок: Петр пишет: Судя по..


Петр пишет:

 цитата:
Судя по тому, что кнопка Open блокируется - проблемы с memory leak остаются?



Нет-нет, это скорее моя лень, а не какая-то проблема Просто "правильно" писать было длиннее. Объекты корректно повторное открытие игнорируют. Просто у меня на кнопке еще "руками" Мастер-Детэйл устанавливается (создается item с блоком кода), это нужно под условие "загонять", кнопку же задизэйблить быстрей :)) Так что, никаких проблем с "memory leak" нет. Эта форма - "вещь" тоже временная, поэтому я пока не "упираюсь".

За рекомендации спасибо, буду вникать.


Спасибо: 0 
Профиль
модератор




Пост N: 682
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 10.01.08 18:09. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Есть ли типовые средства загрузки "сторонних" dll в Харборе?



Следующий код реализует обращение к системной библиотеке uxtheme.dll в коде библиотеки MiniGUI Ext:

static HINSTANCE hUxTheme;

long InitUxTheme( void )
{
if( hUxTheme == NULL )
{
hUxTheme = LoadLibraryEx( "uxtheme.dll", NULL, NULL );
}

return( LONG ) hUxTheme;
}

void EndUxTheme( void )
{
if( !hUxTheme == NULL )
{
FreeLibrary( hUxTheme );
hUxTheme = NULL;
}
}

HB_FUNC( ISTHEMEACTIVE )
{
BOOL bRet = ( BOOL ) FALSE;
if( hUxTheme == NULL )
{
hUxTheme = LoadLibraryEx( "uxtheme.dll", NULL, NULL );
}

if( hUxTheme )
{
fnIsThemeActive pfn = ( fnIsThemeActive ) GetProcAddress( hUxTheme, "IsThemeActive" );
if( pfn )
{
bRet = ( BOOL ) pfn();
}
}

hb_retl( bRet );
}

HB_FUNC( ISAPPTHEMED )
{
BOOL bRet = ( BOOL ) FALSE;
if( hUxTheme == NULL )
{
hUxTheme = LoadLibraryEx( "uxtheme.dll", NULL, NULL );
}

if( hUxTheme )
{
fnIsAppThemed pfn = ( fnIsAppThemed ) GetProcAddress( hUxTheme, "IsAppThemed" );
if( pfn )
{
bRet = ( BOOL ) pfn();
}
}

hb_retl( bRet );
}



Спасибо: 0 
Профиль
постоянный участник


Пост N: 44
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 10.01.08 18:46. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Следующий код реализует обращение к системной



Спасибо. Тo есть, фактически принято загружать на "чистом" С. Ок.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 358
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.01.08 19:02. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Тo есть, фактически принято загружать на "чистом" С. Ок.



И да, и нет
В том же MiniGUI можно найти такие конструкции:

DECLARE DLL_TYPE_LONG DIWriteJpg(DLL_TYPE_LPCSTR DestPath, DLL_TYPE_LONG quality, DLL_TYPE_LONG progressive) ;
IN DIJPG.DLL ALIAS BMPTOJPG

BmpToJpg( path, 100, 1 )

Такие (похожие) конструкции "любят" применять и пользователи FiveWin, What32, xHb.

Вообще то не обязательно знать С, чтобы использовать [x]Harbour.

Но Вам, чтобы не вникать в нюансы реализации, действительно лучше написать загрузку dll на C или Паскале


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 10.01.08 19:31. Заголовок: Петр пишет: Такие (..


Петр пишет:

 цитата:
Такие (похожие) конструкции "любят" применять и пользователи FiveWin


Ага ...

#include "FiveWin.ch"

function Main()

local hItem1 := ItemNew( "Hello world!" )
local hItem2 := ItemNew( "From a Harbour DLL" )

HbDLLEntry2( "TEST", hItem1, hItem2 )

ItemRelease( hItem1 )
ItemRelease( hItem2 )

MsgInfo( "ok from EXE" )

return nil

DLL FUNCTION HBDLLENTRY2( cProc AS LPSTR, pItem1 AS LONG, pItem2 AS LONG ) AS LONG PASCAL LIB "BabuDLL.dll"

#pragma BEGINDUMP

#include <hbapi.h>
#include <hbapiitm.h>

HB_FUNC( ITEMNEW )
{
hb_retnl( ( ULONG ) hb_itemNew( hb_param( 1, HB_IT_ANY ) ) );
}

HB_FUNC( ITEMRELEASE )
{
hb_retl( hb_itemRelease( ( PHB_ITEM ) hb_parnl( 1 ) ) );
}

#pragma ENDDUMP


Спасибо: 0 
Администратор




Пост N: 700
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.01.08 23:51. Заголовок: xHarbour + bcc - ok ..


xHarbour + bcc - ok
xHarbour + pelles c - ok
xHarbour + ms vc - ok с поправкой на преобразование типов
open watcom и mingw все не соберу, поскольку надо качать новые версии этих компиляторов, а в последние дни запарка, некогда
dmc aka digital mars - тоже есть проблемка при сборке xHb


Спасибо: 0 
Профиль
постоянный участник


Пост N: 45
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 11.01.08 13:42. Заголовок: Pasha пишет: xHarbo..


Pasha пишет:

 цитата:
xHarbour + bcc - ok
xHarbour + pelles c - ok
xHarbour + ms vc - ok с поправкой на преобразование типов



Ok. Спасибо. А по типам, я сейчас начинаю писать "нармальный" загрузчик и постараюсь все аккуратно сделать.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 46
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 14.01.08 18:36. Заголовок: Здравствуйте. Предл..


Здравствуйте.

Предлагаю обсудить будущую демо-программу. Нормально ли, допустим, демо по Alaska? Нужно делать два демо, отдельно для Harbour и отдельно для xHarbour? Или можно совместить? И так далее..

В принципе, завтра-послезавтра я буду (тьфу-тьфу) уже готов давать "материал" для демо. Вроде бы все "укладывается" достаточно хорошо.


Спирин Сергей.

Спасибо: 0 
Профиль
модератор




Пост N: 685
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 14.01.08 19:05. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Нормально ли, допустим, демо по Alaska?


Да, возможности впечатляют

Sergey Spirin пишет:

 цитата:
Нужно делать два демо, отдельно для Harbour и отдельно для xHarbour? Или можно совместить?


IMHO можно совместить, поскольку демо-программа будет содержать, по-видимому, только ее исходники

Спасибо: 0 
Профиль
постоянный участник


Пост N: 47
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 14.01.08 19:18. Заголовок: gfilatov пишет: Да,..


gfilatov пишет:

 цитата:
Да, возможности впечатляют



Ну, я имел в виду Xbase-часть, первое окошко...


gfilatov пишет:

 цитата:
IMHO можно совместить, поскольку демо-программа будет содержать, по-видимому, только ее исходники



То есть, одно консольное?

Содержимое, наверное, как для аляски, аналогично:

FastDemo.prg - собственно демо
FastRepH.prg - класс frReportManager и все что к нему прилагается.
FrSystH.dll - триал FRH-a (по аналогии FRAX - для аляски)

Спирин Сергей.







Спасибо: 0 
Профиль
модератор




Пост N: 686
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 14.01.08 19:33. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
То есть, одно консольное?


Ну почему же только консольное?
Возможности Харбор GUI библиотек позволяют воспроизвести интерфейс демо по Alaska в полном объеме

Спасибо: 0 
Профиль
постоянный участник


Пост N: 48
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 14.01.08 19:39. Заголовок: gfilatov пишет: Воз..


gfilatov пишет:

 цитата:
Возможности Харбор GUI библиотек позволяют воспроизвести интерфейс демо по Alaska в полном объеме



А в поставке Харбор-а есть GUI-библиотеки? Я не знал, ткните носом.

Если же Вы о дополнительных, сторонних, то честно говоря, получится опять ветвление... А в хХарбуре есть стандартная GUI-библиотека?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 361
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 14.01.08 21:38. Заголовок: Я б перед выпуском d..


Я б перед выпуском demo показал знающим людям реализацию класса frReportManager, а то та Harbour реализация которую мне довелось видеть, мне что-то не очень..

Относительно ветвлений, весь Harbour сплошное ветвление



Спасибо: 0 
Профиль
постоянный участник


Пост N: 49
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 00:32. Заголовок: Петр пишет: Я б пер..


Петр пишет:

 цитата:
Я б перед выпуском demo показал знающим людям реализацию класса frReportManager, а то та Harbour реализация которую мне довелось видеть, мне что-то не очень..



Разослал первую, еще сильно сырую версию для того чтобы посмотреть, что там "не очень". Давайте обсуждать.

И давайте знакомьте со "знающими людьми"

В принципе, все сделал калькой с алясочного варианта, различаются загрузка и инициализация только. По большому счету, весь класс - это wrapper вокруг наборов экспотируемых функций в Frsyst. За год продаж FRAX-а не припомню претензий по реализации этого класса.

Петр пишет:

 цитата:
Относительно ветвлений, весь Harbour сплошное ветвление



А вот здесь займу жесткую позицию. Демо должно скачаться и скомпилироваться "сразу", без всяких "докачайте еще", "исправьте, впишите .. и.т. д. ", "доинсталлируйте"...

Поэтому, все-таки, думаю пока, что демо должно быть два. Консольное, которое скомпилируется и в Харбур и в xХарбур. И Графика - только для xХарбур (я правильно понимаю, что оно, GUI хоть какое-то, там есть в комплекте?).

Потом, когда будут "базовые демки" можно будет, конечно, "красоты" навести в более "привязанных" вариантах. Это уже факультативно.

Ok. От тех, кто берется за какой-то из вариантов, жду письма.

Спирин Сергей.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 50
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 09:44. Заголовок: Кстати, даже на глаз..


Кстати, даже на глаз видно, что отчет "More Complex" в 30 страниц, стротися как миниму раза в два быстрее, чем в Аляске. Так что, "движок" Харбура не плох, можно сказать.

Спасибо: 0 
Профиль
Администратор




Пост N: 704
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.01.08 10:26. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Поэтому, все-таки, думаю пока, что демо должно быть два. Консольное, которое скомпилируется и в Харбур и в xХарбур. И Графика - только для xХарбур (я правильно понимаю, что оно, GUI хоть какое-то, там есть в комплекте?).



ИМХО программу, аналогичную демо по Аляске, демонстрирующиую возмижности fr, можно давать в собранном виде. А уже сам fastreph.prg и frsyst.dll, наверное, с функциональными ограничениями, свойственными демке - в сырцах для сборки

Сборку fastdemo с minigui возлагать на пользователя не стоит, очень уж Харбор "ветвист". Не включать же скажем minigui.lib для всех возможных комбинаций. Да и сама процедура сборки, как показывает опыт, для многих вызывает сложности
Хотя, если Григорий сделает демку, использующую только костяк minigui, можно давать и сырцы

Спасибо: 0 
Профиль
постоянный участник


Пост N: 51
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 11:37. Заголовок: Pasha пишет: ИМХО п..


Pasha пишет:

 цитата:
ИМХО программу, аналогичную демо по Аляске, демонстрирующиую возмижности fr, можно давать в собранном виде. А уже сам fastreph.prg и frsyst.dll, наверное, с функциональными ограничениями, свойственными демке - в сырцах для сборки



В собранном(?).... Пожалуй, но это, наверное, относится к "факультативным" вариантам. Демо должно быть с исходникам, потому что оно демонстрирует как достичь того или другого, показывает в коде как это сделать...

Мне, что-то, никто так и не ответил на вопрос, "Голый" xHarbour содержит какие-то графические примитивы или нет? Там, окошко, кнопка, список, радиокнопки? По большому счету больше то и не надо.

Pasha пишет:

 цитата:
Сборку fastdemo с minigui возлагать на пользователя не стоит, очень уж Харбор "ветвист".



Вот я и про тоже самое и говорю. А состав демо я уже говорил, он будет такой:

FastDemoH.prg - собственно демо
FastRepH.prg - класс frReportManager и все что к нему прилагается.
FrSystH.dll - триал FRH-a

Как кстати компилируется вчерашний вариант? И что Вы думаете о реализации frReportManager?


Спирин Сергей.



Спасибо: 0 
Профиль
постоянный участник


Пост N: 362
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 11:45. Заголовок: Мои замечания по пов..


Мои замечания по поводу реализации класса

Я лично никогда не использую "_" в названии переменных или методов класса, поскольку Harbour сам по себе делает (или может делать - в зависимости от параметров сборки) class decoration для ASSIGN / ACCESS.

VAR frSystHandle init 0 // Handle of FastReport-dll
следует обьявить как CLASSVAR, т.е. сделать не переменной экземпляра, а переменной класса.

METHOD SetTitle
..
METHOD SetTitle(cTitle) class frReportManager
RETURN Call_Func_C_I(::_SetTitle, cTitle) = 1

лучше обьявлять как
METHOD SetTitle INLINE ( Call_Func_C_I(::_SetTitle, cTitle) == 1 )












Спасибо: 0 
Профиль
модератор




Пост N: 687
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.01.08 11:57. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
"Голый" xHarbour содержит какие-то графические примитивы или нет?


Содержит только для текстового режима (так же как и "голый" Harbour).
Но с помощью графического терминала WVT возможно получить псевдо-GUI

Sergey Spirin пишет:

 цитата:
Как кстати компилируется вчерашний вариант?


Полный порядок.

Спасибо: 0 
Профиль
модератор




Пост N: 688
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.01.08 12:00. Заголовок: Петр пишет: Мои зам..


Петр пишет:

 цитата:
Мои замечания по поводу реализации класса


Полностью согласен с замечаниями (предложениями ), высказанными Петром.



Спасибо: 0 
Профиль
Администратор




Пост N: 705
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.01.08 12:01. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Мне, что-то, никто так и не ответил на вопрос, "Голый" xHarbour содержит какие-то графические примитивы или нет? Там, окошко, кнопка, список, радиокнопки? По большому счету больше то и не надо.



Харбор (оба) содержит терминал gtwvt/gtwvg, который включает в себя основные контролы windows в качестве надстройки над текстовым режимом. Если использовать его, то можно сделать демку и без минигуи, используя базовую поставку.
Демо графических примитивов gtwvt
xharbour\contrib\wvtgui\samples
harbour\contrib\hbgtwvg\tests
Мне кажется, этих средств будет вполне достаточно для рисования главного окошка демки


 цитата:
Как кстати компилируется вчерашний вариант? И что Вы думаете о реализации frReportManager?



Поскольку вариант оказался "ночным", я его вчера не увидел
Прогоню сегодня вечером

Спасибо: 0 
Профиль
Администратор




Пост N: 706
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 15.01.08 12:07. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
И давайте знакомьте со "знающими людьми"



Попробуйте написать на comp.lang.xharbour
Думаю, там многие тоже заинтересуются Вашим продуктом


Спасибо: 0 
Профиль
постоянный участник


Пост N: 52
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 12:37. Заголовок: Петр пишет: Мои зам..


Петр пишет:

 цитата:
Мои замечания по поводу реализации класса



Ну, я боялся, что что-то переделывавать придется А "марафет" давайте, конечно, наводить вместе. Я только за!

Не забывайте также , что я совсем не клипперист, и клиппером владею где-то (как кто-то подметил) "на уровне Summer87"

Тем не менее, внутренне я не совсем с замечаниями согласен...

Петр пишет:

 цитата:
Я лично никогда не использую "_" в названии переменных или методов класса, поскольку Harbour сам по себе делает (или может делать - в зависимости от параметров сборки) class decoration для ASSIGN / ACCESS.



Так уж сложилось, что префикс "_" для переменных во всех языках обычно означает "системность", "закрытость" и т.п. Что, собственно, мне инадо. Для лучшей читабельности мне нужно, чтобы имя переменной совпадало с именем метода "к которому принадлежит". Какаие еще могут быть хорошие варианты? Это с одной стороны.

С другой, Harbour (как и С) использует в своих целях "_", но никогда не слышал чтобы они запрещали это делать другим

Петр пишет:

 цитата:
VAR frSystHandle init 0 // Handle of FastReport-dll
следует обьявить как CLASSVAR, т.е. сделать не переменной экземпляра, а переменной класса.



Здесь есть нюансы. Нюансы с многопоточностью. Например по аляске. Сейчас FRAX не полностью ее поддерживает. Но есть обходной путь, которым некоторые алясковцы пользуются. Накопировать несколько dll-ей. И создать несколько объектов "от" разных dll.

Ваше предложение такой путь пресекает.

Петр пишет:

 цитата:
METHOD SetTitle(cTitle) class frReportManager
RETURN Call_Func_C_I(::_SetTitle, cTitle) = 1

лучше обьявлять как
METHOD SetTitle INLINE ( Call_Func_C_I(::_SetTitle, cTitle) == 1 )



Что-то не пойму, чем INLINE лучше? Код прямо в объявлении класса? Это быстрее работает?

Точное сравнение поставлю "==", но тоже хочется узнать, чем оно лучше?



Спасибо: 0 
Профиль
постоянный участник


Пост N: 53
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 12:53. Заголовок: Pasha пишет: Попроб..


Pasha пишет:

 цитата:
Попробуйте написать на comp.lang.xharbour
Думаю, там многие тоже заинтересуются Вашим продуктом



Заинтересуются то понятно. Но я не хочу привлекать буржуев к написанию и тестированию.


Спасибо: 0 
Профиль
постоянный участник


Пост 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, но не нашел никаких примеров использования.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 363
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 13:37. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Что-то не пойму, чем INLINE лучше? Код прямо в объявлении класса? Это быстрее работает?



Да - это работает быстрее
К тому же, если помните, я на примере fnDBStruct() показал Вам как нужно писать быстрый код, поверьте на слово - разница в скорости довольно ощутимая.


 цитата:
Точное сравнение поставлю "==", но тоже хочется узнать, чем оно лучше?



"=" может использоваться и как оператор сравнения и как оператор присваивания, в зависимости от контекста применения. В связи с чем иногда делаются ненужные ошибки.


 цитата:

Здесь есть нюансы. Нюансы с многопоточностью. Например по аляске. Сейчас FRAX не полностью ее поддерживает. Но есть обходной путь, которым некоторые алясковцы пользуются. Накопировать несколько dll-ей. И создать несколько объектов "от" разных dll.



Сейчас не только FRAX ее не поддерживает, но и [х]Harbour - поэтому не надо усложнять себе жизнь. Но это на Ваше усмотрение.

















Спасибо: 0 
Профиль
постоянный участник


Пост N: 55
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 14:16. Заголовок: Петр пишет: Что-то ..


Петр пишет:

 цитата:
Что-то не пойму, чем INLINE лучше? Код прямо в объявлении класса? Это быстрее работает?

Да - это работает быстрее



Ok. Буду знать и использовать.

Петр пишет:

 цитата:
К тому же, если помните, я на примере fnDBStruct() показал Вам как нужно писать быстрый код, поверьте на слово - разница в скорости довольно ощутимая.



Ok. Там для меня несколько непонятный синтаксис, а fnDBStruct() не критичная по скорости функция, но тем не менее, хорошо, давайте, Вы будете присылать оптимизированные куски, а я их буду менять. Методы все короткие, не так много и оптимизировать.

Если можно, fnDBStruct() продублируйте на "мыло".

Петр пишет:

 цитата:
"=" может использоваться и как оператор сравнения и как оператор присваивания, в зависимости от контекста применения. В связи с чем иногда делаются ненужные ошибки.



Ok. Правило принимаю, при сравнениях буду писать ==.


Петр пишет:

 цитата:
Сейчас не только FRAX ее не поддерживает, но и [х]Harbour - поэтому не надо усложнять себе жизнь. Но это на Ваше усмотрение.



Да? [х]Harbour не поддерживает многопоточность? Хорошо, тогда действительно можно CLASSVAR.


Спирин Сергей.

Спасибо: 0 
Профиль
модератор




Пост N: 689
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.01.08 14:57. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
[х]Harbour не поддерживает многопоточность?


Что касается Харбора, то поддержка многопоточности планируется после выпуска версии 1.0.
Что касается хHarbour, то поддержка многопоточности в нем теоретически есть, но периодически пишут на его форуме, что практически она не работает

Спасибо: 0 
Профиль
постоянный участник


Пост 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, то все по привычке пишут для оператора сравнения два знака равенства ==. Хотя надо осознанно к этому подходить для строковых данных, как я заметил выше.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 364
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 16:33. Заголовок: Григорьев Владимир п..


Григорьев Владимир пишет:

 цитата:
Как было выше сказано, можно, якобы, перепутать сравнение и оператор присваивания.



Когда приблизительно месяца два назад на форуме разработчиков обсуждали так называемую "дорожную карту" Harbour 2.x , то помимо всего того, что может привести в ужас добропорядочного клиппериста, предлагалось добавить ключ компилятора, при использовании которого = ставится фактически вне закона: для присваивания использовать исключительно :=, для сравнения ==.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 56
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 16:44. Заголовок: Все-таки хотелось бы..


Все-таки хотелось бы определиться с демо, и с целесообразностью его типов.

-Делать ли консольную версию?

-Можно ли "извернуться" и сделать "полу-псевдо.."-windows приложение, которое будет компилироваться в обоих "голых" харбурах?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост 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?

Спасибо: 0 
Профиль
модератор




Пост 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 )



Спасибо: 0 
Профиль
постоянный участник


Пост N: 365
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 17:07. Заголовок: Сергей, это зависит ..


Сергей, это зависит от Вас и от маркетинговой политики выбранной опять же Вами.

Консольную версию обязательно. А остальное, как мне видится, весьма желательно, т.е. пример для FiveWin, Visual xHarbour, HWGUI, MiniGUI, gtwvt&co. Затраты небольшие, а Вам только +.
Поскольку кому и примера не нужно, а кто без примера и шагу ступить не может.

К тому же не спрос рождает предложение, а предложение спрос.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 366
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 17:08. Заголовок: gfilatov пишет: Опе..


gfilatov пишет:

 цитата:
Опечатка



Угу

Спасибо: 0 
Профиль
модератор




Пост N: 691
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.01.08 17:11. Заголовок: gfilatov пишет: Дел..


gfilatov пишет:

 цитата:
Делать ли консольную версию?


Да.

Sergey Spirin пишет:

 цитата:
Можно ли "извернуться" и сделать "полу-псевдо.."-windows приложение


Возможно, поскольку библиотека GTWVT входит в стандартную поставку обоих Харборов
Но рекомендую также рассмотреть вопрос включения исходников полноценного Win-приложения, основанного на MiniGUI и аналогичного по функциональности демке для Alaska XBase++, ссылку на которую Вы дали в начале топика

Спасибо: 0 
Профиль
постоянный участник


Пост N: 339
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 15.01.08 17:24. Заголовок: Петр пишет: ключ ко..


Петр пишет:

 цитата:
ключ компилятора, при использовании которого = ставится фактически вне закона: для присваивания использовать исключительно :=, для сравнения ==.



Но на самом деле это некорректно! Так как вы тем самым перечеркиваете установку SET EXACT ON|OFF. Если вы всегда будете заменять = на ==, то эта установка будет бессмысленна, а многие программы, которые по незнанию, или случайно будут откомпиллированы с этим ключом перестанут работать!
Другое дело, что я согласен с тем, что лучше простой оператор присваивания = заменять на строчный оператор присваивания :=, что я сам лично всегда так и делаю. Но вот со знаком сравнения = этого делать нельзя. То есть следует различать знаки сравнения = и ==. Они имеют разную семантику и не являются взаимозаменяемыми.

Спасибо: 0 
Профиль
постоянный участник


Пост 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



Ок. Давайте определяться кто что делает. Мне демы писать сильно не хочется, я не клипперист, у меня просто получится хуже. Для дем же уже все есть, коды вызовов можно копировать из алясочного, должно в большинстве своем работать и т.д.

Если неудобно на форуме, то давайте мылом.



Спасибо: 0 
Профиль
Администратор




Пост 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 - чего душе угодно
Для демо думаю будет вполне достаточно

Спасибо: 0 
Профиль
постоянный участник


Пост N: 367
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 18:15. Заголовок: Григорьев Владимир п..


Григорьев Владимир пишет:

 цитата:
Но на самом деле это некорректно! Так как вы тем самым перечеркиваете установку SET EXACT ON|OFF. Если вы всегда будете заменять = на ==, то эта установка будет бессмысленна, а многие программы, которые по незнанию, или случайно будут откомпиллированы с этим ключом перестанут работать!
Другое дело, что я согласен с тем, что лучше простой оператор присваивания = заменять на строчный оператор присваивания :=, что я сам лично всегда так и делаю. Но вот со знаком сравнения = этого делать нельзя. То есть следует различать знаки сравнения = и ==. Они имеют разную семантику и не являются взаимозаменяемыми.



Я думаю, что это обращение относится не ко мне

Этот ключ не будет включен по умолчанию. И опасений, подобных высказанным Вами было также достаточно. К соглашению не пришли и решили вернуться к вопросу попозже. Если я найду в архиве высказанные предложения - я их опубликую здесь.

Лично я использую только := для присваивания, == для сравнения числовых данных ( вот почему и написал на автомате Call_Func_C_I(::_SetTitle, cTitle) == 1 ), = и == для работы со строками.

Спасибо: 0 
Профиль
постоянный участник


Пост 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));
}

но ведь работает !



 цитата:
Ок. Давайте определяться кто что делает. Для дем же уже все есть, коды вызовов можно копировать из алясочного, должно в большинстве своем работать и т.д.

Если неудобно на форуме, то давайте мылом.



Это в смысле портировать алясочный пример ?
И что должно быть неудобно на форуме ?



Спасибо: 0 
Профиль
постоянный участник


Пост N: 59
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 18:38. Заголовок: Петр пишет: Мне вот..


Петр пишет:

 цитата:
Мне вот это тоже не нравится

HB_FUNC( FRLOAD )
{
hb_retnl((long)(HMODULE)LoadLibrary
...................



А что, кстати, не нравится? HMODULE/FARPROC появились по "требованию Microsoft"

А к long приводить надо, чтоб в Харбур-переменной хранить...

Петр пишет:

 цитата:
Это в смысле портировать алясочный пример ?
И что должно быть неудобно на форуме ?



Форум больше для общение и обмена... Мне бы хотелось организовать более рабочий процесс




Спасибо: 0 
Профиль
постоянный участник


Пост N: 369
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.01.08 18:43. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
А к long приводить надо, чтоб в Харбур-переменной хранить...



В Харбур-переменной с одинаковым успехом можна и указатели хранить..


Спасибо: 0 
Профиль
постоянный участник


Пост N: 60
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 15.01.08 18:49. Заголовок: Петр пишет: В Харбу..


Петр пишет:

 цитата:
В Харбур-переменной с одинаковым успехом можна и указатели хранить..



Да пробовал я hb_retptr в первую очередь, но уже не помню что, не срослось....В обратной "отдаче" что ли... не помню уже.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 61
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 16.01.08 18:25. Заголовок: Здравствуйте. А нет..


Здравствуйте.

А нет ли в Харборе функции, которая вернет список всех открытых рабочих областей? То есть аналог алясочного WorkSpaseList()?

Спирин Сергей.

Спасибо: 0 
Профиль
Администратор




Пост N: 715
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.01.08 21:57. Заголовок: Поскольку структуры ..


Поскольку структуры вида
static AREAP * s_WaList = NULL;
обьявлены как static в модуле source\rdd\wacore.c, и прямого доступа к ним нет, приходится получать список РО таким вот грубым способом:

Local aWA := {}
For nArea := 1 TO 65534 // максимальное число РО
if ! Empty( alias(nArea) )
AAdd( aWA, { alias(nArea), nArea } )
endif
Next

Чтобы сделать это более красиво, можно, конечно, добавить функцию в модуль wacore.c, но сейчас ее там нет


Спасибо: 0 
Профиль



Пост N: 43
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 17.01.08 09:28. Заголовок: А как hb_rddIterate..


А как hb_rddIterateWorkAreas ?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 62
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 17.01.08 09:43. Заголовок: saulius пишет: А ка..


saulius пишет:

 цитата:
А как hb_rddIterateWorkAreas ?



Да, спасибо, придется с ней что-то придумать. "Придется" - это потому, что я стараюсь обходить совместное использование структур из-за возможной разницы в "record field alignment"....

Спасибо: 0 
Профиль
постоянный участник


Пост N: 63
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 17.01.08 14:07. Заголовок: Здравствуйте. А ест..


Здравствуйте.

А есть ли какая-либо картинка, котороая символизирует [x]Harbour. Нужна картинка на кнопку.


Спирин Сергей.

Спасибо: 0 
Профиль
Администратор




Пост N: 718
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 17.01.08 15:51. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
А есть ли какая-либо картинка, котороая символизирует [x]Harbour. Нужна картинка на кнопку.



Да можно взять "бренд" с официальной странички проекта:

www.harbour-project.org

Спасибо: 0 
Профиль
постоянный участник


Пост N: 65
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 17.01.08 19:08. Заголовок: Pasha пишет: Да мож..


Pasha пишет:

 цитата:
Да можно взять "бренд" с официальной странички проекта:



Да там только этот кораблик.... Ну, как мог ужал его

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 66
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 18.01.08 16:07. Заголовок: Здравствуйте. Я &#..


Здравствуйте.

Я "потихоньку" начинаю готовится к анонсу beta-trial. Не могли бы Вы "накидать" ссылок на различные форумы, конференции, да и вообще на любые ресурсы, где возможен такой анонс.

Интересуют все ресурсы, от форума разработчиков до локальных или специализированных.

Спасибо.

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 370
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.01.08 23:05. Заголовок: http://www.fivetechs..

Спасибо: 0 
Профиль
Администратор




Пост N: 721
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.01.08 12:46. Заголовок: Я уже упоминал usene..


Я уже упоминал usenet группу comp.lang.xharbour

Есть бразильский форум, довольно оживленный. Там пишут по португальски, но думаю, по английски поймут

http://www.pctoledo.com.br/forum/



Спасибо: 0 
Профиль
постоянный участник


Пост N: 67
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 19.01.08 21:42. Заголовок: Здравствуйте, спасиб..


Здравствуйте, спасибо за ссылки.

Набросал страничку для анонса, посмотрите пожалуйста, думаю для анонса бэты этого достаточно...

http://paritetsoft.ru/frh.htm


Спасибо: 0 
Профиль
постоянный участник


Пост N: 54
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.01.08 09:18. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
думаю для анонса бэты этого достаточно


Нормально. zip-ы когда можно будет качнуть?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 68
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 09:27. Заголовок: Сегодня, в течении д..


Сегодня, в течении дня выложу варианты для МиниГуи (их два Std и Ext). Спасибо Григорию Филатову

Консольный будет завтра-послезавтра.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 55
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.01.08 10:05. Заголовок: Ясно. Спасибо и удач..


Ясно. Спасибо и удачи! :)

Спасибо: 0 
Профиль
постоянный участник


Пост N: 69
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 14:34. Заголовок: Здравствуйте. На h..


Здравствуйте.

На http://paritetsoft.ru/frh.htm выложил сам FRH и два демо для MiniGui. После добавления консольного варианта демо сделаю широкий анонс.


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.01.08 18:08. Заголовок: ?????????????..


?????????????

Спасибо: 0 
постоянный участник


Пост N: 70
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 18:14. Заголовок: AAAAAAAAA пишет: ??..


AAAAAAAAA пишет:

 цитата:
?????????????



Что-то не получается?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 371
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.01.08 20:22. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
выложил сам FRH и два демо для MiniGui.



Error DBFCDX/1001 Open error: Biolife.dbf (DOS Error 3)

Called from DBUSEAREA(0)
Called from DOMEMPICT(539)
Called from (b)MAIN(251)
Called from _DOCONTROLEVENTPROCEDURE(4805)
Called from EVENTS(1560)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(4495)
Called from MAIN(395)

Спасибо: 0 
Профиль
постоянный участник


Пост N: 71
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 20:29. Заголовок: Петр пишет: Error D..


Петр пишет:

 цитата:
Error DBFCDX/1001 Open error: Biolife.dbf (DOS Error 3)

Called from DBUSEAREA(0)



Какой вариант, и куда, что положили (директорно)? Можно ли проверить почему Biolife.dbf не открывается?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 57
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 21.01.08 21:04. Заголовок: Я так понял, что FRH..


Я так понял, что FRH и дема должны в одной папке лежать.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 72
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 22:37. Заголовок: PSP пишет: Я так по..


PSP пишет:

 цитата:
Я так понял, что FRH и дема должны в одной папке лежать.



Да, все правильно, а что есть есть проблемы?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 73
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 21.01.08 23:00. Заголовок: Петр пишет: Error D..


Петр пишет:

 цитата:
Error DBFCDX/1001 Open error: Biolife.dbf (DOS Error 3)

Called from DBUSEAREA(0)



Интересно, у меня работе пару раз эта ошибка тоже "проскользнула", сейчас дома повторить не могу в принципе .

Но в любом случае это чисто DBFCDX ошибка, то есть чистая Harbour-ошибка, к FRH отношения не имеет. Если у Вас четко повторяется, напишите, пожалуйста, последовательность действий.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 372
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.01.08 10:26. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
сейчас дома повторить не могу в принципе




Достаточно установить FastReport Action в Export Report и 2 раза воспользоваться кнопкой Memos and Pictures



Спасибо: 0 
Профиль
постоянный участник




Пост N: 408
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.08 10:53. Заголовок: Лучше было бы положи..


Лучше было бы положить ЕХЕ-шник уже готовый, а то не собирается !!!!
А так хочется глянуть быстрей как это работает.
Лучше всего даже все варианты в ДЕМО запихнуть и название сделать:
demo_minigui.exe
demo_xH_gtwin.exe
demo_H_gtwin.exe
и т.д.

И всем понятно будет !!!!

Спасибо: 0 
Профиль
модератор




Пост N: 692
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 22.01.08 11:21. Заголовок: Andrey пишет: Лучше..


Andrey пишет:

 цитата:
Лучше было бы положить ЕХЕ-шник уже готовый


Выложил рабочий вариант FrH с откомпилированным экзешником и исходниками по адресу:

http://minigui.mylivepage.ru/file/?fileid=4477




Спасибо: 0 
Профиль



Пост N: 24
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 22.01.08 12:16. Заголовок: Супер ! Жду демки п..


Супер ! Жду демки под wvt/wvw .
Будет ли оно работать c другими GUI типа Visual Xharbour ?
http://www.xharbour.com/index_vxh.asp?page=products_vxh_home_new&show_h=1
И шкурный вопрос - сколько будет стоить лицензия ?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 74
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 12:23. Заголовок: Петр пишет: Достато..


Петр пишет:

 цитата:
Достаточно установить FastReport Action в Export Report и 2 раза воспользоваться кнопкой Memos and Pictures



Ok. Спасибо. Исправлено. Оказалось, это еще с Аляски, мое непонимание команды SET DEFAULT TO "data\"

Я почему-то наверное думал, что это "навсегда" определение , а оказалось нет. Диалог экспорта меняет текущую директорию и "привет"

Спасибо: 0 
Профиль
постоянный участник


Пост N: 75
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 12:31. Заголовок: k_dima пишет: Будет..


k_dima пишет:

 цитата:
Будет ли оно работать c другими GUI типа Visual Xharbour ?



Да, будет. Заявлено же, что "compatible with any Harbour or xHarbour -based systems"

k_dima пишет:

 цитата:
И шкурный вопрос - сколько будет стоить лицензия ?



FRAX (это для Аляски) сейчас стоит 299 Евро.


Спасибо: 0 
Профиль
постоянный участник




Пост N: 409
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.08 13:32. Заголовок: k_dima пишет: Будет..


k_dima пишет:

 цитата:
Будет ли оно работать c другими GUI типа Visual Xharbour ?



Да будет, так как Visual xHarbour совместим с xHarbour'om.
А демо я пока под хХарбором пишу.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 6
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 22.01.08 14:31. Заголовок: Sergey Spirin ..


Sergey Spirin

А смысл платить 300 евро если за 80 баксов можно купить Fast Report Studio?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 76
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 14:48. Заголовок: leo пишет: А смысл ..


leo пишет:

 цитата:
А смысл платить 300 евро если за 80 баксов можно купить Fast Report Studio?





Купить то можно, только что дальше с этим делать?

Далее, 80 баксов - это Personal. То есть для дома и семьи, это как Word себе купить

Single для разработчика - это уже около 200 Евро. Ну, попробуйте, как Вам понравится работа через OLE и какие возможности оно в данном случае дает


И потом, для буржуев точно будет не меньше, про EXUSSR еще подумаю..., хотя кажется, все кризисы давно прошли?



Спасибо: 0 
Профиль
постоянный участник


Пост N: 7
Зарегистрирован: 13.09.07
ссылка на сообщение  Отправлено: 22.01.08 14:56. Заголовок: Sergey Spirin п..


Sergey Spirin пишет:


 цитата:
Купить то можно, только что дальше с этим делать?



А дальше без проблем из Harbour вызывается на выполнение любой отчет.

Sergey Spirin пишет:

 цитата:
И потом, для буржуев точно будет не меньше, про EXUSSR еще подумаю..., хотя кажется, все кризисы давно прошли?



Не знаю у кого эти кризисы прошли, у меня и у моих коллег еще не скоро будет возможность покупать за 300 евро нужные программы. Хотя я понимаю, что всякий труд должен быть оплачен и по большому счету для
нормальной страны деньги эти не такие большие. Но когда мы станем такой страной?




Спасибо: 0 
Профиль
постоянный участник


Пост N: 77
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 15:28. Заголовок: leo пишет: Не знаю ..


leo пишет:

 цитата:
Не знаю у кого эти кризисы прошли,



Это какой любой? C базами, например, как работать будете?

leo пишет:

 цитата:
Не знаю у кого эти кризисы прошли, у меня и ..



Честно говоря, я не очень Вас понимаю. Вы независимый разработчик софта? Продаете свой софт? По-моему, остается подсчитать рентабельность приобретения FRH. Если нерентабелен, ну и бог с ним, в конце концов

Насчет страны, а Вы откуда?

И потом, я же говорю, что для EXUSSR еще подумаю.




Спасибо: 0 
Профиль



Пост N: 25
Зарегистрирован: 19.12.06
ссылка на сообщение  Отправлено: 22.01.08 17:16. Заголовок: 300 евро - не вопрос..


300 евро - не вопрос, если еще в эту сумму входит поддержка хотя-бы год - короче ждем версию для Xharbour, как только появится, попробую ее под Visual Xharbour погонять.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 78
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 17:43. Заголовок: k_dima пишет: если ..


k_dima пишет:

 цитата:
если еще в эту сумму входит поддержка хотя-бы год



Насчет поддержки. Если говорить про FRAX, то текущая сборка пересобирается 1-2 в неделю и естественно доступна пользователям. То есть, все баги как мои, так и FastReport Inc правяться оперативно. А в консультациях тоже ния ни Фаст никому не отказываем

С FRH я думаю будет аналогично.



Спасибо: 0 
Профиль
постоянный участник




Пост N: 410
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.08 22:10. Заголовок: Народ ! Помогите раз..


Народ ! Помогите разобраться в написании терминала для GTWIN и GTWVT под различные кодировки: 1251 и 866
Все строковые константы сидят в CH
lang_en.ch
lang_ru.dos.ch
lang_ru.win.ch
Можно ли в одном модуле PRG сделать все описание ?
Если нет то дайте как можно ......

Спасибо: 0 
Профиль
постоянный участник


Пост N: 79
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 22.01.08 22:40. Заголовок: Andrey пишет: Народ..


Andrey пишет:

 цитата:
Народ ! Помогите разобраться в написании терминала для GTWIN и GTWVT под различные кодировки: 1251 и 866



Андрей, да пускай будет только английский. Какого то особенного смысла в русском языке в деме нет. Не упирайтесь! :)

Спасибо: 0 
Профиль
постоянный участник




Пост N: 411
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.01.08 23:03. Заголовок: Ну для Демо можно и ..


Ну для Демо можно и только английский, но хочется всетаки универсальности, тем более что препроцессор позволяет !

Спасибо: 0 
Профиль
постоянный участник


Пост N: 80
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 23.01.08 12:04. Заголовок: Здравствуйте. Давно..


Здравствуйте.

Давно хочу спросить, какой лучший способ сгенерить (возбудить) ошибку? То есть, вот даже "живой" пример:

::frSystHandle := FrLoad(cOptionalPath)
IF ::frSystHandle <> 0
...................
ELSE
// ?? How to raise exception ?
ENDIF



Спасибо: 0 
Профиль
модератор




Пост N: 693
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 23.01.08 13:34. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
какой лучший способ обработать ошибку?


Для этого предназначена следующая структура:

BEGIN SEQUENCE
::frSystHandle := FrLoad(cOptionalPath)
IF EMPTY(::frSystHandle)
MsgStop('Error message.')
BREAK
ENDIF
...
END SEQUENCE



Спасибо: 0 
Профиль
постоянный участник


Пост N: 81
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 23.01.08 13:56. Заголовок: gfilatov пишет: ка..


gfilatov пишет:

 цитата:
какой лучший способ обработать ошибку?

Для этого предназначена следующая структура:



Нет-нет! Не обработать ошибку! А именно "сделать" ошибку Чтобы объект ошибки с моими словами "пошел" в текущий ErrorBlock.

Насколько я понимаю, я должен создать объект ошибки и вызвать Eval(ErrorBlock, oError)

Просто, может есть как-то коротко?


Спасибо: 0 
Профиль
модератор




Пост N: 694
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 23.01.08 14:43. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
какой лучший способ сгенерировать ошибку?


...
oerr := ErrorNew()
oerr:severity := ES_ERROR
oerr:genCode := EG_OPEN
oerr:subSystem := "FRH"
oerr:osCode := nFileError
oerr:filename := cFrFile
Eval(ErrorBlock(), oerr)
...

Спасибо: 0 
Профиль
постоянный участник


Пост N: 82
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 23.01.08 14:45. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Просто, может есть как-то коротко?



Подсмотрел rdd-исходники, похоже сокращенного пути нет Сделал так

ELSE
oError := ErrorNew()
oError:GenCode := EG_OPEN
oError:Severity := ES_ERROR
oError:SubCode := 2012
oError:Description := "Can not load FRH library " + "'" + cOptionalPath + "'"
oError:FileName := cOptionalPath
oError:CanDefault := .F.
Eval(ErrorBlock(), oError)
ENDIF


Спасибо: 0 
Профиль
постоянный участник


Пост N: 83
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 23.01.08 14:47. Заголовок: gfilatov пишет: :su..


gfilatov пишет:

 цитата:
:subSystem := "FRH"



Точно

Спасибо: 0 
Профиль
модератор




Пост N: 695
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 23.01.08 15:06. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
oError:Description := "Can not load FRH library " + "'" + cOptionalPath + "'"


Описание ошибки можно сократить до
oError:Description := "Can not load FRH library"

поскольку имя файла передается в
oError:FileName := cOptionalPath



Спасибо: 0 
Профиль



Пост N: 44
Зарегистрирован: 27.04.06
ссылка на сообщение  Отправлено: 23.01.08 15:21. Заголовок: ELSE Throw( ErrorN..


ELSE
Throw( ErrorNew( "FRH", EG_OPEN, 2012, ProcName(), "Can not load FRH library", ;
{ cOptionalPath, cOptionalPath } ) )
ENDIF


Спасибо: 0 
Профиль
модератор




Пост N: 696
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 23.01.08 15:37. Заголовок: saulius пишет: Thro..


saulius пишет:

 цитата:
Throw(..)


Эта функция есть только в xHarbour

#include "hbapi.h"
#include "hbapiitm.h"
#include "hbapierr.h"

HB_FUNC( THROW )
{
PHB_ITEM pError = hb_param( 1, HB_IT_ANY ), pResult;

if( HB_IS_OBJECT( pError ) )
{
pError = hb_itemNew( pError );

pResult = hb_errLaunchSubst( pError );

hb_itemRelease( pError );

if( pResult )
{
hb_itemRelease( hb_itemReturnForward( pResult ) );
}
}
else
{
hb_errRT_BASE( EG_ARG, 9101, NULL, "THROW", 1, hb_paramError( 1 ) );
}
}


Спасибо: 0 
Профиль
постоянный участник


Пост N: 85
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 24.01.08 14:19. Заголовок: Здравствуйте. Расши..


Здравствуйте.

Расширил и обновил http://www.paritetsoft.ru/frh.htm

Сейчас начну наполнять содержимое ссылок на файлы. Посмотрите пожалуйста, может быть, какие-то замечания, что-то в словах добавить, и т.д.

Возможно, что сделаю широкий анонс выхода бэты сегодня.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 86
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 24.01.08 15:34. Заголовок: Все разложил. Сажусь..


Все разложил. Сажусь писать тект анонса и где-то через полчаса-час начну "долбить по миру"



Спасибо: 0 
Профиль
постоянный участник


Пост N: 88
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 28.01.08 11:07. Заголовок: Сборка консоли. Рели..


Сборка консоли. Релиз 9971
Сборка demo_gtwin.bc все нормально.
Что-то не могу повторить сборку demo_gtwvt.bc , выдает ошибку:
Hbmake need of the xHarbour bin in the path.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 92
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 28.01.08 19:45. Заголовок: Vlad04 пишет: Что-т..


Vlad04 пишет:

 цитата:
Что-то не могу повторить сборку demo_gtwvt.bc ,



Этот вариант делал Андрей, поэтому "подождем" его.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 430
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.08 23:37. Заголовок: Vlad04 пишет: Hbmak..


Vlad04 пишет:

 цитата:
Hbmake need of the xHarbour bin in the path.



Я вообщето очень слабо разбираюсь в английском, но помоему он "ругается" про путь к xHarbour'y.
Скорее всего не прописано PATH=Z:\BCC55\BIN;Z:\xHARBOUR\BIN;
и еще HB_DIR = Z:\xHARBOUR
соответственно диск Z - переправте на свой.

Хотя если предыдущий собрался через hbmake, то и это должен собраться.
Может ошибка другая, типа
Fatal: Unable to open file 'WVTGUI.LIB' ???


Спасибо: 0 
Профиль
постоянный участник


Пост N: 89
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 29.01.08 06:57. Заголовок: Вообщем повторить по..


Вообщем повторить почти удалось.Прописал в переменных окружения пути, сборка пошла. Но для сборки demo_gtwin.bc переменные окружения указывал только в батнике в батнике (т.к. работаю сразу с версией 9971 и 1.0) и все получалось.
Небольшие замечания:
1) В файле demo_gtwvt.prg указан #include "lang_ru.dos.ch", а фактичесуи есть lang_en.ch.
2) Внешний вид приложения - отсутствуют рамки на комбобоксе выбора языка приложения.
Возможно это связано с установленным фонтом.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 432
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.01.08 10:24. Заголовок: Vlad04 пишет: указа..


Vlad04 пишет:

 цитата:
указан #include "lang_ru.dos.ch", а фактичесуи есть lang_en.ch.



Это к Сергею Спирину, я ему писал чтоб русскую кодировку выложил.

Vlad04 пишет:

 цитата:
отсутствуют рамки на комбобоксе выбора языка приложения.


Были рамки, а в какой системе запускается задача ?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 90
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 29.01.08 11:00. Заголовок: Пересобрал на нарб ..


Пересобрал на нарб 1.0.
Все то же самое, имею ввиду рамки.
Операционная ХР2, запускал из под фара и проводником

Спасибо: 0 
Профиль
постоянный участник




Пост N: 433
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.01.08 11:35. Заголовок: Программа должна быт..


Программа должна быть такой:


Если нет, то пишем ....

Спасибо: 0 
Профиль
постоянный участник


Пост N: 91
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 29.01.08 13:57. Заголовок: Нет рамок, как я соо..


Нет рамок, как я сообщал для demo_gtwvt.exe , если я его сам собираю.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 434
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.01.08 16:55. Заголовок: Я кажись догадываюсь..


Я кажись догадываюсь в чем дело ! Хотелось бы подтверждения ....
Какой исходник вы собираете ?
Есть ли в исходнике 2 строки:

Wvt_SetCodePage(255) // #define OEM_CHARSET 255 - from wingdi.h
Wvt_SetFont( 'Terminal', 18, 10, 0 )

Я собираю xHarbour build 1.0.0 Intl. И у меня рамки есть.
Выложите окно, которое у вас получается.



Спасибо: 0 
Профиль
постоянный участник




Пост N: 466
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.02.08 23:10. Заголовок: Пытался опять собрат..


Пытался опять собрать ДЕМО терминальное для GTWIN под Harbour Beta build 0.99-3 Intl.
Собралось. Но если подключена мышка то выдает такую ошибку
┌───────────────────────────────────────────┐
│ Error BASE/1081 Неверный аргумент: +
│ [ Quit ]
└───────────────────────────────────────────┘
И вываливается.
Что-то в GET-системы с мышкой не лады в Harbour'e.
Хочется все-таки запустить Harbour - DEMO, кто поможет ?

Спасибо: 0 
Профиль
постоянный участник


Пост N: 105
Зарегистрирован: 25.12.07
ссылка на сообщение  Отправлено: 05.02.08 12:22. Заголовок: Andrey пишет: Хочет..


Andrey пишет:

 цитата:
Хочется все-таки запустить Harbour - DEMO, кто поможет ?



Да ладно, это в общем-то не столь актуально. Как с штрих-кодами дела? Разбираетесь?

Спирин Сергей.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 467
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.02.08 00:19. Заголовок: Sergey Spirin пишет:..


Sergey Spirin пишет:

 цитата:
Да ладно, это в общем-то не столь актуально.


Нет, актуально ! Я на нем дальше хочу делать задачи. Тем более его наши гуру используют.

Спасибо: 0 
Профиль
Ответов - 201 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 148
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет