FileRecode: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 13: Line 13:
____________________________________________________________________________
____________________________________________________________________________


                             LineSum
                             FileRecode
____________________________________________________________________________
____________________________________________________________________________


Thanks Afrow UK (Based on his idea of Function "LineCount")


 
Recode text file from DOS to Windows format and vice-versa.
Get sum of lines in text file.




Syntax:
Syntax:
${LineSum} "[File]" $var
${FileRecode} "[File]" "[Format]"


"[File]"      ; Input file
"[File]"        ;
$var          ; Result: Sum of lines
                ;
"[Format]"      ; OemToChar  -from DOS to Windows
                ; CharToOem  -from Windows to DOS




Note:
Note:
-Error flag if input file isn't exists
-Error flag if file isn't exist
-Error flag if syntax error
</highlight-nsis>
</highlight-nsis>


Line 37: Line 38:
<b>Example:</b>
<b>Example:</b>
<highlight-nsis>Section
<highlight-nsis>Section
${LineSum} "C:\a.log" $R0
${FileRecode} "C:\SCANDISK.LOG" "CharToOem"
; $R0="54"
SectionEnd
SectionEnd
</highlight-nsis>
</highlight-nsis>
Line 45: Line 45:


<highlight-nsis>
<highlight-nsis>
Function FileRecode
Function FileRecode
!define FileRecode `!insertmacro FileRecodeCall`
!define FileRecode `!insertmacro FileRecodeCall`

Revision as of 14:26, 4 July 2005

Author: Instructor (talk, contrib)


Links

Latest version of headers "nsh.zip"
http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost

If a function is used without header, put the function code in your script before calling it.

The Function Description

____________________________________________________________________________
 
                            FileRecode
____________________________________________________________________________
 
 
Recode text file from DOS to Windows format and vice-versa.
 
 
Syntax:
${FileRecode} "[File]" "[Format]"
 
"[File]"        ;
                ;
"[Format]"      ; OemToChar   -from DOS to Windows
                ; CharToOem   -from Windows to DOS
 
 
Note:
-Error flag if file isn't exist
-Error flag if syntax error


Example:

Section
	${FileRecode} "C:\SCANDISK.LOG" "CharToOem"
SectionEnd

The Function Code

Function FileRecode
	!define FileRecode `!insertmacro FileRecodeCall`
 
	!macro FileRecodeCall _FILE _FORMAT
		Push `${_FILE}`
		Push `${_FORMAT}`
		Call FileRecode
	!macroend
 
	Exch $1
	Exch
	Exch $0
	Exch
	Push $2
	Push $3
	Push $4
 
	IfFileExists $0 0 error
	StrCmp $1 OemToChar +2
	StrCmp $1 CharToOem 0 error
 
	FileOpen $2 $0 a
	IfErrors error
	FileSeek $2 0 END $3
	System::Alloc $3
	Pop $4
 
	FileSeek $2 0 SET
	System::Call 'kernel32::ReadFile(i r2, i r4, i $3, t.,)'
	System::Call 'user32::$1Buff(i r4, i r4, i $3)'
	FileSeek $2 0 SET
	System::Call 'kernel32::WriteFile(i r2, i r4, i $3, t.,)'
 
	System::Free $4
	FileClose $2
	goto end
 
	error:
	SetErrors
 
	end:
	Pop $4
	Pop $3
	Pop $2
	Pop $1
	Pop $0
FunctionEnd