Board logo

Subject: MicroTip#2:将中或英字符串转换为 Delphi 的 Dfm 格式 [Print This Page]

Author: skyjacker    Time: 2007-3-12 08:46     Subject: 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)>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
      else
        Result := Result + W;

      if I = Len then
        Result := Result + QM;
      bEn := true;
    end;
  end;
end;
Author: Passion    Time: 2007-3-12 09:25

if Ord(W)>127

这个用法还真新鲜。
Author: skyjacker    Time: 2007-3-12 09:42

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

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

上面的Ord(W)就不改了,当作一个小后门吧。
Author: skyjacker    Time: 2007-3-12 09:43

  Discuz 过滤了.

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

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

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

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

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

if Ord(W)>127
Author: skyjacker    Time: 2007-3-12 09:46

Ord(W)>127
Author: skyjacker    Time: 2007-3-12 09:46

(W)>127
Author: skyjacker    Time: 2007-3-12 09:49

总结:
Discuz! 5.0.0 会过滤类似于以下字符串:
(W{I})>127

"{}" 实际为 "[]"

Thx Passion!
Author: skyjacker    Time: 2007-3-12 10:04

让此帖作为我的灌水测试帖吧

小于
(W[I]) < 127
Author: skyjacker    Time: 2007-3-12 10:05

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

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

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

W[ I ] > 127
Author: skyjacker    Time: 2007-3-12 10:07

(W[ I ])>127
Author: Passion    Time: 2007-3-12 11:57

明白了, 得禁用DISCUZ! 代码,否则那个方括号I就被当成斜体了。
Author: kendling    Time: 2007-3-14 10:00

怪不得看起来怪怪的。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0