99 lines
2.4 KiB
Plaintext
99 lines
2.4 KiB
Plaintext
' FB 1.05.0 Win64
|
|
|
|
Sub Split(s As String, sep As String, result() As String)
|
|
Dim As Integer i, j, count = 0
|
|
Dim temp As String
|
|
Dim As Integer position(Len(s) + 1)
|
|
position(0) = 0
|
|
For i = 0 To Len(s) - 1
|
|
For j = 0 To Len(sep) - 1
|
|
If s[i] = sep[j] Then
|
|
count += 1
|
|
position(count) = i + 1
|
|
End If
|
|
Next j
|
|
Next i
|
|
position(count + 1) = Len(s) + 1
|
|
Redim result(count)
|
|
For i = 1 To count + 1
|
|
result(i - 1) = Mid(s, position(i - 1) + 1, position(i) - position(i - 1) - 1)
|
|
Next
|
|
End Sub
|
|
|
|
Sub CSet(buffer As String, s As Const String)
|
|
Dim As Integer bLength = Len(buffer)
|
|
Dim As Integer sLength = Len(s)
|
|
Dim As Integer diff, lSpaces
|
|
If sLength >= bLength Then
|
|
LSet buffer, s
|
|
Else
|
|
diff = bLength - sLength
|
|
lSpaces = diff \ 2
|
|
LSet buffer, Space(lSpaces) + s
|
|
End If
|
|
End Sub
|
|
|
|
Dim lines() As String
|
|
Dim count As Integer = 0
|
|
|
|
Open "align_columns.txt" For Input As #1
|
|
|
|
While Not Eof(1)
|
|
Redim Preserve lines(count)
|
|
Line Input #1, lines(count)
|
|
count +=1
|
|
Wend
|
|
|
|
Close #1
|
|
|
|
Dim As Integer i,j, length, numColumns = 0
|
|
Dim As Integer numLines = UBound(lines) + 1
|
|
Dim fields() As String
|
|
|
|
' Work out the maximum number of columns
|
|
For i = 0 To numLines - 1
|
|
Erase fields
|
|
Split RTrim(lines(i), "$"), "$", fields()
|
|
length = UBound(fields) + 1
|
|
If length > numColumns Then numColumns = length
|
|
Next
|
|
|
|
' Split lines into fields and work out maximum size of each column
|
|
Dim matrix(numLines - 1, numColumns - 1) As String
|
|
Dim columnSizes(numColumns - 1) As Integer
|
|
|
|
For i = 0 To numLines - 1
|
|
Erase fields
|
|
Split RTrim(lines(i), "$"), "$", fields()
|
|
For j = 0 To UBound(fields)
|
|
matrix(i, j) = fields(j)
|
|
length = Len(fields(j))
|
|
If length > columnSizes(j) Then columnSizes(j) = length
|
|
Next j
|
|
Next i
|
|
|
|
Dim buffer As String
|
|
|
|
'Separate each column by 2 spaces
|
|
Open "align_left_columns.txt" For Output As #1
|
|
Open "align_right_columns.txt" For Output As #2
|
|
Open "align_center_columns.txt" For Output As #3
|
|
|
|
For i = 0 To UBound(matrix, 1)
|
|
For j = 0 To UBound(matrix, 2)
|
|
buffer = Space(columnSizes(j))
|
|
LSet buffer, matrix(i, j)
|
|
Print #1, buffer;
|
|
RSet buffer, matrix(i, j)
|
|
Print #2, buffer;
|
|
CSet buffer, matrix(i, j)
|
|
Print #3, buffer;
|
|
If j < UBound(matrix, 2) Then
|
|
Print #1, " "; : Print #2, " "; : Print #3, " ";
|
|
End If
|
|
Next j
|
|
Print #1, : Print #2, : Print #3,
|
|
Next i
|
|
|
|
Close #1 : Close #2 : Close #3
|