Navigation:  »No topics above this level«

ChangeLog

Return to chapter overviewNext page

Build 001.005.003.176                (Changes from Build 001.005.003.126)

Workaround:

 

Hooks the function _parclen() from xpprt1.dll fixing a bug that can cause a IDSC and unwanted

behaviors when the parameter is not provided to the xbase funcion.

The issue is automatically fixed when ot4xb.dll is loaded.

xpprt, xppui, foxdbe,cdxbde,and the xbtools DLLs will not need this fix, but if you use 3pp

DLLs, you should use it. On the other hand the fix in ot4xb.dll will add a minimal overhead (

just a few CPU cycles when _parclen() is called ), so it you can use it every time - until Xbase++ is fixed.

 

Enhancement:

PeekStr(<pMem>,[[@]<nShift>],-2) -> <cUnicodeStr>

       Using -2 as the third param retrieves an unicode \0\0 terminated string

--------------------------------

New Function:

cPathChangeExt( <cFilename> , <cNewExt> )

 

Build 001.005.003.126                (Changes from Build 001.005.002.204)

New Functions:

 

OT4XB_SINGLE_INSTANCE(cUniqueId,oAppHandler,aParams) -> lAlreadyRunning  // New Funcion

 

DELEGATED_EVAL(bBlock, ... params ... ) - Eval a codeblock at the GUI thread

PeekFloat()

PokeFloat()

aSplitTxtLines()

lPathIsRelative()

 

Enhancement:

DELEGATED_FPQCALL() - Improved

 

cPrintf( cFmt , ...params... ) // Standard behavior

cPrintf( NIL , cFmt , ...params... ) // Parse some embedded escape sequences in cFmt

       \xnn  // Hex character  

       \dnnn // dec character    // ot4xb extension

       \q    //  Double Quote    // ot4xb extension

       \a    //  Bell

       \b    //  Backspace

       \f    //  Formfeed

       \n    //  New line

       \r    //  Carriage return

       \t    //  Horizontal tab

       \v    //  Vertical tab

       \\    //  Backslash

 

Fixed:

PeekDouble() - Bug Fixed ( truncated return value)

 

 

Build 001.005.002.204                (Changes from Build 001.005.002.152)

Enhancement:

cPrintf() function now has no character limit

 

 

Build 001.005.002.152                (Changes from Build 001.005.002.139)

New Functions:

Delegated_FpQCall()

ot4xb_Register_Delegate_hWnd()

 

 

Build 001.005.002.139                (Changes from Build 001.005.002.079)

New Functions:

SET_FPCALL_FLAGS()

 

Enhancement:

 

New behavior for functions:

nFpCall(), ndFpCall(), qwFpCall() , FpQCall() and

DLL...IMPORT and @dllname:function() commands

 

Preprocessor FIXED :

Conflict with the .NOT. operator and the WITH OBJECT commands ( Thanks to Andreas Gehrs-Pahl )

Some expresions like this:

       if .not. ::lOk

was wrongly preprocessed to

       if .notWithObjectStackTop:lOk

 

Really seems to be an Xbase++ preprocessor bug as this only occurs for the .not. operator

while .and. .or. operators was not affected

 

In any case this is NOW FIXED with a small workaround added inside ot4xb.ch

 

Compatibility ISSUE FIXED

ot4xb.ch conflict with Thomas Braun's regclass.ch ( Thanks to Jimmy ( AUGE_OHR) )

Both ot4xb.ch and RegClass.ch uses some #defines from the winapi so the preprocessor

report some warnings like this

 

       warning XBT0110: Redefinition or duplicate definition of

       #define  STANDARD_RIGHTS_READ

 

Currently added some #ifndef inside ot4xb.ch to avoid these warnings, however you must

include RegClass.ch before ot4xb.ch

 

 

Build 001.005.002.079                (Changes from Build 001.005.002.054)

New Functions:

cUuidCreateName()

 

BUG FIX:

Reduced the number of collisions in cGenRndStr()

 

 

Build 001.005.002.054                (Changes from Build 001.005.002.002)

