Maybe something like that ?:
Code: Select all
#include <hmg.ch>
Function Main()
Local xSTRING := 'This command is used to draw a rectangle from the specified location to a specified another location' // LEN=100
Local aRET := SPLITSTRING(xSTRING , 30, SPACE(1))
Local i, cMessage:=""
FOR i := 1 TO Len ( aRet )
cMessage += aRet [i] + " »»» Len := " + AllTrim( Str ( Len ( aRet [i] ) ) ) + CRLF
NEXT i
msginfo ( cMessage )
xSTRING := 'This command is, used to draw a rectangle from, the specified location, to a specified, another location' // LEN=100
aRET := SPLITSTRING(xSTRING , 30, ',')
cMessage:=""
FOR i := 1 TO Len ( aRet )
cMessage += aRet [i] + " »»» Len := " + AllTrim( Str ( Len ( aRet [i] ) ) ) + CRLF
NEXT i
msginfo ( cMessage )
RETURN Nil
************************************************************************
Function SplitString( cString, nLen, cSplitChar )
Local aOrphans := { "the", "a", "an" }
Local aSplitString := {}
Local cSplitString := ""
Local aTokens, i, cLastWord
Default cString := ""
Default nLen := 1
Default cSplitChar := " "
aTokens := hb_ATokens( cString, cSplitChar )
FOR i := 1 TO Len( aTokens )
IF Len ( cSplitString ) + Len ( aTokens [i] ) <= nLen
cSplitString += aTokens [i] + IF ( Len ( cSplitString ) + Len ( aTokens [i] ) < nLen .AND. i < Len( aTokens ) , cSplitChar, "")
ELSE
cSplitString := AllTrim ( cSplitString )
/* don't leave "orphans" (ex. English article) at the end of the string */
cLastWord := StrTran ( SubStr( cSplitString, RAt ( " ", cSplitString ) + 1), cSplitChar, "")
IF AScan ( aOrphans, { |x| Upper(x) == Upper( cLastWord ) } ) > 0
cSplitString := Left ( cSplitString, Len ( cSplitString ) - Len ( cLastWord ) )
AADD ( aSplitString, AllTrim ( cSplitString ) )
cSplitString := cLastWord + cSplitChar + aTokens [i] + IF ( i < Len( aTokens ) , cSplitChar, "")
ELSE
AADD ( aSplitString, AllTrim ( cSplitString ) )
cSplitString := aTokens [i] + IF ( i < Len( aTokens ) , cSplitChar, "")
ENDIF
ENDIF
NEXT i
AADD ( aSplitString, Alltrim (cSplitString ) )
RETURN aSplitString