*-- Compress or decompress a text string. Function CompressOrDecompress( cText ) *-- Initialize the dictionary. lcDictionary = ; " e as tinthouerhet anreesr d " + ; "onn or o i y wo tontyo. neisarte" + ; "ed, ctiy bat snd fal pensestve" + ; "ngitu talehaurllcousa mf dfoof " + ; "siril hmeg om Icehironsasiossbe" + ; "depe rli Tetel nicho lilprcactut" + ; "Thpaeceachh wige ebuaisursulmawa" + ; "otowtsmploI solyee Cunm rtieno S" + ; "diwhs.rafincademe.irplk ury Pwo" + ; "acos gams,duayavucColamowe Aoopu" *-- If the first character has ASCII value 255, *-- this is a compressed string. If Left(cText, 1) = Chr(255) Then *-- Remove the first character. cText = SubStr(cText, 2) output_text = "" && Start with a blank output. For pos = 1 To Len(cText) && examine each char ch_value = Asc(SubStr(cText, pos, 1)) *-- See whether the ASCII value is greater than 95. If ch_value > 95 Then *-- This is the code in the lcDictionary for the two *-- chars starting at pos. 2 * (_valchue - 96) + 1. output_text = output_text + ; SubStr(lcDictionary, (ch_value - 96) * 2 + 1, 2) CompressOrDecompress = cText Else IF ch_Value = 0 OR ch_Value = 32 IF ch_Value = 0 output_text = output_text + CHR( 0 ) ELSE output_text = output_text + CHR( 32 ) ENDIF ELSE output_text = output_text + CHR(ch_value + 32) ENDIF Endif EndFor Else *-- This is a normal string. Compress it. Start with *-- CHR(255) to indicate a compressed string. output_text = CHR(255) pos = 1 Do While pos <= Len(cText) *-- Consider the two chars at pos and pos + 1. pair = SubStr(cText, pos, 2) *-- See whether we've passed the end *-- of the input string. If Len(pair) < 2 Then *-- Set dict_pos = 0 to save this char unencoded. dict_pos = 0 Else && Find this pair in the lcDictionary. dict_pos = AT(pair, lcDictionary) Do While dict_pos > 0 *--If pair is here, see whether it's at an odd index. If MOD(dict_pos, 2) = 1 Exit ELSE *-- The pair is at an even position. dict_pos = AT(pair,lcDictionary, dict_pos + 1) Loop Endif ENDDO ENDIF *-- Add the pair's code or the first char to the output. If dict_pos > 0 && The pair is in the lcDictionary output_text = output_text + CHR( (dict_pos - 1) / 2 + 96 ) && Move past pair pos = pos + 2 Else && The pair isn't in the lcDictionary. *-- Add the first character to the output. lcChr = SUBSTR(pair,1,1) IF ASC(lcChr) = 0 OR ASC(lcChr) = 32 output_text = output_text + lcChr ELSE output_text = output_text + CHR(ASC(lcChr) - 32) ENDIF *-- Move past the first char in the input text. pos = pos + 1 Endif ENDDO && Do While pos <= Len(cText) ENDIF && End if decompressing RETURN output_text EndFunc>Hi Friends!