Skip to content

Commit 28d8daf

Browse files
committed
Improved performance
Streams ended in \r and \n are processed faster.
1 parent 78943b3 commit 28d8daf

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/ECPTextStream.cls

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,17 @@ Attribute ReadText.VB_Description = "Reads a number of characters from the strea
143143
InitialPos = Seek(FileHandled)
144144
BufferMark = LenB(Buffer)
145145
If P_ENDSTREAMONLINEBREAK Then
146-
BufferEnds = (MidB$(Buffer, BufferMark - 3, 4) = vbCrLf)
146+
Dim Last2Chrs As String
147+
Dim LastChr As String
148+
Last2Chrs = MidB$(Buffer, BufferMark - 3, 4)
149+
BufferEnds = (Last2Chrs = vbCrLf)
147150
Select Case BufferEnds
148151
Case False
149-
BufferEnds = (MidB$(Buffer, BufferMark - 1, 2) = vbCr)
152+
LastChr = MidB$(Last2Chrs, 3, 2)
153+
BufferEnds = (LastChr = vbCr)
150154
Select Case BufferEnds
151155
Case False
152-
BufferEnds = (MidB$(Buffer, BufferMark - 1, 2) = vbLf)
156+
BufferEnds = (LastChr = vbLf)
153157
If BufferEnds Then
154158
P_LINEBREAK = vbLf
155159
End If
@@ -162,13 +166,15 @@ Attribute ReadText.VB_Description = "Reads a number of characters from the strea
162166
Do While Not BufferEnds
163167
BufferMark = BufferMark - 2
164168
BufferDelta = BufferDelta + 1
165-
BufferEnds = (MidB$(Buffer, BufferMark - 3, 4) = vbCrLf)
169+
Last2Chrs = MidB$(Buffer, BufferMark - 3, 4)
170+
BufferEnds = (Last2Chrs = vbCrLf)
166171
Select Case BufferEnds
167172
Case False
168-
BufferEnds = (MidB$(Buffer, BufferMark - 1, 2) = vbCr)
173+
LastChr = MidB$(Last2Chrs, 3, 2)
174+
BufferEnds = (LastChr = vbCr)
169175
Select Case BufferEnds
170176
Case False
171-
BufferEnds = (MidB$(Buffer, BufferMark - 1, 2) = vbLf)
177+
BufferEnds = (LastChr = vbLf)
172178
If BufferEnds Then
173179
P_LINEBREAK = vbLf
174180
End If

test-assets/Split_Text_Files.xlsm

10 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)