New Functions:

cGenRndStr()

cFmtResMsg()

cFmtStrMsg()

cFmtSysMsg()

MakeLangId()

 

 

MD5 Functions:

 

  MD5 Functions ... ready to use:

Str2Md5Bin()

Str2Md5Hex()

File2Md5Bin()

File2Md5Hex()

hFile2Md5Bin()

hFile2Md5Hex()

 

  MD5 Functions ... step by step:

_MD5_Destroy()

_MD5_Finalize()

_MD5_Getbin()

_MD5_Gethex()

_MD5_Hfile()

_MD5_New()

_MD5_Str()

 

 

Hash Table Functions:

_HDICT_New()

_HDICT_SetProp()

_HDICT_GetProp()

_HDICT_RemoveProp()

_HDICT_RemoveAll()

_HDICT_Destroy()                      

_HDICT_Count()

_HDICT_Iterate_Cb()

_HDICT_Iterate_Step()

_HDICT_Key_Compare()

_HDICT_AddPropFromArray()          // virtual . pending to implement

 

 

Build 001.005.002.002                (Changes from Build 001.002.109)

New PRG functions:

cPrintf()                        // not documented yet

cOemToUtf8()

cAnsiToUtf8()

cUtf8ToAnsi()

cUtf8ToOem()

Array2ppMarshall()        // prepare a pointer to the strings in the array.

ppMarshall2Array()        // get the info back.

cDw2Bits()

cQw2Hex()

FPPQCALL()                // Experimental DO not use. pending to fix or remove

FPPQPREPARE()        // Experimental DO not use. pending to fix or remove

FpQCall()

GetCurrentProcessHandle()

lCopyFile()

lDiskReady()

lFreeLibrary()

lIsVista()

lMemoWrite()

lSendLogStr()

lSendLogStrFL()

lStrWildCmp()

lWriteLogLine()

MkScStr()

nBits2Dw()

nFpGet()

nHex2Qw()

nLoadLibrary()

ot4xb_CreateGenericWindow()

ot4xb_lSendLogStr()

ot4xb_lSendLogstrFL()

ot4xb_SubclassWindow()

PeekDWordNet()

PeekWordNet()

PeekWStr()

PokeDWordNet()

PokeWordNet()

pt2gp()

QFpGetLastPointer()

QFpSetLastPointer()

Type2EmptyValue()

WithObjectStackCount()        // support functions for the WITH OBJECT command

WithObjectStackPop()            // support functions for the WITH OBJECT command

WithObjectStackPush()                // support functions for the WITH OBJECT command

WithObjectStackTop()                // support functions for the WITH OBJECT command

_DummyStdCbk()

 

Internal:

_GWST_XBSETGET_BINSTR_()              // internal

_GWST_XBSETGET_BOOL_()                    // internal

_GWST_XBSETGET_BYTEBOOL_()          // internal

_GWST_XBSETGET_BYTE_()                    // internal

_GWST_XBSETGET_DOUBLE_()                // internal

_GWST_XBSETGET_DWORD64_()            // internal

_GWST_XBSETGET_DWORDNET_()          // internal

_GWST_XBSETGET_DWORD_()                // internal

_GWST_XBSETGET_DYNSZ_()                    // internal

_GWST_XBSETGET_FLOAT_()                    // internal

_GWST_XBSETGET_HANDLE_()                  // internal

_GWST_XBSETGET_LPSTR_()                    // internal

_GWST_XBSETGET_NINT64_()                  // internal

_GWST_XBSETGET_PCLIPVAR_()          // internal

_GWST_XBSETGET_POINTER32_()        // internal

_GWST_XBSETGET_SINT16_()            // internal

_GWST_XBSETGET_SINT8_()                // internal

_GWST_XBSETGET_SZSTR_()              // internal

_GWST_XBSETGET_SZWSTR_()            // internal

_GWST_XBSETGET_UINT32_()          // internal

_GWST_XBSETGET_WORDNET_()          // internal

_GWST_XBSETGET_WORD_()                    // internal

_GWST_XBSETGET_XDATE_()                    // internal

