LineRead: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Wikipedia python library) |
m (Updated author and download links, and changed format of some pages.) |
||
Line 105: | Line 105: | ||
</highlight-nsis> | </highlight-nsis> | ||
Page author: [[User:Instructor|Instructor]] | |||
Page author: Instructor |
Revision as of 12:43, 23 April 2005
Links
- Latest version of headers "nsh.zip"
- http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost
If function used without header then put function in script before call it
The Function
/*
____________________________________________________________________________
LineRead v1.2
____________________________________________________________________________
2004 Shengalts Aleksander (Shengalts@mail.ru)
Thanks Afrow UK (Based on his idea of Function "ReadFileLine" 2003-11-25)
Get line in file specified with number.
Syntax:
${LineRead} "[File]" "[LineNumber]" $var
"[File]" ; Input text file
;
"[LineNumber]" ; [No|-No]
; 3 line number from start
; -5 line number from end
;
$var ; Result: Line
Note:
-Error flag if input file isn't exists
-Error flag if line number not found
Example:
Section
${LineRead} "C:\a.log" "-1" $R0
; $R0="Last line$\r$\n"
SectionEnd*\
;---------------------------------------------------------------------------
Function LineRead
!define LineRead `!insertmacro LineReadCall`
!macro LineReadCall _FILE _NUMBER _RESULT
Push `${_FILE}`
Push `${_NUMBER}`
Call LineRead
Pop ${_RESULT}
!macroend
Exch $1
Exch
Exch $0
Exch
Push $2
Push $3
Push $4
ClearErrors
IfFileExists $0 0 error
IntOp $1 $1 + 0
IntCmp $1 0 error 0 plus
StrCpy $4 0
FileOpen $2 $0 r
IfErrors error
FileRead $2 $3
IfErrors +3
IntOp $4 $4 + 1
Goto -3
FileClose $2
IntOp $1 $4 + $1
IntOp $1 $1 + 1
IntCmp $1 0 error error
plus:
FileOpen $2 $0 r
IfErrors error
StrCpy $3 0
IntOp $3 $3 + 1
FileRead $2 $0
IfErrors +4
StrCmp $3 $1 0 -3
FileClose $2
goto end
FileClose $2
error:
SetErrors
StrCpy $0 ''
end:
Pop $4
Pop $3
Pop $2
Pop $1
Exch $0
FunctionEnd
Page author: Instructor