LineRead: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Wikipedia python library)
 
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Links ==
{{PageAuthor|Instructor}}
; 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
{{User:Instructor/Headers/Template}}


== The Function ==
== Function Description ==
<highlight-nsis>/*
 
<highlight-nsis>
____________________________________________________________________________
____________________________________________________________________________


Line 12: Line 11:
____________________________________________________________________________
____________________________________________________________________________


2004 Shengalts Aleksander (Shengalts@mail.ru)
Thanks Afrow UK (Based on his idea of Function "ReadFileLine")
 
Thanks Afrow UK (Based on his idea of Function "ReadFileLine" 2003-11-25)




Line 35: 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
Function LineRead
!define LineRead `!insertmacro LineReadCall`
!define LineRead `!insertmacro LineReadCall`


Line 105: Line 105:
</highlight-nsis>
</highlight-nsis>


 
[[Category:Text Files Manipulation Functions]]
Page author: Instructor

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