Форум » [x]Harbour » Замена функций для хХарбора » Ответить

Замена функций для хХарбора

Andrey: Пытаюсь прикрутить часть функций для хХарбора из Харброра - _LogFile() Нужны функции HB_DEFAULTVALUE и HB_TSTOSTR Есть ли аналог в хХарборе ? Если нет, то как их можно заменить ?

Ответов - 8

gfilatov2002: Andrey пишет: Нужны функции HB_DEFAULTVALUE() и HB_TSTOSTR Есть ли аналог в хХарборе ? Если нет, то как их можно заменить ? Для функции HB_DEFAULTVALUE можно использовать такое определение #xtranslate hb_defaultValue( <v>, <x> ) => iif( StrTran( ValType( <v> ), "M", "C" ) == StrTran( ValType( <x> ), "M", "C" ), <v>, <x> ) Функция HB_TSTOSTR() есть в хХарборе

Andrey: gfilatov2002 пишет: Для функции HB_DEFAULTVALUE можно использовать такое определение Спасибо БОЛЬШОЕ ! Получилось ! gfilatov2002 пишет: Функция HB_TSTOSTR() есть в хХарборе В новой версии может и есть, но я использую - xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903) Не хочу переходить на новую. А в ней нет. Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии ?

Dima: Andrey пишет: Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии ? Скачать новую версию и дёрнуть от туда кусок кода , не судьба ?


gfilatov2002: Andrey пишет: Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии См. ниже. [pre]#include <ctype.h> #include "hbapi.h" #include "hbapierr.h" #include "hbapiitm.h" #include "hbset.h" #include "hbdate.h" HB_FUNC( HB_TSTOSTR ) { long lDate, lTime; if( hb_partdt( &lDate, &lTime, 1 ) ) { char szBuffer[ 24 ]; hb_dateTimeStampStr( szBuffer, lDate, lTime ); if( hb_parl( 2 ) ) { if( lTime == 0 ) { if( lDate == 0 ) hb_retc_const( "00:00" ); else hb_retclen( szBuffer, 10 ); } else { int i = 23; while( szBuffer[ i - 1 ] == '0' ) --i; if( szBuffer[ i - 1 ] == '.' ) { --i; if( szBuffer[ i - 1 ] == '0' && szBuffer[ i - 2 ] == '0' ) i -= 3; } if( lDate == 0 ) hb_retclen( szBuffer + 11, i - 11 ); else hb_retclen( szBuffer, i ); } } else hb_retclen( szBuffer, 23 ); } else hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } [/pre]

Andrey: gfilatov2002 пишет: См. ниже. Спасибо БОЛЬШОЕ !

Andrey: gfilatov2002 пишет: См. ниже. Что-то не собирается... Выдаёт ошибку:[pre2] HbMake v1.30 - xHarbour Make Utility Copyright (C) 2000-2013 xHarbour project - http://www.xharbour.org _stddef.h(54) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"32 bit) _stddef.h(73) Error E0030 Syntax error: "syntax error at 'INT'" _stddef.h(83) Error E0030 Syntax error: "syntax error at 'UNSIGNED'" _stddef.h(93) Error E0030 Syntax error: "syntax error at 'WCHAR_T'" _stddef.h(102) Error E0030 Syntax error: "syntax error at 'WCHAR_T'" _stddef.h(109) Error E0030 Syntax error: "syntax error at 'LONG'" mbctype.h(35) Error E0030 Syntax error: "syntax error at 'CHAR'" mbctype.h(57) Error E0030 Syntax error: "syntax error at '__CDECL'" mbctype.h(66) Error E0030 Syntax error: "syntax error at '__CDECL'" mbctype.h(73) Error E0030 Syntax error: "syntax error at '__CDECL'" ctype.h(52) Error E0030 Syntax error: "syntax error at 'SHORT'" ctype.h(65) Error E0030 Syntax error: "syntax error at '__CDECL'" ctype.h(78) Error E0030 Syntax error: "syntax error at '__CDECL'" ctype.h(79) Error E0030 Syntax error: "syntax error at '}'"[/pre2]

Andrey: Да фиг с этой функцией. В xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903) даже нет HB_DATETIME() Так что не нужна работа со временем.

SergKis: Andrey пишет даже нет HB_DATETIME() Можно так делать [pre2] FUNCTION bk_DateTime() // всегда строка RETURN DtoS(Date())+StrTran(Time(), ":", "")+right(hb_ntos(BK_MILLISECONDS()), 3) #pragma BEGINDUMP #define HB_OS_WIN_USED #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" #include "hbapirdd.h" #include "hbrdddbf.h" #include "hbapicdp.h" #include "hbvm.h" #include "hbapifs.h" #include "hbdate.h" #include "hb_io.h" HB_FUNC( BK_MILLISECONDS ) { hb_retnint( (HB_LONG) hb_dateMilliSeconds() ); } #pragma ENDDUMP [/pre2] или использовать Seconds() (последние 3-и знака) вместо BK_MILLISECONDS, добавляя перед ними точку Работает так в сервере LetoDb 1.0 версии (в триггере на сервере) с 2011 года PS без точки лучше, т.к. вывод через cDate := "20210325234515123" Transform(cDate, "@R 9999-99-99 99:99:99.999")



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