谁把这段代码翻译成DELPHI的?谢谢,50分 (50分)

  • 主题发起人 主题发起人 Tophi
  • 开始时间 开始时间
T

Tophi

Unregistered / Unconfirmed
GUEST, unregistred user!
谁把这段代码翻译成DELPHI的?
只要功能
谢谢,50分
static char _UniCode[127][768] = {......}
int __Ansi2Unicode(lpszAnsi,lpUnicode)
char *lpszAnsi;
unsigned short *lpUnicode;
{
unsigned char *p = (unsigned char *)lpszAnsi, c;
unsigned short *t = lpUnicode;
unsigned int w;
size_t len;
int i, j;
char szTemp[5];

len = strlen(lpszAnsi);
while(*p){
if(*p < 0x81) *t++ = (unsigned short)(*p++);
else{
c = *(p+1);
if(c < 0x40) {
*t++ = (unsigned short)*p++;
*t++ = (unsigned short)*p++;
}
else{
i = *p - 0x81;
j = (c - 0x40) * 4;
strncpy(szTemp, &amp;_UniCode[j], 4);
szTemp[4] = 0;
sscanf(szTemp, "%04X", &amp;w);
*t++ = (unsigned short)w;
p += 2;
}
}
}

*t = 0;
len = (t - lpUnicode);

return len;
}
 
好像是这样吧。
const
// _UniCode: array [0..126, 0..767] of Char = (...);
_UniCode: array [0..1, 0..1] of Char = ((#1, #1), (#1, #1));

function Ansi2Unicode(Ansi: PChar; Unicode: PByte): Integer;
var
C: Char;
W: DWORD;
Src, Dst: PChar;
I, J: Integer;
temp: array [0..4] of Char;
begin
Src := Ansi;
Dst := PChar(Unicode);
while Src^ <> #0 do
if Src^ < #81 then
begin
Dst^ := Src^;
Inc(Dst);
Inc(Src);
end else
begin
C := Src[1];
if C < #40 then
begin
Dst^ := Src^;
Inc(Src); Inc(Dst);
Dst^ := Src^;
Inc(Src); Inc(Dst);
end else
begin
I := Integer(Src^) - $81;
J := (Byte(C) - $40) * 4;
FillChar(temp, SizeOf(temp), 0);
Move(_UniCode[I, J], temp, 4);
Move(temp, w, 4);
Dst^ := Char(W);
Inc(Dst);
Inc(Src, 2);
end;
end;
Dst^ := #0;
Result := Dst - PChar(Unicode);
end;
 
不行阿,我都对此改造很多次了

就是一个中文的问题,

ansi转化成unicode的函数!
delphi没有吗?
java中getBytes("UnicodeBigUnmarked")就可以了
C语言中我看到的就是上面写的那段代码
Delphi应该如何实现呢?各位帮忙个,谢了!
 
最后自己查找搞定了,分付掉!
 
后退
顶部