(*//
标题:处理IDE特殊字符
说明:就算Borland公司的人看了也会下一跳!
设计:Zswang
日期:2002-04-18
支持:wjhu111@21cn.com
//*)
///////Begin Source
const
cIDEc: array[#0..#255] of string =
(
'^'#64, '^'#97, '^'#98, '^'#99, '^'#100, '^'#101, '^'#102, '^'#103, '^'#104,
'^'#105, '^'#106, '^'#107, '^'#108, '^'#109, '^'#110, '^'#111, '^'#112, '^'#113,
'^'#114, '^'#115, '^'#116, '^'#117, '^'#118, '^'#119, '^'#120, '^'#121, '^'#122,
'^'#91, '^'#92, '^'#93, '^'#94, '^'#95, '^'#96, '#33', '#34', '#35', '#36',
'#37', '#38', '#39', '#40', '#41', '#42', '#43', '#44', '#45', '#46', '#47',
'#48', '#49', '#50', '#51', '#52', '#53', '#54', '#55', '#56', '#57', '#58',
'^'#123, '^'#124, '^'#125, '^'#126, '^'#127, '#64', '^'#1, '^'#2, '^'#3, '^'#4,
'^'#5, '^'#6, '^'#7, '^'#8, '^'#9, '^'#10, '^'#11, '^'#12, '^'#13, '^'#14,
'^'#15, '^'#16, '^'#17, '^'#18, '^'#19, '^'#20, '^'#21, '^'#22, '^'#23, '^'#24,
'^'#25, '^'#26, '^'#27, '^'#28, '^'#29, '^'#30, '^'#31, '^'#32, '^'#33, '^'#34,
'^'#35, '^'#36, '^'#37, '^'#38, '^'#39, '^'#40, '^'#41, '^'#42, '^'#43, '^'#44,
'^'#45, '^'#46, '^'#47, '^'#48, '^'#49, '^'#50, '^'#51, '^'#52, '^'#53,
'^'#54, '^'#55, '^'#56, '^'#57, '^'#58, '^'#59, '^'#60, '^'#61, '^'#62,
'^'#63, '^'#192, '^'#193, '^'#194, '^'#195, '^'#196, '^'#197, '^'#198, '^'#199,
'^'#200, '^'#201, '^'#202, '^'#203, '^'#204, '^'#205, '^'#206, '^'#207, '^'#208,
'^'#209, '^'#210, '^'#211, '^'#212, '^'#213, '^'#214, '^'#215, '^'#216, '^'#217,
'^'#218, '^'#219, '^'#220, '^'#221, '^'#222, '^'#223, '^'#224, '^'#225, '^'#226,
'^'#227, '^'#228, '^'#229, '^'#230, '^'#231, '^'#232, '^'#233, '^'#234, '^'#235,
'^'#236, '^'#237, '^'#238, '^'#239, '^'#240, '^'#241, '^'#242, '^'#243, '^'#244,
'^'#245, '^'#246, '^'#247, '^'#248, '^'#249, '^'#250, '^'#251, '^'#252, '^'#253,
'^'#254, '^'#255, '^'#128, '^'#129, '^'#130, '^'#131, '^'#132, '^'#133, '^'#134,
'^'#135, '^'#136, '^'#137, '^'#138, '^'#139, '^'#140, '^'#141, '^'#142, '^'#143,
'^'#144, '^'#145, '^'#146, '^'#147, '^'#148, '^'#149, '^'#150, '^'#151, '^'#152,
'^'#153, '^'#154, '^'#155, '^'#156, '^'#157, '^'#158, '^'#159, '^'#160, '^'#161,
'^'#162, '^'#163, '^'#164, '^'#165, '^'#166, '^'#167, '^'#168, '^'#169, '^'#170,
'^'#171, '^'#172, '^'#173, '^'#174, '^'#175, '^'#176, '^'#177, '^'#178, '^'#179,
'^'#180, '^'#181, '^'#182, '^'#183, '^'#184, '^'#185, '^'#186, '^'#187, '^'#188,
'^'#189, '^'#190, '^'#191);
function StrToIDEc(mStr: string): string;
var
I: Integer;
begin
Result := '';
for I := 1 to Length(mStr) do
Result := Result + cIDEc[mStr[I]];
end; { StrToIDEc }
function IDEcToStr(mIDEc: string): string;
var
C: Char;
I, L: Integer;
T: string;
begin
Result := '';
I := 1;
L := Length(mIDEc);
mIDEc := LowerCase(mIDEc);
while I <= L do begin
if mIDEc[I] = '^' then begin
for C := #0 to #255 do
if cIDEc[C] = Copy(mIDEc, I, 2) then begin
Result := Result + C;
Inc(I, 2);
Break;
end;
end else if mIDEc[I] = '#' then begin
T := '';
Inc(I);
while mIDEc[I] in ['0'..'9'] do begin
T := T + mIDEc[I];
Inc(I);
end;
if T <> '' then Result := Result + Chr(StrToIntDef(T, 0));
end else Inc(I);
end;
end; { IDEcToStr }
///////End Source
///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
Clipboard.AsText := StrToIDEc(Edit1.Text);
Caption := IDEcToStr(Clipboard.AsText);
ShowMessage(^^!^3^4^%);
end;
///////Edn Demo