FileRecode: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Updated by user: Instructor (talk, contrib).)
m (Updated by user: Instructor (talk, contrib).)
Line 3: Line 3:
|}
|}
<br style="clear:both;">
<br style="clear:both;">
== Links ==
; Latest version of headers "nsh.zip":
: http://forums.winamp.com/showthread.php?s=&threadid=203228&goto=lastpost
== The Function ==
== The Function ==
<highlight-nsis>/*
<highlight-nsis>/*

Revision as of 11:47, 27 May 2005

Author: Instructor (talk, contrib)


Links

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

The Function

/*
____________________________________________________________________________
 
                            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*/
 
 
;---------------------------------------------------------------------------
 
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