Delphi字符串简码

从网上找的三个函数自己修改了下,在delphi7运行正常,unicode的版本不能用好像

输入:1abc天天

输出:1ABCTT

unit UnitJM;

interface

uses SysUtils;

function getPY(hzchar: string): char;
function getStrPY(Astr: string): string;
function IsMBCSChar(const ch: Char): Boolean;

implementation

function IsMBCSChar(const ch: Char): Boolean;
begin
  Result := (ByteType(ch, 1) <> mbSingleByte);
end;

function getPY(hzchar: string): char;
begin
  case word(hzchar[1]) shl 8 + word(hzchar[2]) of
    $B0A1..$B0C4: result := ‘A‘;
    $B0C5..$B2C0: result := ‘B‘;
    $B2C1..$B4ED: result := ‘C‘;
    $B4EE..$B6E9: result := ‘D‘;
    $B6EA..$B7A1: result := ‘E‘;
    $B7A2..$B8C0: result := ‘F‘;
    $B8C1..$B9FD: result := ‘G‘;
    $B9FE..$BBF6: result := ‘H‘;
    $BBF7..$BFA5: result := ‘J‘;
    $BFA6..$C0AB: result := ‘K‘;
    $C0AC..$C2E7: result := ‘L‘;
    $C2E8..$C4C2: result := ‘M‘;
    $C4C3..$C5B5: result := ‘N‘;
    $C5B6..$C5BD: result := ‘O‘;
    $C5BE..$C6D9: result := ‘P‘;
    $C6DA..$C8BA: result := ‘Q‘;
    $C8BB..$C8F5: result := ‘R‘;
    $C8F6..$CBF9: result := ‘S‘;
    $CBFA..$CDD9: result := ‘T‘;
    $CDDA..$CEF3: result := ‘W‘;
    $CEF4..$D188: result := ‘X‘;
    $D189..$D4D0: result := ‘Y‘;
    $D4D1..$D7F9: result := ‘Z‘;
  else
    RESULT := char(32);
  end;
end;
//==============================================================================
// 获取字符串的JM
//==============================================================================
function getStrPY(Astr: string): string;
var
  i: integer;
  hz, pyzh: string;
  Achar:Char;
begin
  result := ‘‘;
  i:=1;
  while i<(Length(Astr)+1) do
  begin
    aChar:=Astr[i];
    if IsMBCSChar(Achar) then
    begin
      hz := copy(Astr, i, 2);
      pyzh := pyzh + getpy(hz);
      Inc(i,2);
      Continue;
    end;
    pyzh:=pyzh+achar;
    Inc(i);
  end;
  result :=UpperCase(Pyzh);
end;
end.

时间: 2024-10-11 08:21:34

Delphi字符串简码的相关文章

Delphi字符串、PChar与字符数组之间的转换

来自:http://my.oschina.net/kavensu/blog/193719 ----------------------------------------------------------------- var s: string; p: pchar; a: array[1..20] of char; 1.字符串 ---> PChar p := PChar(s); 2.PChar ---> 字符串 s := p; 3.PChar ---> 字符数组 StrCopy(@a

delphi 字符串查找

1.在源字符串Src中查找子串S,返回Src中S之前的部分 Function Before( Src,S:string ): string ;Var F: Word ;begin   if Src = '' then    Before := '';    F := Pos(S, Src); if F = 0 then begin Before := S; end else Before := Copy(Src,1,F-1);end; 2.在源字符串Src中查找子串S,返回Src中S之后的部分

Delphi - 字符串 详解

技术交流,DH解说. 以前写过一次,现在全部重写吧.比较基础了,高手莫笑. 记得有次在盒子上面看到有个人出的面试题,第一题就是:AnsiString 和 WideString的区别.好这里先留给大家想想,我讲完了,大家就应该知道了.嘿嘿. 首先分类:1 ShortString,可以容纳255个字符,主要为了老版本兼容2 AnsiString,可以容纳2的31次方个字符,D2009前默认的String类型3 UnicodeString,可以容纳2的30次方个字符,D2009及以后的默认String

Delphi字符串处理函数

1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即被复制的字符串),第二个参数是从字符串某一处开始复制,第三个参数是要复制字符串的长度(即个数).最后函数返回一个新的字符串(即是我们指定要复制的字符串内容). 参考实例: var S: String; MyStr: String; // 保存新的字符串 begin S := 'I Love China!'; //下面将获取I Love China中的“Love”字符串. MyStr := C

DELPHI字符串、数组操作函数(转)

对字符串及数组的操作,是每个程序员必须要掌握的.熟练的使用Delphi的这些函数,在编程时能更加得心应手.  1.Copy  功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即被复制的字符串),第二个参数是从字符串某一处开始复制,第三个参数是要复制字符串的长度(  即个数).最后函数返回一个新的字符串(即是我们指定要复制的字符串内容).  参考实例:  var  S: String;  MyStr: String; // 保存新的字符串  begin 

Delphi字符串加密/解密

unit uEncrypt_Decrypt; interface uses SysUtils; const XorKey: array[0..7] of Byte = ($B2, $09, $AA, $55, $93, $6D, $84, $47); //通过密钥Key加密 function EncryptString(Source, Key: string): string; function UnEncryptString(Source, Key: string): string; //异或

Delphi字符串的基本操作--转

转载:http://www.cnblogs.com/pchmonster/archive/2011/12/16/2290034.html 结合这个博客一起学习:http://www.cnblogs.com/xumenger/p/4427957.html 在实际编程中,这些操作会经常用到的.开始你不用着急全部记住它们,只要知道有这些功能就行,需要用到的时候能查到即可. 1.用 + 操作符实现字符串的连接 1 2 3 4 5 6 7 8 9 10 11 12 var   X: Integer;   

Delphi字符串转日期,强大到窒息,VarToDateTime解决了困扰很久的小问题

procedure THRForm.Button1Click(Sender: TObject); var D:TDateTime; s:string; begin D:=VarToDateTime('05-10-14 04:35PM'); S:=FormatDatetime('YYYY-MM-DD HH:MM:SS',D); showmessage(s); end; 尤其是在进行数据库语句操作时,对于字符串的来源不确定因素太多,有了该函数用起来真的很方便.举例如下: 用VarToDateTime

DELPHI 字符串与日期格式互转

procedure TForm1.Button1Click(Sender: TObject); var D:TDateTime; s:string; begin D:=VarToDateTime('05-10-14 04:35PM'); S:=FormatDatetime('YYYY/MM/DD HH:MM:SS',D); showmessage(s); end; 看到有人这样用VarToDateTime.存下来.强大的日期通杀 原文地址:https://www.cnblogs.com/jijm