LineRead: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
m (Updated author links.) |
Instructor (talk | contribs) No edit summary |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{ | {{PageAuthor|Instructor}} | ||
{{User:Instructor/Headers/Template}} | |||
== | == Function Description == | ||
<highlight-nsis> | |||
<highlight-nsis> | |||
____________________________________________________________________________ | ____________________________________________________________________________ | ||
Line 16: | Line 11: | ||
____________________________________________________________________________ | ____________________________________________________________________________ | ||
Thanks Afrow UK (Based on his idea of Function "ReadFileLine") | |||
Thanks Afrow UK (Based on his idea of Function "ReadFileLine" | |||
Line 39: | Line 32: | ||
-Error flag if input file isn't exists | -Error flag if input file isn't exists | ||
-Error flag if line number not found | -Error flag if line number not found | ||
</highlight-nsis> | |||
Example: | <b>Example:</b> | ||
Section | <highlight-nsis>Section | ||
${LineRead} "C:\a.log" "-1" $R0 | ${LineRead} "C:\a.log" "-1" $R0 | ||
; $R0="Last line$\r$\n" | ; $R0="Last line$\r$\n" | ||
SectionEnd | SectionEnd | ||
</highlight-nsis> | |||
== Function Code == | |||
<highlight-nsis> | |||
Function LineRead | |||
!define LineRead `!insertmacro LineReadCall` | !define LineRead `!insertmacro LineReadCall` | ||
Line 108: | Line 104: | ||
FunctionEnd | FunctionEnd | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Text Files Manipulation Functions]] |
Latest revision as of 11:29, 30 November 2005
Author: Instructor (talk, contrib) |
Page for NSIS 2.07 and below users
You can use the latest version of headers (recommended) or the following function code (put the function code in your script before calling it)
Function Description
____________________________________________________________________________ LineRead v1.2 ____________________________________________________________________________ Thanks Afrow UK (Based on his idea of Function "ReadFileLine") 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 Code
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