How to wrap text line (QTP, VBScript)
Parent page: Service Functions – String (QTP, VBScript)
Question
The question was asked here.
Hi Albert!
Can you email me a QTP function that wraps line of text without breaking words?
Thank you!
Answer
Proper text alignment is important. The whole layout of CSS block or HTML table could be broken if a text line won’t fit.
The function below performs wrapping of a text line without breaking words, at the nearest space character. However, if required length exceeds length of a single word then wrapping will be forced at max allowed length. Line length shorter than 3 chars is considered an invalid input.
Implementation
Description
Validate input – allocate memory.
Cut text into pieces of required length – adjust line length towards nearest space character.
WrapTextLine Function
Public Function WrapTextLine(ByVal sTexLine, ByVal intMaxLen, ByRef dvLines) Dim intLoc, intCount, Iter Dim sLine, sResult If intMaxLen < 3 Then WrapTextLine = -1 Exit Function End If If Len(sTexLine) < intMaxLen Then WrapTextLine = 1 dvLines = Array(sTexLine) Exit Function End If intCount = Int(Len(sTexLine) / intMaxLen)+1 dvLines = Array("") RedIm dvLines(intCount) Iter = 0 Do While Len(sTexLine) > 0 If Iter > intCount Then RedIm Preserve dvLines(Iter) End If sLine = Left(sTexLine, intMaxLen) intLoc = InStrRev(sLine," ", Len(sLine)) If Len(sLine) < intMaxLen Then sTexLine = "" dvLines(Iter) = sLine Iter = Iter + 1 Exit Do End If If intLoc = 0 Then sTexLine = Mid(sTexLine, intMaxLen+1) dvLines(Iter) = sLine Iter = Iter + 1 Else sResult = Left(sLine, intLoc) sTexLine = Mid(sLine, intLoc+1) & Mid(sTexLine, intMaxLen+1) dvLines(Iter) = sResult Iter = Iter + 1 End if Loop WrapTextLine = Iter End Function ' Dim sLine, dvLine, intLineCount 'sLine = "Lorem ipsum dolor sit amet, adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus." sLine = "Loremipsumdolorsitamet,adipiscingelit.Nullamdignissimconvallisest. Quisquealiquam.Donecfaucibus.Nunciaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus. Lorem ipsum dolor sit amet, emphasis consectetuer adipiscing elit. Nullam dignissim convallis est. Quisque aliquam. Donec faucibus. Nunc iaculis suscipit dui. Nam sit amet sem. Aliquam libero nisi, imperdiet at, tincidunt nec, gravida vehicula, nisl. Praesent mattis, massa quis luctus fermentum, turpis mi volutpat justo, eu volutpat enim diam eget metus. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus." intLineCount = WrapTextLine(sLine, 50, dvLine)