CnPack Forum » 技术板块灌水区 » MicroTip#2:将中或英字符串转换为 Delphi 的 Dfm 格式


2007-3-12 08:46 skyjacker
MicroTip#2:将中或英字符串转换为 Delphi 的 Dfm 格式

// MicroTip#2:将中或英字符串转换为 Delphi 的 Dfm 格式
// Test in Delphi6's Dfm
// Wrtten by SkyJacker 2007.03.05
// QQ Discuss Group: 130970

// 将中或英字符串转换为 Delphi 的 Dfm 格式
// Ex: 'CnPack Delphi '#20195#30721#24341#25806' V1.0' . Maybe you can reverse it!  
function StrToDfmFmt(const AStr: string): string;
const
  QM = '''';
var
  W: WideString;
  I: Integer;
  bEn: Boolean;
  Len: Integer;
begin
  bEn := False;
  W := AStr;
  Len := Length(W);
  for I:=1 to Len do
  begin
    if Ord(W[i])>127 then // 如果为非普通 ascii,就认为是宽字符
    begin
      if bEn then
        Result := Result + QM;

      Result := Result + '#' + IntToStr(Ord(W[I]));
      bEn := false;
    end
    else
    begin
      if not bEn then
        Result := Result + QM + W[i]
      else
        Result := Result + W[i];

      if I = Len then
        Result := Result + QM;
      bEn := true;
    end;
  end;
end;

2007-3-12 09:25 Passion
if Ord(W)>127

这个用法还真新鲜。

2007-3-12 09:42 skyjacker
阿.
我的原文是:
if Ord(W[i])>127 then // 如果为非普通 ascii,就认为是宽字符

我是先放在 UE 中再Copy的.
难道弄丢了.

上面的Ord(W)就不改了,当作一个小后门吧。:lol:

2007-3-12 09:43 skyjacker
:L  Discuz 过滤了.

阿.
我的原文是:
if Ord(W { i })>127 then // 如果为非普通 ascii,就认为是宽字符

2007-3-12 09:44 skyjacker
W[I]

2007-3-12 09:44 skyjacker
(W[I])

2007-3-12 09:44 skyjacker
Ord(W[I])

2007-3-12 09:45 skyjacker
Ord(W[I]) >

2007-3-12 09:45 skyjacker
if Ord(W[i])>127

2007-3-12 09:46 skyjacker
Ord(W[i])>127

2007-3-12 09:46 skyjacker
(W[i])>127

2007-3-12 09:49 skyjacker
总结:
Discuz! 5.0.0 会过滤类似于以下字符串:
(W{I})>127

"{}" 实际为 "[]"

Thx Passion!

2007-3-12 10:04 skyjacker
让此帖作为我的灌水测试帖吧

小于
(W[I]) < 127

2007-3-12 10:05 skyjacker
(W[I]) and (W[I]) > 127

2007-3-12 10:05 skyjacker
((W[I]) and (W[I])) > 127

2007-3-12 10:06 skyjacker
((W[I]) && (W[I])) > 127

2007-3-12 10:06 skyjacker
W[ I ] > 127

2007-3-12 10:07 skyjacker
(W[ I ])>127

2007-3-12 11:57 Passion
明白了, 得禁用DISCUZ! 代码,否则那个方括号I就被当成斜体了。

2007-3-14 10:00 kendling
怪不得看起来怪怪的。

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.