FMX.TMSGridDataUtil.pas与FMX.TMSHTMLEngine.pas修改

本文档探讨了如何在Delphi的FMX库中,针对TMSGridDataUtil和TMSHTMLEngine组件,优化HTML字符转义和特殊字符替换过程。作者分享了源码中的关键修改,并提供了新的HTMLEncodedChar和HTMLSpecialChar数组,以确保正确且兼容的HTML输出。
摘要由CSDN通过智能技术生成

delphi tms for fmx控件中

FMX.TMSGridDataUtil.pas

源码中的显示????,改为如下:

var
  HTMLEncodedChar : array[1..HTMLNumSpecialChar] of unicodestring = ('&','<','>','"',' ',
                                              Char($E9),Char($E8),Char($EB),Char($EA),
                                              Char($F3),Char($F2),Char($F6),Char($F4),
                                              Char($ED),Char($EC),Char($EF),Char($EE),
                                              Char($FA),Char($F9),Char($FC),Char($FB),
                                              Char($E1),Char($E0),Char($E4),Char($E2),
                                              Char($C9),Char($C8),Char($CB),Char($CA),
                                              Char($D3),Char($D2),Char($D6),Char($D4),
                                              Char($CD),Char($CC),Char($CF),Char($CE),
                                              Char($DA),Char($D9),Char($DC),Char($DB),
                                              Char($C1),Char($C0),Char($C4),Char($C2),
                                              Char($E7),Char($C7),Char($F8),Char($D8),
                                              Char($E5),Char($C5),Char($A9),Char($AE),
                                              Char($80),Char($AB),Char($BB),Char($E3),
                                              Char($C3),Char($F5),Char($D5), #153,
                                               #167, #182);

  HTMLSpecialChar : array[1..HTMLNumSpecialChar] of string = ('amp;','lt;','gt;','quot;','&nbsp;',
                                             '&eacute;','&egrave;','&euml;','&ecirc;',
                                             '&oacute;','&ograve;','&ouml;','&ocirc;',
                                             '&iacute;','&igrave;','&iuml;','&icirc;',
                                             '&uacute;','&ugrave;','&uuml;','&ucirc;',
                                             '&aacute;','&agrave;','&auml;','&acirc;',
                                             '&Eacute;','&Egrave;','&Euml;','&Ecirc;',
                                             '&Oacute;','&Ograve;','&Ouml;','&Ocirc;',
                                             '&Iacute;','&Igrave;','&Iuml;','&Icirc;',
                                             '&Uacute;','&Ugrave;','&Uuml;','&Ucirc;',
                                             '&Aacute;','&Agrave;','&Auml;','&Acirc;',
                                             '&ccedil;','&Ccedil;','&oslash;','&Oslash;',
                                             '&aring;','&Aring;','&copy;','&reg;',
                                             '&euro;','&laquo;','&raquo;','&atilde;',
                                             '&Atilde;','&otilde;','&Otilde','&trade;',
                                             '&sect;','&para;');

FMX.TMSHTMLEngine.pas

源码中的显示????,改为如下:

function ConvertHTMLSpecialChars(s: string): string;
const
  NumSpecialChar = 72;

  HTMLEncodedChar : array[1..72] of string = (Char($E9),Char($E8),Char($EB),Char($EA),
                                              Char($F3),Char($F2),Char($F6),Char($F4),
                                              Char($ED),Char($EC),Char($EF),Char($EE),
                                              Char($FA),Char($F9),Char($FC),Char($FB),
                                              Char($E1),Char($E0),Char($E4),Char($E2),
                                              Char($C9),Char($C8),Char($CB),Char($CA),
                                              Char($D3),Char($D2),Char($D6),Char($D4),
                                              Char($CD),Char($CC),Char($CF),Char($CE),
                                              Char($DA),Char($D9),Char($DC),Char($DB),
                                              Char($C1),Char($C0),Char($C4),Char($C2),
                                              Char($E7),Char($C7),Char($F8),Char($D8),
                                              Char($E5),Char($C5),Char($A9),Char($AE),
                                              Char($80),Char($AB),Char($BB),Char($E3),
                                              Char($C3),Char($F5),Char($D5),Char(223),
                                             #153, #163, #36, #167,
                                             #137, #182, #34, #39,
                                             #165, #164, #162, #177,
                                             #161, #171, #187, #176);

  HTMLSpecialChar : array[1..72] of string = ('&eacute;','&egrave;','&euml;','&ecirc;',
                                             '&oacute;','&ograve;','&ouml;','&ocirc;',
                                             '&iacute;','&igrave;','&iuml;','&icirc;',
                                             '&uacute;','&ugrave;','&uuml;','&ucirc;',
                                             '&aacute;','&agrave;','&auml;','&acirc;',
                                             '&Eacute;','&Egrave;','&Euml;','&Ecirc;',
                                             '&Oacute;','&Ograve;','&Ouml;','&Ocirc;',
                                             '&Iacute;','&Igrave;','&Iuml;','&Icirc;',
                                             '&Uacute;','&Ugrave;','&Uuml;','&Ucirc;',
                                             '&Aacute;','&Agrave;','&Auml;','&Acirc;',
                                             '&ccedil;','&Ccedil;','&oslash;','&Oslash;',
                                             '&aring;','&Aring;','&copy;','&reg;',
                                             '&euro;','&laquo;','&raquo;','&atilde;',
                                             '&Atilde;','&otilde;','&Otilde','&szlig;',
                                             '&trade;','&pound;','&dollar;','&sect;',
                                             '&permil;','&para;','&quot;','&apos;',
                                             '&yen;','&curren;','&cent;','&plusmn;',
                                             '&iexcl;','&laquo;','&raquo;','&deg;');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值