Asc: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 2: Line 2:


== Description ==
== Description ==
Returns an Integer representing the character code corresponding to the first letter in a string.
Returns an Integer representing the character code corresponding to the first letter in a string.


== Syntax ==
== Syntax ==
Line 19: Line 19:
== The Function ==
== The Function ==
<highlight-nsis>
<highlight-nsis>
!macro Asc _STRING _RETURN
  Push ${_STRING}
  Call Asc       
  Pop ${_RETURN}
!macroend
!define Asc "!insertmacro Asc"
Function Asc
Function Asc
; Returns an Integer representing the character code corresponding to the first letter in a string.
; Returns an Integer representing the character code corresponding to the first letter in a string.
Line 26: Line 34:
;  
;  
; "String"  ; string argument
; "String"  ; string argument
; "Return"  ; Variable where the ASCII code is returned. The function returns -1 if no ASCII code was found.
; "Return"  ; Variable where the ASCII code is returned.
;  
;  
; e.g.
; e.g.
Line 32: Line 40:
; ${Asc} "AA" $0 ; returns 65 in $0
; ${Asc} "AA" $0 ; returns 65 in $0
;
;
    !define Asc "!insertmacro Asc"
    !macro Asc _STRING
        ; save global registers
        Push $0
        Push $1
        Push $2
        Push $3
        Push $4
        Push $5
        Push $6
        Push $7
        Push $8
        Push $9
        ; store parameter
        Push "${_STRING}"
        Call Asc
        ; restore global register
        Pop $9
        Pop $8
        Pop $7
        Pop $6
        Pop $5
        Pop $4
        Pop $3
        Pop $2
        Pop $1
        Exch $0
    !macroend


     ; get parameter
     ; get parameter
     Pop $1 ; CHAR
     Exch $0 ; CHAR
     StrCpy $1 $1 1
     Push $1
   
    IntOp $0 0 + 0
    Asc.Do:
        IntFmt $2 %c $0
        System::Call 'kernel32::lstrcmpA(t, t) i(r1,r2) .r3'
        StrCmp $3 "0" Asc.Exit
        IntOp $0 $0 + 1
    StrCmp $0 256 0 Asc.Do
    StrCpy $0 "-1"


     Asc.Exit:
     System::Call "*(&t1 r0)i.r1"
    System::Call "*$1(&i1 .r0)"
    System::Free $1


    Pop $1
    Exch $0
FunctionEnd
FunctionEnd
</highlight-nsis>
</highlight-nsis>


[[Category:String Functions]]
[[Category:String Functions]]

Latest revision as of 07:39, 3 August 2007

Author: nechai (talk, contrib)


Description

Returns an Integer representing the character code corresponding to the first letter in a string.

Syntax

${Asc} "String"

"String"   ; string argument

Stack 1    ; Ascii code

Usage

 ${Asc} "a" $0 ; returns 97 in $0
 ${Asc} "AA" $0 ; returns 65 in $0

The Function

!macro Asc _STRING _RETURN
   Push ${_STRING}
   Call Asc        
   Pop ${_RETURN}
!macroend
 
!define Asc "!insertmacro Asc"
 
Function Asc
; Returns an Integer representing the character code corresponding to the first letter in a string.
; 
; Syntax:
; ${Asc} "String" "Return"
; 
; "String"   ; string argument
; "Return"   ; Variable where the ASCII code is returned.
; 
; e.g.
; ${Asc} "a" $0 ; returns 97 in $0
; ${Asc} "AA" $0 ; returns 65 in $0
;
 
    ; get parameter
    Exch $0 ; CHAR
    Push $1
 
    System::Call "*(&t1 r0)i.r1"
    System::Call "*$1(&i1 .r0)"
    System::Free $1
 
    Pop $1
    Exch $0
FunctionEnd