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


Пост 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: 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 
Профиль
Ответов - 201 , стр: 1 2 3 4 5 6 7 8 9 10 11 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 84
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет