INIT

 (Available in 00 TS Tools(Base) - TS_Tools_String)

Purpose

Create a 'TS_String' instance

Syntax

oString:=TS_String{ ["SomeString"|pSomeWordString] }

Arguments

ucpWordString
NIL,STRING or BSTR(PTR) ( Optional initial value )

Description

The 'TS_String' class is to help the application with converting strings to BSTR's and BSTR's to string. The class is registered to the GC and deallocating the allocated BSTR is done when the object is destructed.

Example

oString:=TS_String{ cProgID }
IF oString:WordString==NULL_PTR
   lRetVal:=FALSE
ELSE
   hResult:=CLSIDFromProgID( oString:WordString, pstruCLSID )
   lRetVal:=TS_HSucceeded( hResult, TRUE )
END
oString:Axit( )
oString:=NULL_OBJECT

Source

METHOD INIT( ucpWordString ) CLASS TS_String
LOCAL cAccessTypeList AS STRING
LOCAL cString AS STRING
LOCAL pString AS PTR
LOCAL lInit AS LOGIC
   TSTrace Enter CREATE
   IF LOGIC( _CAST, _AND( SELF:_ObjectStat1, TS_OBJSTAT1_ININIT  ; ...
  ... ) )
      SELF:_ObjectStat1+=TS_OBJSTAT1_COUNTVALUE
      cAccessTypeList:=TS_AccessTypeList( ucpWordString )
      DO CASE
      CASE cAccessTypeList=="U"
         cString:=NULL_STRING
         pString:=NULL_PTR
         lInit:=TRUE
      CASE cAccessTypeList=="C"
         cString:=ucpWordString
         pString:=NULL_PTR
         lInit:=TRUE
      CASE cAccessTypeList=="-"
         cString:=NULL_STRING
         pString:=ucpWordString
         lInit:=TRUE
      OTHERWISE
         TSTrace Warning "Invalid parameter(s), Expected 'U|C|-', Found '"+cAccessTypeList ; ...
        ... +"'"
         SELF:InvalidateObject( )
         lInit:=FALSE
      END
      IF lInit
         SUPER:INIT( NIL )
         DO CASE
         CASE SELF:IsInvalidated
            TSTrace Warning "SELF:IsInvalidated"
            SELF:InvalidateObject( )
         CASE pString<>NULL_PTR
            SELF:_AlloweInInit+=1
            SELF:WordString:=ucpWordString
            SELF:_AlloweInInit-=1
            SELF:RegisterAxit( )
         CASE cString<>NULL_STRING
            SELF:_AlloweInInit+=1
            SELF:ByteString:=ucpWordString
            SELF:_AlloweInInit-=1
            SELF:RegisterAxit( )
         END
      END
      SELF:_ObjectStat1-=TS_OBJSTAT1_COUNTVALUE
      IF _AND( SELF:_ObjectStat1, TS_OBJSTAT1_NEWTEST )==TS_OBJSTAT1_NEEDNEW
         SELF:_ObjectStat1:=_AND( SELF:_ObjectStat1 ; ...
        ... , _NOT( TS_OBJSTAT1_NEEDNEW ) )
         IF SELF:IsValidObject
            SELF:NEW( ucpWordString )
         ELSE
            TSTrace Warning TS_TEXT_GEN_CAN_NOT_INITIALIZE
            SELF:InvalidateObject( )
         END
      END
   ELSE
      TSTrace Warning "!LOGIC(_CAST,_And(SELF:_ObjectStat1,TS_OBJECT_STATUS_ININIT))"
   END
   TSTrace Leave
RETURN SELF