Автор | Сообщение |
|
| постоянный участник
|
Пост N: 7280
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.23 18:16. Заголовок: Замена функций для хХарбора
Пытаюсь прикрутить часть функций для хХарбора из Харброра - _LogFile() Нужны функции HB_DEFAULTVALUE и HB_TSTOSTR Есть ли аналог в хХарборе ? Если нет, то как их можно заменить ?
|
|
|
Ответов - 8
[только новые]
|
|
|
| moderator
|
Пост N: 2087
Зарегистрирован: 11.02.10
|
|
Отправлено: 31.01.23 21:33. Заголовок: Andrey пишет: Нужны..
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() есть в хХарборе
|
|
|
|
| постоянный участник
|
Пост N: 7281
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.23 21:55. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для функции HB_DEFAULTVALUE можно использовать такое определение |
| Спасибо БОЛЬШОЕ ! Получилось ! gfilatov2002 пишет: цитата: | Функция HB_TSTOSTR() есть в хХарборе |
| В новой версии может и есть, но я использую - xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903) Не хочу переходить на новую. А в ней нет. Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии ?
|
|
|
|
| |
Пост N: 7740
Зарегистрирован: 17.05.05
|
|
Отправлено: 31.01.23 22:02. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии ? |
| Скачать новую версию и дёрнуть от туда кусок кода , не судьба ?
|
|
|
|
| moderator
|
Пост N: 2088
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.02.23 12:17. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может есть у кого кусок кода функции HB_TSTOSTR() из новой версии |
| См. ниже. #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 ); }
|
|
|
|
| постоянный участник
|
Пост N: 7282
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.23 15:03. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо БОЛЬШОЕ !
|
|
|
|
| постоянный участник
|
Пост N: 7284
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.02.23 18:31. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Что-то не собирается... Выдаёт ошибку: 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 '}'"
|
|
|
|
| постоянный участник
|
Пост N: 7285
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.02.23 18:51. Заголовок: Да фиг с этой функци..
Да фиг с этой функцией. В xHarbour 1.2.3 Intl. (SimpLex) (Build 20130903) даже нет HB_DATETIME() Так что не нужна работа со временем.
|
|
|
|
| постоянный участник
|
Пост N: 4200
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.02.23 19:28. Заголовок: Andrey пишет даже не..
Andrey пишет Можно так делать Скрытый текст
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
| или использовать Seconds() (последние 3-и знака) вместо BK_MILLISECONDS, добавляя перед ними точку Работает так в сервере LetoDb 1.0 версии (в триггере на сервере) с 2011 года PS без точки лучше, т.к. вывод через cDate := "20210325234515123" Transform(cDate, "@R 9999-99-99 99:99:99.999")
|
|
|
|