Форум » LetoDB, HbNetio. » C# and LetoDb ? » Ответить

C# and LetoDb ?

Andrey: Возможно ли сделать связку C# и LetoDb ? Т.е. хочу оставить все свои базы в DBF-формате, а интерфейс делать на C#. Ну не нравиться мне PostgreSQL и другие SQL. Да и времени на перетаскивание на другую SQL порядочно уйдёт.

Ответов - 15

ММК: Повязали FWH с си шарпом. Начиная с версии 18.05

PSP: ММК пишет: Повязали FWH с си шарпом. Начиная с версии 18.05 Можно подробней? Что там происходит? Я не в теме, но для меня было открытием существование Visual Studio во free-версии. Это очень мощный ход Microsoft. Видимо СиШарп действительно может подмять под себя многих.

Andrey: ММК пишет: Повязали FWH с си шарпом. Начиная с версии 18.05 Очень хочется узнать подробности ? PSP пишет: Видимо СиШарп действительно может подмять под себя многих. А он действительно под себя всех гребёт. Вон уже и проекты есть крос платформенные:- Windows, Linux and OSX with experimental mobile support for Android and iOS. http://avaloniaui.net/ И тем более по доке вроде есть уже связка Advantage Database Server и C#: http://devzone.advantagedatabase.com/dz/webhelp/Advantage11.1/index.html?master_advantage_local_server.htm [pre2]The following is a simple example that connects to Advantage Database Server, runs a SELECT statement and prints the field values to the console. C# Example: // create a connection object AdsConnection conn = new AdsConnection( "data source=c:\\data;" + "ServerType=remote|local; TableType=ADT" ); AdsCommand cmd; AdsDataReader reader; int iField; .....[/pre2]


ММК: PSP пишет: Можно подробней? Что там происходит? Обычная рутина. Продолжают развивать FWH :) Добавили класс для использования с FW NET языков и , как частный случай си шарп. http://forums.fivetechsupport.com/viewtopic.php?f=3&t=35791&sid=5518dde37bd21dcdfa517c8dea6efebf

PSP: Ничего не скажешь... Мощно))

Andrey: ММК пишет: Добавили класс для использования с FW NET языков и , как частный случай си шарп. А исходник класса можно посмотреть ? Очень интересно. И кстати FW с этим классом каким компилятором собирают ?

ММК: Andrey пишет: А исходник класса можно посмотреть ? Можешь даже пользоваться Andrey пишет: И кстати FW с этим классом каким компилятором собирают ? Харбор, хХарбор, хХарбор комерческий Borland BCC 5.82 Borland BCC 7.0 Microsoft Visual C++ Microsoft Visual Studio Community 2015. MinGW gcc Для 64 FWH64 - FiveWin 64 for Harbour/xHarbour 64 bits Harbour and Microsoft C 64 Harbour and Borland 7.1 64 bits Это поставка.

Andrey: ММК пишет: Можешь даже пользоваться И где ? Можешь выложить исходник класса (включая си код) или прислать на почту ?

ММК: Andrey пишет: И где ? Можешь выложить исходник класса (включая си код) или прислать на почту ? Так у Линариса. У Вас должна быть ссылочка. Заранее благодарю - поделитесь со мной и Димой. Исходник не нужен , достаточно библиотеки.

SkyNET: ММК пишет: Добавили класс для использования с FW NET языков и , как частный случай си шарп. Я правильно понимаю, что этот класс доступен только обладателям платной лицензии FiveWin, поэтому в Open Source его ожидать не стоит? В примере, продемонстрированном Antonio Linares ничего сверхсложного нет, за один вечер сделал аналогичный пример под Harbour. Есть только одна очень существенная проблема - под BCC55 невозможно статически подключить библиотеку mscoree.lib необходимую для хостинга CLR, поэтому пришлось использовать MSVC. Похоже для BCC требуется компилировать весь CoreCLR. Интересно, как решили эту проблему в FiveWin? В любом случае, мой пример с подключением DLL к Harbour приложению прекрасно работает в том числе и под BCC. Как думаете, актуально ли писать полноценную обёртку над .NET в виде динамически подключаемой библиотеки? Примут ли её в основном репозитории Harbour?

ММК: SkyNET пишет: Я правильно понимаю, что этот класс доступен только обладателям платной лицензии FiveWin, поэтому в Open Source его ожидать не стоит? FW только платный и на несколько человек не дороже ,чем этой же компанией посидеть в ресторане SkyNET пишет: Интересно, как решили эту проблему в FiveWin? На этот вопрос ответит только разработчик или , как минимум , надо иметь возможность посмотреть исходники SkyNET пишет: Как думаете, актуально ли писать полноценную обёртку над .NET в виде динамически подключаемой библиотеки? А никто Вам на этот вопрос не ответит. Точнее - только Жизнь :)) На сегодняшний день есть харбор (FW) для линукса, андроида и т.д. , но это не актуально . Не развивается, практически не используется/ Другое дело если "актуально" заменить на "надо ли" . Конечно надо и полезно. А будет ли это актуально время рассудит :)

alkresin: Наверняка возможно. Надо подключить к C# клиентскую dll от LetoDb: letocl.dll. Как это сделать - информации в инете полно. Я недавно к Golang сделал такую библиотечку: https://github.com/alkresin/letogo. Не все еще готово, но использовать можно.

SkyNET: Написал полноценную библиотеку для вызова C# кода: https://github.com/NoTimeForHero/HarbourCLR Правда в ней на данный момент немало проблем, например отсутствует освобождение C# ресурсов после использования. Зато она умеет работать в том числе и с массивами. Все особенности описаны в README файле. Чтобы её использовать, нужно подключить clr.lib к Harbour проекту и поместить clrdyn.dll рядом с EXE/DLL компилируемого проекта. Загрузить эти два файла можно по этой ссылке, либо из раздела Release проекта на GitHub. Правда clr.lib скомпилирован под MSVC, для другого компилятора нужно вручную собрать проект из папки static_lib. Использование описано в этом примере. Есть ещё один простой пример с компиляцией под BCC.

alkresin: Хорошие новости! отсутствует освобождение C# ресурсов после использования Я практически незнаком с C#, но там ведь, кажется, автоматическая сборка мусора. И все-равно что-то надо руками освобождать?

SkyNET: alkresin пишет: все-равно что-то надо руками освобождать? Проблема в том, что C# не знает, когда эти объекты можно освобождать. Я возвращаю указатель на созданный при помощи оператора new класс-обёртку через hb_retptr. И не понимаю, как отловить событие, когда этот указатель более не используется внутри Harbour и его можно удалить. Вариант с hb_gcAllocate и hb_retptrGC не подходит, так как помимо очистки памяти нужно ещё и сообщить COM объектам, что они освобождены.



полная версия страницы