Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

UUdecode - complete routine..

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • UUdecode - complete routine..

    Code:
    '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    ' Purpose: UUdecode a given UUencoded text and return the result.
    ' 
    ' Original code was not 100% correct, so have replaced it with code
    ' from Peter Redei. Thank you Peter! Your routine is much more correct.  
    '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
    FUNCTION uuDecode(strIn AS STRING) AS STRING
        ON ERROR RESUME NEXT
        DIM strLine     AS STRING
        DIM strDecoded  AS STRING
        DIM i AS LONG
        DIM j AS LONG
        DIM sOut AS STRING
        
        IF LEFT$(strIn, 6) = "begin " THEN  'check if it is a encoded file
            strIn = MID$(strIn, INSTR(1, strIn, $LF) + 1)
        END IF
        IF RIGHT$(strIn, 4) = "end" + $LF THEN 'check if "end" is available
            strIn = LEFT$(strIn, LEN(strIn) - 7)
        END IF
        FOR j = 1 TO PARSECOUNT(strIn, $LF)
            strLine = PARSE$(strIn, $LF, j)
            
            strLine = MID$(strLine, 2)
            REPLACE "`" WITH " " IN strLine
            IF RIGHT$(strLine, 1) = CHR$(13) THEN strLine = LEFT$(strLine, LEN(strLine) - 1)
            FOR i = 1 TO LEN(strLine) STEP 4
                'now some decoding
                strDecoded = strDecoded + CHR$((ASC(MID$(strLine, i, 1)) - 32) * 4 + _
                                  (ASC(MID$(strLine, i + 1, 1)) - 32) \ 16)
                strDecoded = strDecoded + CHR$((ASC(MID$(strLine, i + 1, 1)) MOD 16) * 16 + _
                                  (ASC(MID$(strLine, i + 2, 1)) - 32) \ 4)
                strDecoded = strDecoded + CHR$((ASC(MID$(strLine, i + 2, 1)) MOD 4) * 64 + _
                                  ASC(MID$(strLine, i + 3, 1)) - 32)
            NEXT i
            sOut = sOut &  strDecoded
            strDecoded = ""
        NEXT
        FUNCTION = sOut
    END FUNCTION

    ------------------




    [This message has been edited by Borje Hagsten (edited January 28, 2003).]
Working...
X