41 lines
1.5 KiB
Text
41 lines
1.5 KiB
Text
Dim MText as QMemorystream
|
|
MText.WriteLine "Given$a$text$file$of$many$lines,$where$fields$within$a$line$"
|
|
MText.WriteLine "are$delineated$by$a$single$'dollar'$character,$write$a$program"
|
|
MText.WriteLine "that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$"
|
|
MText.WriteLine "column$are$separated$by$at$least$one$space."
|
|
MText.WriteLine "Further,$allow$for$each$word$in$a$column$to$be$either$left$"
|
|
MText.WriteLine "justified,$right$justified,$or$center$justified$within$its$column."
|
|
|
|
DefStr TextLeft, TextRight, TextCenter
|
|
DefStr MLine, LWord, Newline = chr$(13)+chr$(10)
|
|
DefInt ColWidth(100), ColCount
|
|
DefSng NrSpaces
|
|
|
|
'Find column widths
|
|
MText.position = 0
|
|
for x = 0 to MText.linecount -1
|
|
MLine = MText.ReadLine
|
|
for y = 0 to Tally(MLine, "$")
|
|
LWord = Field$(MLine, "$", y+1)
|
|
ColWidth(y) = iif (ColWidth(y) < len(LWord), len(LWord), ColWidth(y))
|
|
next
|
|
next
|
|
|
|
'Create aligned wordlists
|
|
MText.position = 0
|
|
for x = 0 to MText.linecount -1
|
|
MLine = MText.ReadLine
|
|
for y = 0 to Tally(MLine, "$")
|
|
LWord = Field$(MLine, "$", y+1)
|
|
NrSpaces = ColWidth(y) - len(LWord)
|
|
'left align
|
|
TextLeft = TextLeft + LWord + Space$(NrSpaces+1)
|
|
'Right align
|
|
TextRight = TextRight + Space$(NrSpaces+1) + LWord
|
|
'Center
|
|
TextCenter = TextCenter + Space$(floor((NrSpaces)/2)+1) + LWord + Space$(Ceil((NrSpaces)/2))
|
|
next
|
|
TextLeft = TextLeft + Newline
|
|
TextRight = TextRight + Newline
|
|
TextCenter = TextCenter + Newline
|
|
next
|