nLines=800 Dimension aArr[m.nLines] cStr=Replicate(Replicate('x',200)+Chr(13)+Chr(10),m.nLines) Clear n=Seconds() ALines(aArr,m.cStr) ? Seconds()-m.n, 'Using ALines()' _Mline=0 n=Seconds() For i=1 to m.nLines aArr[m.i]=Mline(m.cStr,1,_Mline) Next ? Seconds()-m.n, 'Using Mline() and _MLine' n=Seconds() For i=1 to m.nLines aArr[m.i]=MLineEx(m.cStr,1) Next ? Seconds()-m.n, 'Using MLineEx()' ********************************************************************* ** MLineEx() equal to MLINE() but faster ********************************************************************* PROCEDURE MLineEx(lcSource,liLine) * @lcSource - Source string * liLine - Number Row LOCAL liEndCRLF,liStartCRLF IF m.liLine#0 && liEndCRLF=AT(CHR(13),m.lcSource,m.liLine) && IF liEndCRLF=0 && Pokud konec nena¹el (i to se mù¾e stát) liStartCRLF=IIF(m.liLine=1,1,AT(CHR(13),m.lcSource,m.liLine-1)) && RETURN IIF(m.liLine=1,m.lcSource,; IIF(SUBS(m.lcSource,m.liStartCRLF+1,1)=CHR(10),; SUBST(m.lcSource,m.liStartCRLF+2),; SUBST(m.lcSource,m.liStartCRLF+1))) && ELSE IF m.liLine=1 && RETURN LEFT(m.lcSource,m.liEndCRLF-1) && ELSE liStartCRLF=AT(CHR(13),m.lcSource,m.liLine-1) && liStartCRLF=m.liStartCRLF+; IIF(SUBS(m.lcSource,m.liStartCRLF+1,1)=CHR(10),2,1) RETURN SUBST(m.lcSource,m.liStartCRLF,m.liEndCRLF-m.liStartCRLF) ENDIF ENDIF ENDIF RETURN "" ENDPROC