Quantcast
Channel: AutoIt v3 - Developer Chat
Viewing all articles
Browse latest Browse all 750

Re-write of _FileWriteToLine()

$
0
0
Could you guys test this to see if I haven't messed anything up. It now uses the native FileReadToArray() instead of FileRead() and a regular expression.
AutoIt         
#include <FileConstants.au3> Local $hFileOpen = FileOpen('Test.txt', $FO_OVERWRITE) For $i = 1 To 100     FileWriteLine($hFileOpen, $i) Next FileClose($hFileOpen) _FileWriteToLine('Test.txt', 10, 'Line_10', 1) ConsoleWrite(@error & @CRLF) ; #FUNCTION# ==================================================================================================================== ; Author ........: cdkid ; Modified.......: partypooper, MrCreatoR, guinness ; =============================================================================================================================== Func _FileWriteToLine($sFilePath, $iLine, $sText, $iOverWrite = 0)     If $iLine <= 0 Then Return SetError(4, 0, 0)     If Not IsString($sText) Then         $sText = String($sText)         If $sText = "" Then Return SetError(6, 0, 0)     EndIf     If $iOverWrite <> 0 And $iOverWrite <> 1 Then Return SetError(5, 0, 0)     If FileExists($sFilePath) = 0 Then Return SetError(2, 0, 0)     Local $aArray = FileReadToArray($sFilePath)     Local $iUBound = UBound($aArray) - 1     If ($iUBound + 1) < $iLine Then Return SetError(1, 0, 0)     Local $hFileOpen = FileOpen($sFilePath, FileGetEncoding($sFilePath) + $FO_OVERWRITE)     If $hFileOpen = -1 Then Return SetError(3, 0, 0)     Local $sData = ""     $iLine -= 1 ; Now the array is 0-based, so reduce the line number by 1.     For $i = 0 To $iUBound         If $i = $iLine Then             If $iOverWrite Then                 If $sText Then $sData &= $sText & @CRLF             Else                 $sData &= $sText & @CRLF & $aArray[$i] & @CRLF             EndIf         ElseIf $i < $iUBound Then             $sData &= $aArray[$i] & @CRLF         ElseIf $i = $iUBound Then             $sData &= $aArray[$i]         EndIf     Next     FileWrite($hFileOpen, $sData)     FileClose($hFileOpen)     Return 1 EndFunc   ;==>_FileWriteToLine

Viewing all articles
Browse latest Browse all 750

Latest Images

Trending Articles



Latest Images