2008-11-09 14:02 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* make_vc.mak
+ Added /nxcompat linker flag for non-WinCE, non-DLL,
HB_VISUALC_VER >= 80 MSVC executables.
This should add extra safety.
* include/hbextern.ch
* source/rtl/rat.c
+ Added HB_RAT() which is similar to RAT(), but also accepts
<nStart> and <nEnd> optional paramaters, similarly to HB_AT().
; Please test.
* source/rtl/at.c
* Minor formatting.
This commit is contained in:
@@ -8,6 +8,21 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2008-11-09 14:02 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
* make_vc.mak
|
||||
+ Added /nxcompat linker flag for non-WinCE, non-DLL,
|
||||
HB_VISUALC_VER >= 80 MSVC executables.
|
||||
This should add extra safety.
|
||||
|
||||
* include/hbextern.ch
|
||||
* source/rtl/rat.c
|
||||
+ Added HB_RAT() which is similar to RAT(), but also accepts
|
||||
<nStart> and <nEnd> optional paramaters, similarly to HB_AT().
|
||||
; Please test.
|
||||
|
||||
* source/rtl/at.c
|
||||
* Minor formatting.
|
||||
|
||||
2008-11-09 13:16 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/vm/memvars.c
|
||||
! fixed 3 tracelog messages
|
||||
|
||||
@@ -1107,6 +1107,7 @@ EXTERNAL HB_LANG_ZHB5
|
||||
EXTERNAL HB_LANG_ZHGB
|
||||
|
||||
EXTERNAL HB_AT
|
||||
EXTERNAL HB_RAT
|
||||
EXTERNAL HB_AINS
|
||||
EXTERNAL HB_ADEL
|
||||
EXTERNAL HB_ASCAN
|
||||
|
||||
@@ -163,21 +163,24 @@ CEXEFLAGSDLL = $(CEXEFLAGSDLL) -MT$(DBGMARKER)
|
||||
|
||||
# Linker Flags
|
||||
!if "$(HB_BUILD_WINCE)" == "yes"
|
||||
LDFLAGS = /nologo /subsystem:windowsce,4.20 /machine:ARM /armpadcode \
|
||||
LDFLAGS = /nologo /subsystem:windowsce,4.20 /machine:arm /armpadcode \
|
||||
/stack:65536,4096 /nodefaultlib:"oldnames.lib" \
|
||||
/nodefaultlib:"kernel32.lib" /align:4096 /opt:REF /opt:ICF \
|
||||
/nodefaultlib:"kernel32.lib" /align:4096 /opt:ref /opt:icf \
|
||||
/libpath:$(LIB_DIR) $(L_USR)
|
||||
!if $(HB_VISUALC_VER) >= 80
|
||||
LDFLAGS = $(LDFLAGS) /manifest:NO
|
||||
LDFLAGS = $(LDFLAGS) /manifest:no
|
||||
!endif
|
||||
LDFLAGSDLL = /dll \
|
||||
/nologo /subsystem:WINDOWSCE,4.20 /machine:ARM /armpadcode \
|
||||
/nologo /subsystem:windowsce,4.20 /machine:arm /armpadcode \
|
||||
/stack:65536,4096 /nodefaultlib:"oldnames.lib" \
|
||||
/libpath:$(LIB_DIR) $(L_USR)
|
||||
STANDARD_SYSLIBS = coredll.lib corelibc.lib winsock.lib ws2.lib
|
||||
!else
|
||||
LDFLAGS = /nologo /libpath:$(LIB_DIR) $(L_USR)
|
||||
LDFLAGSDLL = /dll $(LDFLAGS)
|
||||
!if $(HB_VISUALC_VER) >= 80
|
||||
LDFLAGS = $(LDFLAGS) /nxcompat /dynamicbase /fixed:no
|
||||
!endif
|
||||
# user32.lib: *Clipboard*(), CharToOemBuff(), OemToCharBuff(), GetKeyState(), GetKeyboardState(), SetKeyboardState()
|
||||
# wsock32.lib: hbinet
|
||||
# advapi32.lib: GetUserName()
|
||||
|
||||
@@ -78,7 +78,7 @@ HB_FUNC( HB_AT )
|
||||
ulPos = hb_strAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ),
|
||||
hb_itemGetCPtr( pText ) + ulStart - 1, ulEnd - ulStart + 1 );
|
||||
|
||||
if( ulPos > 0)
|
||||
if( ulPos > 0 )
|
||||
ulPos += ( ulStart - 1 );
|
||||
|
||||
hb_retnl( ulPos );
|
||||
|
||||
@@ -83,3 +83,58 @@ HB_FUNC( RAT )
|
||||
hb_retni( 0 );
|
||||
}
|
||||
|
||||
HB_FUNC( HB_RAT )
|
||||
{
|
||||
ULONG ulSubLen = hb_parclen( 1 );
|
||||
|
||||
if( ulSubLen )
|
||||
{
|
||||
long lPos = hb_parclen( 2 ) - ulSubLen;
|
||||
|
||||
if( lPos >= 0 )
|
||||
{
|
||||
char * pszSub = hb_parc( 1 );
|
||||
char * pszText = hb_parc( 2 );
|
||||
BOOL bFound = FALSE;
|
||||
long lStart;
|
||||
|
||||
if( ISNUM( 3 ) )
|
||||
{
|
||||
lStart = hb_parnl( 3 );
|
||||
if( lStart >= 1 )
|
||||
--lStart;
|
||||
else
|
||||
lStart = 0;
|
||||
}
|
||||
else
|
||||
lStart = 0;
|
||||
|
||||
if( ISNUM( 4 ) )
|
||||
{
|
||||
long lEnd = hb_parnl( 4 );
|
||||
|
||||
if( lEnd >= 1 )
|
||||
{
|
||||
--lEnd;
|
||||
|
||||
if( lEnd < lPos )
|
||||
lPos = lEnd;
|
||||
}
|
||||
}
|
||||
|
||||
while( lPos >= lStart && !bFound )
|
||||
{
|
||||
if( *( pszText + lPos ) == *pszSub )
|
||||
bFound = ( memcmp( pszSub, pszText + lPos, ulSubLen ) == 0 );
|
||||
lPos--;
|
||||
}
|
||||
|
||||
hb_retnl( bFound ? lPos + 2 : 0 );
|
||||
}
|
||||
else
|
||||
hb_retni( 0 );
|
||||
}
|
||||
else
|
||||
/* This function never seems to raise an error */
|
||||
hb_retni( 0 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user