//摩斯电码 加密解密,不支持汉字 function MorseEncode(str: string): string; const oldarr: array[0..54] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', '1','2','3','4','5','6','7','8','9','0', '.',':',',',';','?','=', '''','/','!','-','_','"','(',')','$','&','@','+',' '); newarr: array[0..54] of string = ('.-','-...','-.-.','-..','.','..-.','--.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..', '.----','..---','...--','....-','.....','-....','--...','---..','----.','-----', '.-.-.-','---...','--..--','-.-.-.','..--..','-...-','.----.','-..-.','-.-.--','-....-','..--.-','.-..-.','-.--.','-.--.-','...-..-','.-...','.--.-.','.-.-.',' '); var strin: string; size: Integer; value: string; i,j: Integer; begin strin := UpperCase(str); value := ''; for i := 1 to Length(str) do begin size := -1; for j := 0 to High(oldarr) do begin if strin[i] = oldarr[j] then begin size := j; Break; end; end; if size >= 0 then value := value + newarr[size] + ' ' else value := value + strin[i]; end; Result := Trim(value); end; function MorseDecode(Code: string): string; const oldarr: array[0..54] of string = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', '1','2','3','4','5','6','7','8','9','0', '.',':',',',';','?','=', '''','/','!','-','_','"','(',')','$','&','@','+',' '); newarr: array[0..54] of string = ('.-','-...','-.-.','-..','.','..-.','--.','....','..','.---','-.-','.-..','--','-.','---','.--.','--.-','.-.','...','-','..-','...-','.--','-..-','-.--','--..', '.----','..---','...--','....-','.....','-....','--...','---..','----.','-----', '.-.-.-','---...','--..--','-.-.-.','..--..','-...-','.----.','-..-.','-.-.--','-....-','..--.-','.-..-.','-.--.','-.--.-','...-..-','.-...','.--.-.','.-.-.',' '); var strarr: TStringList; size: Integer; value: string; i,j: Integer; begin strarr := TStringList.Create; strarr.Delimiter := ' '; strarr.DelimitedText := Code; value := ''; for i := 0 to strarr.Count-1 do begin size := -1; for j := 0 to High(newarr) do begin if strarr[i] = newarr[j] then begin size := j; Break; end; end; if size >= 0 then value := value + oldarr[size] else value := value + strarr[i]; end; strarr.Free; Result := value; end;