dates2.c | |||
Type | Function | Source | Line |
---|---|---|---|
BOOL | hb_isleapyear( int iYear )
BOOL hb_isleapyear( int iYear ) { HB_TRACE(HB_TR_DEBUG, ("hb_isleapyear(%d)", iYear)); return ( iYear % 4 == 0 && iYear % 100 != 0 ) || ( iYear % 400 == 0 ); } | dates2.c | 75 |
INT | hb_daysinmonth( int iYear, int iMonth )
int hb_daysinmonth( int iYear, int iMonth ) { HB_TRACE(HB_TR_DEBUG, ("hb_daysinmonth(%d, %d)", iYear, iMonth)); if( iMonth > 0 && iMonth < 13 ) return s_daysinmonth[ iMonth - 1 ] + ( ( iMonth == 2 && hb_isleapyear( iYear ) ) ? 1 : 0 ); else return 0; } | dates2.c | 82 |
INT | hb_doy( int iYear, int iMonth, int iDay )
int hb_doy( int iYear, int iMonth, int iDay ) { int i; int iDoy = 0; HB_TRACE(HB_TR_DEBUG, ("hb_doy(%d, %d, %d)", iYear, iMonth, iDay)); for( i = 1; i < iMonth; i++ ) iDoy += hb_daysinmonth( iYear, i ); return iDoy + iDay; } | dates2.c | 93 |
INT | hb_wom( int iYear, int iMonth, int iDay )
int hb_wom( int iYear, int iMonth, int iDay ) { int iWom; HB_TRACE(HB_TR_DEBUG, ("hb_wom(%d, %d, %d)", iYear, iMonth, iDay)); iWom = iDay + hb_dateDOW( iYear, iMonth, 1 ) - 1; if( iWom > 0 ) return ( iWom - hb_dateDOW( iYear, iMonth, iDay ) ) / 7 + 1; else return 0; } | dates2.c | 106 |
INT | hb_woy( int iYear, int iMonth, int iDay, BOOL bISO )
int hb_woy( int iYear, int iMonth, int iDay, BOOL bISO ) { int iWeek, n; HB_TRACE(HB_TR_DEBUG, ("hb_woy(%d, %d, %d, %d)", iYear, iMonth, iDay, (int) bISO)); iDay = hb_doy( iYear, iMonth, iDay ); n = ( ( ( 1 - ( bISO ? 1 : 0 ) ) % 7 ) ) - 1; iDay += ( n > 0 ) ? 1 : 0; iWeek = iDay / 7; if( bISO ) iWeek += ( n < 4 ) ? 1 : 0; else ++iWeek; return iWeek; } | dates2.c | 119 |
HB_FUNC | AMONTHS(void)
HB_FUNC( AMONTHS ) { PHB_ITEM pReturn = hb_itemArrayNew( 12 ); /* Create array */ int i; for( i = 0; i < 12; i++ ) { PHB_ITEM pString = hb_itemPutC( NULL, ( char * ) hb_langDGetItem( HB_LANG_ITEM_BASE_MONTH + i ) ); hb_itemArrayPut( pReturn, i+1, pString ); hb_itemRelease( pString ); } hb_itemReturn( pReturn ); hb_itemRelease( pReturn ); } | dates2.c | 137 |
HB_FUNC | ADAYS(void)
HB_FUNC( ADAYS ) { PHB_ITEM pReturn = hb_itemArrayNew( 7 ); /* Create array */ int i; for( i = 0; i < 7; i++ ) { PHB_ITEM pString = hb_itemPutC( NULL, ( char * ) hb_langDGetItem( HB_LANG_ITEM_BASE_DAY + i ) ); hb_itemArrayPut( pReturn, i + 1, pString ); hb_itemRelease( pString ); } hb_itemReturn( pReturn ); hb_itemRelease( pReturn ); } | dates2.c | 152 |
HB_FUNC | ISLEAPYEAR(void)
HB_FUNC( ISLEAPYEAR ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retl( hb_isleapyear( iYear ) ); } else hb_retl( FALSE ); } | dates2.c | 167 |
HB_FUNC | DAYSINMONTH(void)
HB_FUNC( DAYSINMONTH ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retni( hb_daysinmonth( iYear, iMonth ) ); } else hb_retni( 0 ); } | dates2.c | 182 |
HB_FUNC | EOM(void)
HB_FUNC( EOM ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retd( iYear, iMonth, hb_daysinmonth( iYear, iMonth ) ); } else hb_retdl( 0 ); } | dates2.c | 197 |
HB_FUNC | BOM(void)
HB_FUNC( BOM ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retd( iYear, iMonth, 1 ); } else hb_retdl( 0 ); } | dates2.c | 212 |
HB_FUNC | WOM(void)
HB_FUNC( WOM ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retni( hb_wom( iYear, iMonth, iDay ) ); } else hb_retni( 0 ); } | dates2.c | 227 |
HB_FUNC | DOY(void)
HB_FUNC( DOY ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retni( hb_doy( iYear, iMonth, iDay ) ); } else hb_retni( 0 ); } | dates2.c | 242 |
HB_FUNC | WOY(void)
HB_FUNC( WOY ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retni( hb_woy( iYear, iMonth, iDay, ISLOG( 2 ) ? hb_parl( 2 ) : TRUE ) ); } else hb_retni( 0 ); } | dates2.c | 259 |
HB_FUNC | EOY(void)
HB_FUNC( EOY ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retd( iYear, 12, 31 ); } else hb_retdl( 0 ); } | dates2.c | 274 |
HB_FUNC | BOY(void)
HB_FUNC( BOY ) { PHB_ITEM pDate = hb_param( 1, HB_IT_DATE ); if( pDate ) { int iYear, iMonth, iDay; hb_dateDecode( hb_itemGetDL( pDate ), &iYear, &iMonth, &iDay ); hb_retd( iYear, 1, 1 ); } else hb_retdl( 0 ); } | dates2.c | 289 |
hb_f.c | |||
Type | Function | Source | Line |
HB_FUNC | HB_FUSE(void)
HB_FUNC( HB_FUSE ) { PHB_ITEM arg1_it = hb_param( 1, HB_IT_STRING ); PHB_ITEM arg2_it = hb_param( 2, HB_IT_NUMERIC ); int open_flags; if ( arg1_it ) { if( arg2_it ) open_flags = hb_parni( 2 ); else open_flags = 0; handles[area] = hb_fsOpen( ( BYTE * ) hb_parc( 1 ), ( SHORT ) open_flags ); offset[area] = 0; recno[area] = 1; b = ( char * ) hb_xgrab( b_size ); c = ( char * ) hb_xgrab( c_size ); lastbyte[area] = hb_fsSeek( handles[ area ], 0L, FS_END ); isEof[area] = ( lastbyte[ area ] == 0 ); hb_retni( handles[ area ] ); } else { hb_fsClose( handles[area] ); hb_xfree( b ); hb_xfree( c ); hb_retni( 1 ); recno[area] = 0L; offset[area] = 0L; handles[area] = 0; last_rec[area] = 0L; last_off[area] = 0L; lastbyte[area] = 0L; isEof[area] = 0; } } | hb_f.c | 71 |
HB_FUNC | HB_FRECNO(void)
HB_FUNC( HB_FRECNO ) { hb_retnl( recno[ area ] ); } | hb_f.c | 109 |
STATIC LONG | hb_hbfskip( int recs )
static long hb_hbfskip( int recs ) { long read_pos; long read_len; long x, y; HB_TRACE(HB_TR_DEBUG, ("hb_hbskip(%d)", recs)); if ( recs > 0 ) { for (y = 0; y < recs; y++ ) { hb_fsSeek( handles[area], offset[area], FS_SET ); read_len = hb_fsRead( handles[area], ( BYTE * ) b, b_size ); for (x = 0; x < read_len; x++ ) { if ( ((*(b + x) == 13) && (*(b + x + 1) == 10)) || ((*(b + x) == 10) && (*(b + x + 1) == 13)) ) { break; } } if ( (offset[area] + x + 2) < lastbyte[area] ) { isEof[area] = FALSE; offset[area] += (x + 2); recno[area] += 1; } else isEof[area] = TRUE; } } else { recs = -recs; isEof[area] = FALSE; if ( (recno[area] - recs) < 1 ) return( 1 ); for (y = recs; y > 0; y-- ) { if ( offset[area] - b_size < 0L ) { read_pos = 0; read_len = (size_t)offset[area]; } else { read_pos = (size_t)(offset[area] - b_size); read_len = b_size; } hb_fsSeek( handles[area], read_pos, FS_SET ); read_len = hb_fsRead( handles[area], ( BYTE * ) b, ( USHORT )read_len ); for (x = read_len - 4; x >= 0; x-- ) { if ( ((*(b + x) == 13) && (*(b + x + 1) == 10)) || ((*(b + x) == 10) && (*(b + x + 1) == 13)) ) { break; } } if ( x < 0 ) { offset[area] = 0; recno[area] = 1; } else { offset[area] = read_pos + x + 2; recno[area]--; } } } return ( recno[area] ); } | hb_f.c | 115 |
HB_FUNC | HB_FSKIP(void)
HB_FUNC( HB_FSKIP ) { hb_hbfskip( ISNUM( 1 ) ? hb_parni(1) : 1 ); } | hb_f.c | 182 |
HB_FUNC | HB_FREADLN(void)
HB_FUNC( HB_FREADLN ) { int x; long read; hb_fsSeek( handles[area], offset[area], FS_SET ); read = hb_fsRead( handles[area], ( BYTE * ) b, b_size ); for ( x = 0; x < b_size; x++ ) { if ( ((*(b + x) == 13) && (*(b + x + 1) == 10)) || ((*(b + x) == 10) && (*(b + x + 1) == 13)) || (*(b + x) == 26) || ( x >= (int)read) ) { break; } } hb_retclen( b, x ); } | hb_f.c | 187 |
HB_FUNC | HB_FEOF(void)
HB_FUNC( HB_FEOF ) { hb_retl( isEof[area] ); } | hb_f.c | 206 |
HB_FUNC | HB_FGOTO(void)
HB_FUNC( HB_FGOTO ) { long target; long last; target = hb_parnl(1); if ( recno[area] > target ) { while ( recno[area] != target ) { last = recno[area]; hb_hbfskip(-1); if ( recno[area] == last ) break; } } else { while ( recno[area] != target ) { last = recno[area]; hb_hbfskip(1); if ( recno[area] == last ) break; } } } | hb_f.c | 211 |
HB_FUNC | HB_FGOBOTTOM(void)
HB_FUNC( HB_FGOBOTTOM ) { int x; int len; long loc, last; if ( last_rec[area] != 0 ) { recno[area] = last_rec[area]; offset[area] = last_off[area]; } else { loc = 0L; last = offset[area]; do { hb_fsSeek( handles[area], offset[area], FS_SET ); len = hb_fsRead( handles[area], ( BYTE * ) c, c_size ); for ( x = 0; x < len; x++ ) { if ( ((*(c + x) == 13) && (*(c + x + 1) == 10)) || ((*(c + x) == 10) && (*(c + x + 1) == 13)) || ( x - loc > b_size ) ) { last = offset[area] + loc; recno[area]++; x++; loc = x + 1; } } offset[area] += loc; } while ( len == c_size ); last_rec[area] = --recno[area]; last_off[area] = last; } } | hb_f.c | 236 |
HB_FUNC | HB_FGOTOP(void)
HB_FUNC( HB_FGOTOP ) { offset[area] = 0L; recno[area] = 1L; isEof[area] = (lastbyte[area] == 0); } | hb_f.c | 273 |
HB_FUNC | HB_FLASTREC(void)
HB_FUNC( HB_FLASTREC ) { long old_rec; long old_offset; int bIsEof; old_rec = recno[area]; old_offset = offset[area]; bIsEof = isEof[area]; HB_FUNC_EXEC( HB_FGOBOTTOM ); hb_retnl( last_rec[area] ); recno[area] = old_rec; offset[area] = old_offset; isEof[area] = bIsEof ; } | hb_f.c | 280 |
HB_FUNC | HB_FSELECT(void)
HB_FUNC( HB_FSELECT ) { hb_retni( area + 1 ); if ( ISNUM(1) ) area = hb_parni(1) - 1; } | hb_f.c | 298 |
HB_FUNC | HB_FINFO(void)
HB_FUNC( HB_FINFO ) /* used for debugging */ { hb_reta( 6 ); hb_storni( area+1, -1, 1); hb_storni( last_rec[area], -1, 2); hb_storni( recno[area], -1, 3); hb_storni( offset[area], -1, 4); hb_storni( lastbyte[area], -1, 5); hb_storl ( isEof[area], -1, 6); } | hb_f.c | 306 |
HB_FUNC | HB_FREADANDSKIP(void)
HB_FUNC( HB_FREADANDSKIP ) { /* ------------------------------------------------ Warning: This is a rogue function! It is a first shot at adding the logic to read .csv records that respect CRLF embedded within quotes. It is very common, especially with Microsoft products, for comma-separated files to allow a field (usually an address field) to have hard returns within it. These records appear corrupted to any reader that presumes all hard returns are record separators. This function is useful right now to loop through a CSV file while !hb_feof(), but it does NOT recognize the same record count and positioning that the other functions in this file use. It does its own skip and read, so an entire file can be read sequentially with just this function. -BH --------------------------------------------------*/ long x = 0; long read; BOOL bInField = 0, bHasCRLF = FALSE; hb_fsSeek( handles[area], offset[area], FS_SET ); read = hb_fsRead( handles[area], ( BYTE * ) b, b_size ); while ( x < read ) { if ( *(b + x) == '"' ) { bInField = !bInField ; x++; continue; } if ( bInField ) { x++; continue; } if( ((*(b + x) == 13) && x < read-1 && (*(b + x + 1) == 10)) || ((*(b + x) == 10) && x < read-1 && (*(b + x + 1) == 13)) ) { x += 2; bHasCRLF = TRUE; break; } x++; } offset[area] = offset[area] + x; recno[area] += 1; /* See if there's more to read */ if ( !isEof[area] ) isEof[area] = (lastbyte[area] <= offset[area] + 1) ; hb_retclen( b, x - (bHasCRLF ? 2 : 0) ); } | hb_f.c | 317 |
spd.c | |||
Type | Function | Source | Line |
STATIC VOID | STAItm( PHB_ITEM pItmPar )
static void STAItm( PHB_ITEM pItmPar ) { ULONG i, ulItmPar = hb_itemGetCLen( pItmPar ); char *cRes, *c, *cItmPar = hb_itemGetCPtr( pItmPar ); for( i = 3, c = cItmPar; *c; c++ ){ if( *c == '\'' ) i++; /* Count ' Tokens */ } cRes = (char *)hb_xgrab( ulItmPar + i * sizeof(char) ); i = 0; c = cItmPar; cRes[i++] = '\''; while( *c ){ if( *c == '\'' ) cRes[i++] = '\''; cRes[i++] = *c++; } cRes[i++] = '\''; /* cRes[i] = '\0'; */ hb_itemPutCLPtr( pItmPar, cRes, i ); } | spd.c | 58 |
STATIC ULONG | SCItm( char *cBuffer, ULONG ulMaxBuf, char *cParFrm, int iCOut, int IsIndW, int iIndWidth, int IsIndP, int iIndPrec, PHB_ITEM pItmPar )
static ULONG SCItm( char *cBuffer, ULONG ulMaxBuf, char *cParFrm, int iCOut, int IsIndW, int iIndWidth, int IsIndP, int iIndPrec, PHB_ITEM pItmPar ) { ULONG s; /* NOTE: In DJGPP (4.2.3) snprintf() will be preprocessed to sprintf(), which makes ulMaxBuf unused, and this in turn causes a warning, so we're manually suppressing it. [vszakats] */ #if defined(__DJGPP__) HB_SYMBOL_UNUSED( ulMaxBuf ); #endif if( IsIndW && IsIndP ){ switch( iCOut ){ case 'p': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iIndWidth, iIndPrec, hb_itemGetPtr( pItmPar ) ); break; case 's': case 'S': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iIndWidth, iIndPrec, hb_itemGetCPtr( pItmPar ) ); break; case 'e': case 'E': case 'f': case 'g': case 'G': case 'a': case 'A': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iIndWidth, iIndPrec, hb_itemGetND( pItmPar ) ); break; /* case 'c': case 'C': case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': */ default: s = snprintf( cBuffer, ulMaxBuf, cParFrm, iIndWidth, iIndPrec, (HB_IS_LONG( pItmPar ) ? hb_itemGetNL( pItmPar ) : hb_itemGetNI( pItmPar )) ); } }else if( IsIndW || IsIndP ){ int iInd = (IsIndW ? iIndWidth : iIndPrec); switch( iCOut ){ case 'p': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iInd, hb_itemGetPtr( pItmPar ) ); break; case 's': case 'S': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iInd, hb_itemGetCPtr( pItmPar ) ); break; case 'e': case 'E': case 'f': case 'g': case 'G': case 'a': case 'A': s = snprintf( cBuffer, ulMaxBuf, cParFrm, iInd, hb_itemGetND( pItmPar ) ); break; /* case 'c': case 'C': case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': */ default: s = snprintf( cBuffer, ulMaxBuf, cParFrm, iInd, (HB_IS_LONG( pItmPar ) ? hb_itemGetNL( pItmPar ) : hb_itemGetNI( pItmPar )) ); } }else{ switch( iCOut ){ case 'p': s = snprintf( cBuffer, ulMaxBuf, cParFrm, hb_itemGetPtr( pItmPar ) ); break; case 's': case 'S': s = snprintf( cBuffer, ulMaxBuf, cParFrm, hb_itemGetCPtr( pItmPar ) ); break; case 'e': case 'E': case 'f': case 'g': case 'G': case 'a': case 'A': s = snprintf( cBuffer, ulMaxBuf, cParFrm, hb_itemGetND( pItmPar ) ); break; /* case 'c': case 'C': case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': */ default: s = snprintf( cBuffer, ulMaxBuf, cParFrm, (HB_IS_LONG( pItmPar ) ? hb_itemGetNL( pItmPar ) : hb_itemGetNI( pItmPar )) ); } } return s; } | spd.c | 76 |
HB_FUNC | SQL_SPRINTF(void)
HB_FUNC( SQL_SPRINTF ) { ULONG ulItmFrm; char *cRes, *cItmFrm; int argc = hb_pcount() - 1; PHB_ITEM pItmFrm = hb_param( 1, HB_IT_STRING ); if( !pItmFrm || (cItmFrm = hb_itemGetCPtr( pItmFrm )) == NULL ){ hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, 1, hb_paramError( 1 ) ); }else if( (ulItmFrm = hb_itemGetCLen( pItmFrm )) == 0 ){ hb_retc( NULL ); }else if( !argc ){ cRes = (char *)hb_xgrab( ulItmFrm + sizeof(char) ); memcpy( cRes, cItmFrm, ulItmFrm + sizeof(char) ); hb_retclen_buffer( cRes, ulItmFrm ); }else{ PHB_ITEM pItmPar, pItmCpy; char *cIntMod, *cBuffer, *cParFrm, *c; int p, arg, iCOut, IsType, IsIndW, IsIndP, iIndWidth, iIndPrec, iErrorPar = 0; ULONG s, f, i, ulWidth, ulParPos = 0, ulResPos = 0, ulMaxBuf = DK_INCBUF, ulMaxRes = DK_INCRES; static char cToken[] = "stcdiouxXaAeEfgGpnSC"; cIntMod = NULL; cRes = (char *)hb_xgrab( ulMaxRes ); cBuffer = (char *)hb_xgrab( ulMaxBuf ); cParFrm = (char *)hb_xgrab( ulItmFrm + sizeof(char) ); for( p = 0; p < argc; /* Not p++ by support index & indirect arguments */ ){ c = cItmFrm + ulParPos; s = f = i = ulWidth = arg = iCOut = IsType = IsIndW = iIndWidth = IsIndP = iIndPrec = 0; do{ /* Get Par Format */ cParFrm[i++] = *c; if( f && *c == '%' ){ f = ulWidth = IsIndW = IsIndP = 0; }else if( f && !ulWidth && *c >= '0' && *c <= '9' ){ ulWidth = atol( c ); }else if( f && *c == '.' ){ if( f++ == 2 ) iErrorPar = 1; }else if( f && *c == '*' ){ if( f == 2 ){ if( IsIndP ){ f = 3; iErrorPar = 1; }else{ IsIndP = 1; } }else if( !IsIndW ){ IsIndW = 1; }else{ f = 3; iErrorPar = 1; } }else if( f && *c == '$' ){ if( ulWidth && IsIndP && !iIndPrec ){ iIndPrec = ulWidth; iCOut = '*'; }else if( ulWidth && IsIndW && !iIndWidth ){ iIndWidth = ulWidth; ulWidth = 0; iCOut = '*'; }else if( ulWidth && !arg ){ arg = ulWidth; ulWidth = 0; iCOut = '%'; }else{ f = 3; iErrorPar = 1; } while( i && cParFrm[--i] != iCOut ) {}; ++i; iCOut = 0; }else if( f && *c == '{' ){ if( s ){ f = 3; iErrorPar = 1; }else{ /* Remove Internal Modifier */ if( cIntMod == NULL ){ cIntMod = (char *)hb_xgrab( ulItmFrm + sizeof(char) ); } while( *c++ && *c != '}' ) cIntMod[s++] = *c; --i; cIntMod[s] = '\0'; if( *(c - 1) == '\0' ){ f = 3; iErrorPar = 1; } } }else if( f && strchr(cToken, *c) ){ f = 3; iCOut = *c; }else if( *c == '%' ){ f = 1; } c++; }while( f < 3 && *c ); cParFrm[f = i] = '\0'; if( iErrorPar ) break; if( iCOut == 't' ){ if( cParFrm[f - 2] == '%' ){ IsType = 1; iCOut = cParFrm[f - 1] = 's'; }else{ iErrorPar = 1; break; } } if( IsIndW ){ /* Get Par Indirectly Width Item */ pItmPar = hb_param( (iIndWidth ? iIndWidth + 1 : p++ + 2), HB_IT_INTEGER ); if( pItmPar ){ if( (iIndWidth = hb_itemGetNI( pItmPar )) < 0 ){ ulWidth = -iIndWidth; }else{ ulWidth = iIndWidth; } }else{ iErrorPar = 1; break; } } if( IsIndP ){ /* Get Par Indirectly Precision Item */ pItmPar = hb_param( (iIndPrec ? iIndPrec + 1 : p++ + 2), HB_IT_INTEGER ); if( pItmPar ){ iIndPrec = hb_itemGetNI( pItmPar ); }else{ iErrorPar = 1; break; } } if( !arg && *c && p == argc - 1 ){ /* No more Par Items */ do{ cParFrm[i++] = *c; }while( *c++ ); i--; } /* i == strlen(cParFrm) */ pItmPar = hb_param( (arg ? arg + 1 : p++ + 2), HB_IT_ANY ); /* Get Par Item */ if( !pItmPar ){ iErrorPar = 1; break; } if( !iCOut || iCOut == 'n' ){ /* Par Text Out */ for( f = i, i = 0; i < f; i++ ){ /* Change %% with % */ if( cParFrm[i] == '%' && cParFrm[i + 1] == '%' ){ memcpy( cParFrm + i, cParFrm + i + 1, f - i ); f--; } } /* i == strlen(cParFrm) */ if( iCOut ){ for( f = 0; f < i; f++ ){ /* Erase %n */ if( cParFrm[f] == '%' && cParFrm[f + 1] == 'n' ){ memcpy( cParFrm + f, cParFrm + f + 2, i - f - 1 ); break; } } /* f == Index % of n */ if( f < i ){ i -= 2; /* i == strlen(cParFrm) */ hb_itemPutNL( pItmPar, ulResPos + f ); }else{ iErrorPar = 1; break; } } if( (f = i + sizeof(char)) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } hb_strncpy( cBuffer, cParFrm, i ); s = i; }else{ /* Par Item sprintf() Out */ # ifdef HB_IT_NULL if( (HB_IS_NIL( pItmPar ) || HB_IS_NULL( pItmPar )) ){ # else if( HB_IS_NIL( pItmPar ) ){ # endif ulWidth = f; IsIndW = IsIndP = 0; while( cParFrm[--f] != '%' ) {}; iCOut = cParFrm[f + 1] = 's'; /* Change format with %s */ memcpy( cParFrm + f + 2, cParFrm + ulWidth, i - ulWidth + 1 ); i -= ulWidth - f - 2; /* i == strlen(cParFrm) */ if( (f = i + 5) > ulMaxBuf ){ /* size of "NULL" == 5 */ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } hb_itemCopy( pItmCpy = hb_itemNew( NULL ), pItmPar ); hb_itemPutCL( pItmCpy, "NULL", 4 ); s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmCpy ); hb_itemRelease( pItmCpy ); }else if( HB_IS_STRING( pItmPar ) && (iCOut == 's' || iCOut == 'S') ){ if( IsType ){ hb_itemCopy( pItmCpy = hb_itemNew( NULL ), pItmPar ); pItmPar = pItmCpy; STAItm( pItmPar ); } f = hb_itemGetCLen( pItmPar ); if( (f = i + HB_MAX(ulWidth, f)) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmPar ); if( IsType ) hb_itemRelease( pItmPar ); }else if( HB_IS_DATE( pItmPar ) && iCOut == 's' ){ char cDTBuf[ 19 ], cDTFrm[ 28 ]; /* 26 + 2 if %t and change format time */ if( s ){ /* Internal Modifier */ for( f = 0; cIntMod[f] && cIntMod[f] != ' '; f++ ) {}; if( f != s ) cIntMod[f++] = '\0'; /* Date & Time */ } # ifdef __XHARBOUR__ if( HB_IS_DATETIME( pItmPar ) ){ hb_datetimeFormat( hb_itemGetDTS( pItmPar, cDTBuf ), cDTFrm, (s ? cIntMod : (IsType ? "YYYY-MM-DD" : hb_setGetDateFormat())), (s ? cIntMod + f : "HH:MM:SS") ); if( s ){ if( !cIntMod[0] ){ memcpy( cDTFrm, cDTFrm + 1, 27 ); /* LTrim 1 space if only Time */ }else if( cDTFrm[s] == ' ' ){ cDTFrm[s] = '\0'; /* RTrim 1 space if only Date */ } } }else # endif hb_dateFormat( hb_itemGetDS( pItmPar, cDTBuf ), cDTFrm, (s ? cIntMod : (IsType ? "YYYY-MM-DD" : hb_setGetDateFormat())) ); if( (f = i + HB_MAX(ulWidth, 28)) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } hb_itemCopy( pItmCpy = hb_itemNew( NULL ), pItmPar ); hb_itemPutC( pItmCpy, cDTFrm ); if( IsType ) STAItm( pItmCpy ); s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmCpy ); hb_itemRelease( pItmCpy ); }else if( HB_IS_LOGICAL( pItmPar ) ){ if( s ){ /* Internal Modifier */ for( f = 0; cIntMod[f] && cIntMod[f] != ','; f++ ) {}; if( f != s ) cIntMod[f++] = '\0'; /* TRUE & FALSE */ } if( iCOut == 's' ){ hb_itemCopy( pItmCpy = hb_itemNew( NULL ), pItmPar ); pItmPar = pItmCpy; hb_itemPutC( pItmPar, (hb_itemGetL( pItmPar ) ? (s ? cIntMod : "TRUE") : (s ? cIntMod + f : "FALSE")) ); } if( (f = i + (iCOut == 's' ? HB_MAX(ulWidth, (s ? s : 6)) : HB_MAX(ulWidth, DK_BLKBUF))) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; /* size of "FALSE" == 6 */ cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmPar ); if( iCOut == 's' ) hb_itemRelease( pItmPar ); }else if( iCOut == 's' ){ char *cTrimStr, *cStr = hb_itemStr( pItmPar, NULL, NULL ); if( cStr ){ f = strlen( cStr ); cTrimStr = hb_strLTrim( cStr, &f ); if( (f = i + HB_MAX(ulWidth, f)) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } hb_itemCopy( pItmCpy = hb_itemNew( NULL ), pItmPar ); hb_itemPutCL( pItmCpy, cTrimStr, f ); s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmCpy ); hb_itemRelease( pItmCpy ); hb_xfree( cStr ); }else{ iErrorPar = p + 2; break; } }else if( HB_IS_NUMERIC( pItmPar ) || HB_IS_POINTER( pItmPar ) ){ if( (f = i + HB_MAX(ulWidth, DK_BLKBUF)) > ulMaxBuf ){ ulMaxBuf += f + DK_INCBUF; cBuffer = (char *)hb_xrealloc( cBuffer, ulMaxBuf ); } s = SCItm( cBuffer, ulMaxBuf, cParFrm, iCOut, IsIndW, iIndWidth, IsIndP, iIndPrec, pItmPar ); }else{ iErrorPar = p + 2; break; } } if( (f = s + ulResPos + sizeof(char)) > ulMaxRes ){ ulMaxRes += f + DK_INCRES; cRes = (char *)hb_xrealloc( cRes, ulMaxRes ); } hb_strncpy( cRes + ulResPos, cBuffer, s ); ulResPos += s; if( (ulParPos = c - cItmFrm) >= ulItmFrm ){ break; /* No more Par Format */ } } if( cIntMod ) hb_xfree( cIntMod ); hb_xfree( cParFrm ); hb_xfree( cBuffer ); if( iErrorPar ){ hb_xfree( cRes ); if( iErrorPar > 1 ){ hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, 2, hb_paramError( 1 ), hb_paramError( iErrorPar ) ); }else{ hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, HB_ERR_FUNCNAME, 1, hb_paramError( 1 ) ); } }else{ hb_retclen_buffer( cRes, ulResPos ); } } } | spd.c | 180 |
strfmt.c | |||
Type | Function | Source | Line |
HB_FUNC | STRFORMAT(void)
HB_FUNC( STRFORMAT ) { ULONG nParNum = hb_pcount(); if( nParNum >= 1 ) { char * pszMask = hb_parc( 1 ); ULONG nMaskLen = hb_parclen( 1 ); ULONG nMaskPos; ULONG nPos; ULONG nRetValLen; char * pszRetVal; char * pszRetValSave; STRPAR strpar[ HB_STRFORMAT_PARNUM_MAX_ ]; memset( &strpar, 0, sizeof( strpar ) ); nParNum--; if( nParNum > HB_STRFORMAT_PARNUM_MAX_ ) nParNum = HB_STRFORMAT_PARNUM_MAX_; /* Calculate length of return value */ nRetValLen = 0; for( nMaskPos = 0; nMaskPos < nMaskLen; nMaskPos++ ) { if( pszMask[ nMaskPos ] == '%' ) { nMaskPos++; if( pszMask[ nMaskPos ] == '%' ) nRetValLen++; else if( pszMask[ nMaskPos ] >= '1' && pszMask[ nMaskPos ] <= ( int )( nParNum + '0' ) ) { nPos = pszMask[ nMaskPos ] - '1'; strpar[ nPos ].raw = hb_itemString( hb_param( POS_TO_PAR( nPos ), HB_IT_ANY ), &strpar[ nPos ].ulLen, &strpar[ nPos ].bFreeReq ); /* AllTrim() */ strpar[ nPos ].ulLen = hb_strRTrimLen( strpar[ nPos ].raw, strpar[ nPos ].ulLen, FALSE ); strpar[ nPos ].buffer = hb_strLTrim( strpar[ nPos ].raw, &strpar[ nPos ].ulLen ); nRetValLen += strpar[ nPos ].ulLen; } } else nRetValLen++; } /* Assemble return value */ pszRetVal = pszRetValSave = ( char * ) hb_xgrab( nRetValLen + 1 ); for( nMaskPos = 0; nMaskPos < nMaskLen; nMaskPos++ ) { if( pszMask[ nMaskPos ] == '%' ) { nMaskPos++; if( pszMask[ nMaskPos ] == '%' ) *pszRetVal++ = pszMask[ nMaskPos ]; else if( pszMask[ nMaskPos ] >= '1' && pszMask[ nMaskPos ] <= ( int ) ( nParNum + '0' ) ) { nPos = pszMask[ nMaskPos ] - '1'; memcpy( pszRetVal, strpar[ nPos ].buffer, strpar[ nPos ].ulLen ); pszRetVal += strpar[ nPos ].ulLen; } } else *pszRetVal++ = pszMask[ nMaskPos ]; } hb_retclen_buffer( pszRetValSave, nRetValLen ); /* Free parameter buffers */ for( nPos = 0; nPos < HB_STRFORMAT_PARNUM_MAX_; nPos++ ) { if( strpar[ nPos ].raw && strpar[ nPos ].bFreeReq ) hb_xfree( strpar[ nPos ].raw ); } } else hb_retc_null(); } | strfmt.c | 70 |
stringsx.c | |||
Type | Function | Source | Line |
STATIC CONST CHAR | hb_strtoken(char *szText, long lText, long lIndex, char cDelimiter, long *lLen)
static const char *hb_strtoken(char *szText, long lText, long lIndex, char cDelimiter, long *lLen) { long wStart; long wEnd = 0; long wCounter = 0; HB_TRACE(HB_TR_DEBUG, ("hb_strtoken(%s, %ld, %ld, %d, %p)", szText, lText, lIndex, (int) cDelimiter, lLen)); do { wStart = wEnd; if( cDelimiter != ' ' ) { if( szText[wStart] == cDelimiter ) wStart++; } else { while( wStart < lText && szText[wStart] == cDelimiter ) wStart++; } if( wStart < lText && szText[wStart] != cDelimiter ) { wEnd = wStart + 1; while( wEnd < lText && szText[wEnd] != cDelimiter ) wEnd++; } else wEnd = wStart; } while( wCounter++ < lIndex - 1 && wEnd < lText ); if( wCounter < lIndex ) { *lLen = 0; return ""; } else { *lLen = wEnd - wStart; return szText + wStart; } } | stringsx.c | 9 |
HB_FUNC | STRTOKEN(void)
HB_FUNC( STRTOKEN ) { const char *szText; long lIndex = hb_parnl(2); char cDelimiter = *hb_parc(3); long lLen; if( !cDelimiter ) cDelimiter = ' '; szText = hb_strtoken(hb_parc(1), hb_parclen(1), lIndex, cDelimiter, &lLen); hb_stornl(lLen, 4); hb_retclen(szText, lLen); } | stringsx.c | 59 |
HB_FUNC | STRDUMP(void)
HB_FUNC( STRDUMP ) { char *szText = hb_parc(1); long i, lLength = hb_parclen(1); for( i = 0; i < lLength; i++ ) printf("%d ", szText[i]); printf("\n"); } | stringsx.c | 76 |
HB_FUNC | ROT13(void)
HB_FUNC( ROT13 ) { if( ISCHAR(1) ) { char *szText = hb_parc( 1 ); ULONG i, lLen = hb_parclen( 1 ); char *szResult = (char*)hb_xgrab(lLen + 1); for( i = 0; i < lLen; i++ ) { char c = szText[i]; if( (c >= 'A' && c <= 'M') || (c >= 'a' && c <= 'm') ) c += 13; else if( (c >= 'N' && c <= 'Z') || (c >= 'n' && c <= 'z') ) c -= 13; szResult[i] = c; } hb_retclen(szResult, lLen); hb_xfree(szResult); } else hb_retc(NULL); } | stringsx.c | 86 |
fileread.prg | |||
Type | Function | Source | Line |
METHOD | New( cFile, nSize )
METHOD New( cFile, nSize ) // Create a new class instance | fileread.prg | 34 |
METHOD | Open( nMode )
METHOD Open( nMode ) // Open the file for reading | fileread.prg | 35 |
METHOD | Close()
METHOD Close() // Close the file when done | fileread.prg | 36 |
METHOD | ReadLine()
METHOD ReadLine() // Read a line from the file | fileread.prg | 37 |
METHOD | Name()
METHOD Name() // Retunrs the file name | fileread.prg | 38 |
METHOD | IsOpen()
METHOD IsOpen() // Returns .T. if file is open | fileread.prg | 39 |
METHOD | MoreToRead()
METHOD MoreToRead() // Returns .T. if more to be read | fileread.prg | 40 |
METHOD | Error()
METHOD Error() // Returns .T. if error occurred | fileread.prg | 41 |
METHOD | ErrorNo()
METHOD ErrorNo() // Returns current error code | fileread.prg | 42 |
METHOD | ErrorMsg( cText )
METHOD ErrorMsg( cText ) // Returns formatted error message PROTECTED: | fileread.prg | 43 |
METHOD | EOL_pos()
METHOD EOL_pos() END CLASS | fileread.prg | 47 |
TFILEREAD:METHOD | New( cFile, nSize ) CLASS TFileRead
METHOD New( cFile, nSize ) CLASS TFileRead IF nSize == NIL .OR. nSize < 1 // The readahead size can be set to as little as 1 byte, or as much as // 65535 bytes, but venturing out of bounds forces the default size. nSize := oF_DEFAULT_READ_SIZE ENDIF ::cFile := cFile // Save the file name ::nHan := -1 // It's not open yet ::lEOF := .T. // So it must be at EOF ::nError := 0 // But there haven't been any errors ::nLastOp := oF_CREATE_OBJECT // Because we just created the class ::cBuffer := "" // and nothing has been read yet ::nReadSize := nSize // But will be in this size chunks RETURN Self | fileread.prg | 51 |
TFILEREAD:METHOD | Open( nMode ) CLASS TFileRead
METHOD Open( nMode ) CLASS TFileRead IF ::nHan == -1 // Only open the file if it isn't already open. IF nMode == NIL nMode := FO_READ + FO_SHARED // Default to shared read-only mode ENDIF ::nLastOp := oF_OPEN_FILE ::nHan := FOPEN( ::cFile, nMode ) // Try to open the file IF ::nHan == -1 ::nError := FERROR() // It didn't work ::lEOF := .T. // So force EOF ELSE ::nError := 0 // It worked ::lEOF := .F. // So clear EOF ENDIF ELSE // The file is already open, so rewind to the beginning. IF FSEEK( ::nHan, 0 ) == 0 ::lEOF := .F. // Definitely not at EOF ELSE ::nError := FERROR() // Save error code if not at BOF ENDIF ::cBuffer := "" // Clear the readahead buffer ENDIF RETURN Self | fileread.prg | 69 |
TFILEREAD:METHOD | ReadLine() CLASS TFileRead
METHOD ReadLine() CLASS TFileRead LOCAL cLine := "" LOCAL nPos ::nLastOp := oF_READ_FILE IF ::nHan == -1 ::nError := -1 // Set unknown error if file not open ELSE // Is there a whole line in the readahead buffer? nPos := ::EOL_pos() WHILE ( nPos <= 0 .OR. nPos > LEN( ::cBuffer ) - 3 ) .AND. !::lEOF // Either no or maybe, but there is possibly more to be read. // Maybe means that we found either a CR or an LF, but we don't // have enough characters to discriminate between the three types // of end of line conditions that the class recognizes (see below). cLine := FREADSTR( ::nHan, ::nReadSize ) IF EMPTY( cLine ) // There was nothing more to be read. Why? (Error or EOF.) ::nError := FERROR() IF ::nError == 0 // Because the file is at EOF. ::lEOF := .T. ENDIF ELSE // Add what was read to the readahead buffer. ::cBuffer += cLine cLine := "" ENDIF // Is there a whole line in the readahead buffer yet? nPos := ::EOL_pos() END WHILE // Is there a whole line in the readahead buffer? IF nPos <= 0 // No, which means that there is nothing left in the file either, so // return the entire buffer contents as the last line in the file. cLine := ::cBuffer ::cBuffer := "" ELSE // Yes. Is there anything in the line? IF nPos > 1 // Yes, so return the contents. cLine := LEFT( ::cBuffer, nPos - 1 ) ELSE // No, so return an empty string. cLine := "" ENDIF // Deal with multiple possible end of line conditions. DO CASE CASE SUBSTR( ::cBuffer, nPos, 3 ) == CHR( 13 ) + CHR( 13 ) + CHR( 10 ) // It's a messed up DOS newline (such as that created by a program // that uses "\r\n" as newline when writing to a text mode file, // which causes the '\n' to expand to "\r\n", giving "\r\r\n"). nPos += 3 CASE SUBSTR( ::cBuffer, nPos, 2 ) == CHR( 13 ) + CHR( 10 ) // It's a standard DOS newline nPos += 2 OTHERWISE // It's probably a Mac or Unix newline nPos++ ENDCASE ::cBuffer := SUBSTR( ::cBuffer, nPos ) ENDIF ENDIF RETURN cLine | fileread.prg | 97 |
TFILEREAD:METHOD | EOL_pos() CLASS TFileRead
METHOD EOL_pos() CLASS TFileRead LOCAL nCRpos, nLFpos, nPos // Look for both CR and LF in the file read buffer. nCRpos := AT( CHR( 13 ), ::cBuffer ) nLFpos := AT( CHR( 10 ), ::cBuffer ) DO CASE CASE nCRpos == 0 // If there's no CR, use the LF position. nPos := nLFpos CASE nLFpos == 0 // If there's no LF, use the CR position. nPos := nCRpos OTHERWISE // If there's both a CR and an LF, use the position of the first one. nPos := MIN( nCRpos, nLFpos ) ENDCASE RETURN nPos | fileread.prg | 164 |
TFILEREAD:METHOD | Close() CLASS TFileRead
METHOD Close() CLASS TFileRead ::nLastOp := oF_CLOSE_FILE ::lEOF := .T. // Is the file already closed. IF ::nHan == -1 // Yes, so indicate an unknown error. ::nError := -1 ELSE // No, so close it already! FCLOSE( ::nHan ) ::nError := FERROR() ::nHan := -1 // The file is no longer open ::lEOF := .T. // So force an EOF condition ENDIF RETURN Self | fileread.prg | 184 |
TFILEREAD:METHOD | Name() CLASS TFileRead
METHOD Name() CLASS TFileRead // Returns the filename associated with this class instance. RETURN ::cFile | fileread.prg | 202 |
TFILEREAD:METHOD | IsOpen() CLASS TFileRead
METHOD IsOpen() CLASS TFileRead // Returns .T. if the file is open. RETURN ::nHan != -1 | fileread.prg | 206 |
TFILEREAD:METHOD | MoreToRead() CLASS TFileRead
METHOD MoreToRead() CLASS TFileRead // Returns .T. if there is more to be read from either the file or the // readahead buffer. Only when both are exhausted is there no more to read. RETURN !::lEOF .OR. !EMPTY( ::cBuffer ) | fileread.prg | 210 |
TFILEREAD:METHOD | Error() CLASS TFileRead
METHOD Error() CLASS TFileRead // Returns .T. if an error was recorded. RETURN ::nError != 0 | fileread.prg | 215 |
TFILEREAD:METHOD | ErrorNo() CLASS TFileRead
METHOD ErrorNo() CLASS TFileRead // Returns the last error code that was recorded. RETURN ::nError | fileread.prg | 219 |
TFILEREAD:METHOD | ErrorMsg( cText ) CLASS TFileRead
METHOD ErrorMsg( cText ) CLASS TFileRead STATIC s_cAction := {"on", "creating object for", "opening", "reading from", "closing"} LOCAL cMessage, nTemp // Has an error been recorded? IF ::nError == 0 // No, so report that. cMessage := "No errors have been recorded for " + ::cFile ELSE // Yes, so format a nice error message, while avoiding a bounds error. IF ::nLastOp < oF_ERROR_MIN .OR. ::nLastOp > oF_ERROR_MAX nTemp := 1 ELSE nTemp := ::nLastOp + 1 ENDIF cMessage := iif( EMPTY( cText ), "", cText ) + "Error " + ALLTRIM( STR( ::nError ) ) + " " + s_cAction[ nTemp ] + " " + ::cFile ENDIF RETURN cMessage | fileread.prg | 223 |
nconvert.prg | |||
Type | Function | Source | Line |
FUNCTION | IsBin(cString)
FUNCTION IsBin(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) IF !(SubStr(cString,nX,1) $"01") lFlag:=.F. EXIT ENDIF NEXT nX RETURN(lFlag) | nconvert.prg | 53 |
FUNCTION | IsOctal(cString)
FUNCTION IsOctal(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"01234567") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) | nconvert.prg | 64 |
FUNCTION | IsDec(cString)
FUNCTION IsDec(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"0123456789") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) | nconvert.prg | 75 |
FUNCTION | IsHexa(cString)
FUNCTION IsHexa(cString) local nX,lFlag:=.t. cString:=AllTrim(cString) FOR nX:=1 to Len(cString) if !(SubStr(cString,nX,1) $"0123456789ABCDEF") lFlag:=.f. EXIT ENDIF NEXT nX RETURN(lFlag) | nconvert.prg | 86 |
FUNCTION | DecToBin(nNumber)
FUNCTION DecToBin(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%2) cNewString:=SubStr('01',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/2) ENDDO RETURN(cNewString) | nconvert.prg | 97 |
FUNCTION | DecToOctal(nNumber)
FUNCTION DecToOctal(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%8) cNewString:=SubStr('01234567',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/8) ENDDO RETURN(cNewString) | nconvert.prg | 107 |
FUNCTION | DecToHexa(nNumber)
FUNCTION DecToHexa(nNumber) local cNewString:='' local nTemp:=0 WHILE(nNumber > 0) nTemp:=(nNumber%16) cNewString:=SubStr('0123456789ABCDEF',(nTemp+1),1)+cNewString nNumber:=Int((nNumber-nTemp)/16) ENDDO RETURN(cNewString) | nconvert.prg | 117 |
FUNCTION | BinToDec(cString)
FUNCTION BinToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'01')-1)*; (2**(nLen-nX)) NEXT nX RETURN(nNumber) | nconvert.prg | 127 |
FUNCTION | OctalToDec(cString)
FUNCTION OctalToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'01234567')-1)*; (8**(nLen-nX)) NEXT nX RETURN(nNumber) | nconvert.prg | 137 |
FUNCTION | HexaToDec(cString)
FUNCTION HexaToDec(cString) local nNumber:=0,nX:=0 local cNewString:=AllTrim(cString) local nLen:=Len(cNewString) FOR nX:=1 to nLen nNumber+=(At(SubStr(cNewString,nX,1),'0123456789ABCDEF')-1)*; (16**(nLen-nX)) NEXT nX RETURN nNumber | nconvert.prg | 147 |
numtxten.prg | |||
Type | Function | Source | Line |
FUNCTION | NumToTxtEN( nValue )
FUNCTION NumToTxtEN( nValue ) LOCAL cRetVal := "" IF nValue == 0 RETURN "zero" ENDIF IF nValue < 0 nValue := -nValue cRetVal += "minus " ENDIF IF nValue >= 1000000 IF nValue >= 100000000 cRetVal += int_to_string( Int( nValue / 100000000 ) ) + " hundred " nValue -= 100000000 * Int( nValue / 100000000 ) ENDIF IF nValue >= 1000000 cRetVal += int_to_string( Int( nValue / 1000000 ) ) + " " nValue -= 1000000 * Int( nValue / 1000000 ) ENDIF cRetVal += "million " ENDIF IF nValue >= 1000 IF nValue >= 100000 cRetVal += int_to_string( Int( nValue / 100000 ) ) + " hundred " nValue -= 100000 * Int( nValue / 100000 ) ENDIF IF nValue >= 1000 cRetVal += int_to_string( Int( nValue / 1000 ) ) + " " nValue -= 1000 * Int( nValue / 1000 ) ENDIF cRetVal += "thousand " ENDIF IF nValue >= 100 cRetVal += int_to_string( Int( nValue / 100 ) ) + " hundred " nValue -= 100 * Int( nValue / 100 ) ENDIF IF nValue >= 1 cRetVal += int_to_string( Int( nValue ) ) nValue -= Int( nValue ) ENDIF RETURN RTrim( cRetVal ) | numtxten.prg | 10 |
STATIC FUNCTION | int_to_string( nValue )
STATIC FUNCTION int_to_string( nValue ) LOCAL cRetVal LOCAL aArray1 := {; "one" ,; "two" ,; "three" ,; "four" ,; "five" ,; "six" ,; "seven" ,; "eight" ,; "nine" ,; "ten" ,; "eleven" ,; "twelve" ,; "thirteen" ,; "fourteen" ,; "fifteen" ,; "sixteen" ,; "seventeen" ,; "eighteen" ,; "nineteen" } LOCAL aArray2 := {; "ten" ,; "twenty" ,; "thirty" ,; "forty" ,; "fifty" ,; "sixty" ,; "seventy" ,; "eighty" ,; "ninety" } IF nValue < 20 cRetVal := aArray1[ nValue ] ELSE cRetVal := aArray2[ Int( nValue / 10 ) ] nValue -= 10 * Int( nValue / 10 ) IF Int( nValue ) >= 1 cRetVal += " " + aArray1[ Int( nValue ) ] ENDIF ENDIF RETURN cRetVal | numtxten.prg | 55 |
numtxthu.prg | |||
Type | Function | Source | Line |
FUNCTION | NumToTxtHU( nValue )
FUNCTION NumToTxtHU( nValue ) LOCAL aTort := { "tized", "sz zad", "ezred", "t¡zezred", "sz zezred", "milliomod", "milli rdod" } LOCAL cRetVal LOCAL tmp, tmp1, tmp2 IF nValue < 0 nValue := -nValue cRetVal := "m¡nusz " ELSE cRetVal := "" ENDIF IF Int( nValue ) == 0 cRetVal += "nulla" ENDIF cRetVal += NumToTxtRaw( tmp := Int( nValue ) ) IF ( tmp := ( nValue - tmp ) ) > 0 .AND. tmp < 1 tmp1 := Len( tmp2 := SubStr( Str( tmp, 8, 6 ), 3 ) ) WHILE SubStr( tmp2, tmp1, 1 ) == "0" .AND. tmp1 > 0 tmp1-- ENDDO cRetVal += " eg‚sz " + NumToTxtRaw( tmp * ( 10 ^ tmp1 ) ) + iif( tmp1 >= 1 .AND. tmp1 <= Len( aTort ), " " + aTort[ tmp1 ], "" ) ENDIF RETURN cRetVal | numtxthu.prg | 53 |
STATIC FUNCTION | NumToTxtRaw( nValue )
STATIC FUNCTION NumToTxtRaw( nValue ) LOCAL aEgesz := { "", "ezer" , "milli¢", "milli rd", "billi¢" , "trilli¢", "kvadrilli¢", "kvintilli¢" } // , "szextilli¢", "szeptilli¢", "oktilli¢", "nontilli¢" } LOCAL aEgyes := { "", "egy" , "kett‹" , "h rom" , "n‚gy" , "”t" , "hat" , "h‚t" , "nyolc" , "kilenc" } LOCAL aTizes1 := { "", "t¡z" , "h£sz" , "harminc" , "negyven", "”tven" , "hatvan" , "hetven" , "nyolcvan" , "kilencven" } LOCAL aTizes2 := { "", "tizen", "huszon", "harminc" , "negyven", "”tven" , "hatvan" , "hetven" , "nyolcvan" , "kilencven" } LOCAL aDigit LOCAL nLen LOCAL cValue LOCAL tmp cValue := LTrim( Str( nValue, 20, 0 ) ) cValue := PadL( cValue, ( Int( Max( Len( cValue ) - 1, 0 ) / 3 ) + 1 ) * 3, "0" ) aDigit := Array( nLen := Len( cValue ) ) FOR tmp := 1 TO nLen aDigit[ tmp ] := Val( SubStr( cValue, tmp, 1 ) ) NEXT cValue := "" FOR tmp := 1 TO nLen - 2 STEP 3 IF aDigit[ tmp ] != 0 .OR. ; aDigit[ tmp + 1 ] != 0 .OR. ; aDigit[ tmp + 2 ] != 0 cValue += iif( Empty( cValue ), "", "-") +; iif( aDigit[ tmp ] != 0, aEgyes[ aDigit[ tmp ] + 1 ] + "sz z", "" ) +; iif( aDigit[ tmp + 2 ] == 0, aTizes1[ aDigit[ tmp + 1 ] + 1 ], aTizes2[ aDigit[ tmp + 1 ] + 1 ] ) +; aEgyes[ aDigit[ tmp + 2 ] + 1 ] +; aEgesz[ ( Int( ( nLen - tmp ) / 3 ) ) + 1 ] ENDIF NEXT RETURN cValue | numtxthu.prg | 84 |
stringp.prg | |||
Type | Function | Source | Line |
FUNCTION | Default( xArg, xDef )
function Default( xArg, xDef ) return iif( ValType(xArg) != ValType(xDef), xDef, xArg ) | stringp.prg | 59 |
FUNCTION | ToChar( xTxt, cSeparator, lDebug )
function ToChar( xTxt, cSeparator, lDebug ) local cValTxt local cOut local n local nLen local aData cSeparator := Default( cSeparator, " " ) lDebug := Default( lDebug, .F. ) cValTxt := ValType( xTxt ) do case case cValTxt=="C" .or. cValTxt=="M" // Character cOut := iif( lDebug, '"'+xTxt+'"', xTxt ) case cValTxt=="N" // Numeric cOut := Alltrim(Str(xTxt)) case cValTxt=="U" // Nothing to write cOut := iif( lDebug, "NIL", "" ) case cValTxt=="D" // Date cOut := TransForm(xTxt, "") case cValTxt=="L" // Logical if lDebug cOut := iif( xTxt, ".T.", ".F." ) else cOut := iif( xTxt, "True", "False" ) endif case cValTxt=="A" // Array if lDebug cOut := "{" else cOut := "" endif nLen := Len( xTxt ) for n := 1 to nLen // For each item : Recurse ! cOut += ToChar( xTxt[n], cSeparator, lDebug ) if n != nLen cOut += cSeparator endif next n if lDebug cOut += "}" endif case cValTxt=="B" // Codeblock if lDebug cOut := "Block" else cOut := Eval( xTxt ) endif case cValTxt=="O" // Object if lDebug cOut := xTxt:ClassName() + "(#" + ToChar( xTxt:ClassH() ) + "):{" aData := __objGetValueList( xTxt ) nLen := Len( aData ) for n := 1 to nLen // For each item : Recurse ! cOut += aData[n][HB_OO_DATA_SYMBOL] + ":" + ; ToChar( aData[n][HB_OO_DATA_VALUE], cSeparator, lDebug ) if n != nLen cOut += cSeparator endif next n cOut += "}" else cOut := ToChar( xTxt:Run(), cSeparator, lDebug ) endif endcase return cOut | stringp.prg | 85 |
FUNCTION | Debug( xItem )
function Debug( xItem ) QOut( ToChar( xItem, ", ", .T. ) ) return xItem | stringp.prg | 168 |
twirler.prg | |||
Type | Function | Source | Line |
CLASS | Twirler
class Twirler var n_Row var n_Col var n_Index var n_Seconds var n_Smooth var c_Chars var c_Title method new( nRow, nCol, cTitle, cChars ) method twirl() method show() method hide() end class | twirler.prg | 13 |
TWIRLER:METHOD | new( nRow, nCol, cTitle, cChars, nSmooth ) class Twirler
method new( nRow, nCol, cTitle, cChars, nSmooth ) class Twirler ::n_Row := nRow ::n_Col := nCol ::n_Smooth := nSmooth ::c_Chars := iif( EMPTY( cChars ), "|/-\", cChars ) ::c_Title := cTitle IF EMPTY( ::c_Title ) ::c_Title := "" END IF ::n_Col += LEN( ::c_Title ) return Self | twirler.prg | 27 |
TWIRLER:METHOD | twirl() class Twirler
method twirl() class Twirler local nSeconds := SECONDS() IF EMPTY( ::n_Seconds ) .OR. nSeconds - ::n_Seconds >= ::n_Smooth .OR. nSeconds < ::n_Seconds @ ::n_Row, ::n_Col SAY SUBSTR( ::c_Chars, ::n_Index, 1 ) ::n_Index++ if ::n_Index > LEN( ::c_Chars ) ::n_Index := 1 end if IF !EMPTY( ::n_Seconds ) ::n_Seconds := nSeconds END IF END IF return Self | twirler.prg | 39 |
TWIRLER:METHOD | show() class Twirler
method show() class Twirler ::n_Index := 1 IF ! EMPTY( ::n_Smooth ) ::n_Seconds := -::n_Smooth END IF @ ::n_Row, ::n_Col - LEN( ::c_Title ) SAY ::c_Title return Self | twirler.prg | 53 |
TWIRLER:METHOD | hide() class Twirler
method hide() class Twirler @ ::n_Row, ::n_Col - LEN( ::c_Title ) SAY SPACE( LEN( ::c_Title ) + 1 ) return Self | twirler.prg | 61 |
Page url: http://www.yourdomain.com/help/index.html?hbmisc.htm