_GWST_XBSETGET_XPPGUIWND_()          // internal

 

 

Removed Functions:

GWSTALIGNNEXTMEMBER()        // Now a preprocessor macro in ot4xb.ch

GWSTGETOFFSET()                  // Now a preprocessor macro in ot4xb.ch

GWSTSETOFFSET()                  // Now a preprocessor macro in ot4xb.ch

GWSTSKIPBYTES()                  // Now a preprocessor macro in ot4xb.ch

_DIRTYUNLOCKC_()                // internal

_DIRTYWLOCKC_()                  // internal

_GWSTALLOC()                    // internal

_GWSTFREE()                      // internal

_GWSTLINK()                              // internal

_GWSTREAD()                      // internal

_GWSTUNLINK()                    // internal

_GWSTWRITE()                    // internal

_GWSTZEROMEMORY()                // internal

_GWST_ADD_CHILD()                // internal

_GWST_ADD_MEMBER()              // internal

_GWST_BEGIN_STRUCTURE()        // internal

_GWST_BEGIN_UNION()              // internal

_GWST_END_STRUCTURE()        // internal

_GWST_END_UNION()                // internal

_GWST_READONLY()                // internal

_GWST_SETGET_()                  // internal

__GWST__M__()                    // internal

 

Renamed function:

UUIDCREATE()        -> Function with same name and behavior exists also in Xbase++ 1.9 SL1

                       Now renamed to _UUIDCREATE() to avoid conflicts

                       Also ot4xb.ch include the following directrive to warrant compatibility

#pragma Map( UUIDCREATE, "_UUIDCREATE" )

 

New Classes:

FileTime()

ot4xb_generic_pointer()

TBinFile()

TLdList()

TXbClass()   -        TXbClass is a class that make simpler the definition of

               dynamic classes and gwst() derivated structures

ULARGE_INTEGER()

LARGE_INTEGER()

_large_integer_()                  // base class for LARGE_INTEGER and ULARGE_INTEGER

 

 

Build 001.002.119                (Changes from Build 001.002.109)

New PRG functions:

 

GethOT4XB()

TrimZ()

PeekDouble()

PokeDouble()

DwByteRev()

WHLByteRev()

cDw2Hex()

nHex2Dw()

cW2Hex()

nHex2W()

cByte2Hex()

nHex2Byte()

UuidCreate()

UuidCreateStr()

UuidFromString()

UuidToString()

PackFloat32()

UnPackFloat32()

nFpCall()

ndFpCall()

qwFpCall()

nFpGetLastError()

nGetProcAddress()

 

New Classes:

 

CLASS UnicodeDynStr()

 

 

Build 001.002.109

New PRG functions:

 

lDwBitOnOff()

 

// Also wrapped for use in PRGs some common memory pointer functions

// available also at C/C++ level :

 

_BSET()

_BMOVE()

_BDUP()

_BCOPYWITHTABLE()

_BCOPY()

_BCOPYF()

_BCMP()

_BSCAN()

_XSTRCPY()

_XXSTRCPY()

_XSTCCPY()

_XSTRNCPY()

_XSTRCAT()

_XSTPCHR()

_XSTPBLK()

_XSTRLEN()

_XSTRDUP()

_XSTRAT()

 

 

Build 001.002.108

New PRG functions:

 

GetNumFormat()

SetNumFormat()

GwstSkipBytes()

GwstGetOffset()

GwstSetOffset()

GwstAlignNextMember()

Array2pSzz()

GetHKernel32()

GetHUser32()

GetHShell32()

nAndNot()

TrimQuotes()

lIsWin9x()

lIsXp()

 

New Xbase commands:

 

PROPERTY <name>  IS MASK <mask> OF <var> [READONLY]

PROPERTY <name>  IS CONSTANT <val>

GWSTBACK

 

 

Build 001.002.103

* xbrt1request.hpp :

 

FIXED:

 

  Early REQUESTs for some xpprt1.dll break

  XppGui Apps using XbpCrt ( only in Xb 1.9 RC2 )