Previous | Contents | Next

## C.1 Get parent directory

     ; GetParent

     ; input, top of stack  (e.g. C:\Program Files\Poop)

     ; output, top of stack (replaces, with e.g. C:\Program Files)

     ; modifies no other variables.

     ;

     ; Usage:

     ;   Push "C:\Program Files\Directory\Whatever"

     ;   Call GetParent

     ;   Pop $R0

     ;   ; at this point $R0 will equal "C:\Program Files\Directory"

     Function GetParent

       Exch $R0

       Push $R1

       Push $R2

       Push $R3

       StrCpy $R1 0

       StrLen $R2 $R0

       loop:

         IntOp $R1 $R1 + 1

         IntCmp $R1 $R2 get 0 get

         StrCpy $R3 $R0 1 -$R1

         StrCmp $R3 "\" get

         Goto loop

       get:

         StrCpy $R0 $R0 -$R1

         Pop $R3

         Pop $R2

         Pop $R1

         Exch $R0

     FunctionEnd

Previous | Contents | Next