53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
FUNCTION RLDecode (i AS STRING) AS STRING
|
|
DIM Loop0 AS LONG, rCount AS STRING, outP AS STRING, m AS STRING
|
|
|
|
FOR Loop0 = 1 TO LEN(i)
|
|
m = MID$(i, Loop0, 1)
|
|
SELECT CASE m
|
|
CASE "0" TO "9"
|
|
rCount = rCount & m
|
|
CASE ELSE
|
|
IF LEN(rCount) THEN
|
|
outP = outP & STRING$(VAL(rCount), m)
|
|
rCount=""
|
|
ELSE
|
|
outP = outP & m
|
|
END IF
|
|
END SELECT
|
|
NEXT
|
|
FUNCTION = outP
|
|
END FUNCTION
|
|
|
|
FUNCTION RLEncode (i AS STRING) AS STRING
|
|
DIM tmp1 AS STRING, tmp2 AS STRING, outP AS STRING
|
|
DIM Loop0 AS LONG, rCount AS LONG
|
|
|
|
tmp1 = MID$(i, 1, 1)
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
|
|
FOR Loop0 = 2 TO LEN(i)
|
|
tmp1 = MID$(i, Loop0, 1)
|
|
IF tmp1 <> tmp2 THEN
|
|
outP = outP & TRIM$(STR$(rCount)) & tmp2
|
|
tmp2 = tmp1
|
|
rCount = 1
|
|
ELSE
|
|
INCR rCount
|
|
END IF
|
|
NEXT
|
|
|
|
outP = outP & TRIM$(STR$(rCount))
|
|
outP = outP & tmp2
|
|
FUNCTION = outP
|
|
END FUNCTION
|
|
|
|
FUNCTION PBMAIN () AS LONG
|
|
DIM initial AS STRING, encoded AS STRING, decoded AS STRING
|
|
initial = INPUTBOX$("Type something.")
|
|
encoded = RLEncode(initial)
|
|
decoded = RLDecode(encoded)
|
|
'in PB/Win, "?" = MSGBOX; in PB/DOS & PB/CC. "?" = PRINT
|
|
? initial & $CRLF & encoded & $CRLF & decoded
|
|
END FUNCTION
|