//排序与倒排序
{排序函数}
function DescCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := -AnsiCompareText(List[Index1], List[Index2]);
end;
procedure TForm 1.Button1Click(Sender: TObject);
var
List: TStringList;
begin
List := TStringList.Create;
var
M : TMarshaller;
A: PAnsiChar;
U: PUTF8Char;
MAA: MarshaledAString;
MAU: MarshaledAString;
begin
A := M.AsAnsi('你的字符串' ).ToPointer;
U := M.AsUtf8('你的字符串' ).ToPointer;
MAA := MarshaledAString(TMarshaller.AsAnsi('你的字符串' ).ToPointer);
MAU := MarshaledAString(TMarshaller.AsUtf8('你的字符串' ).ToPointer);
end;
下面是用 TEncoding 的写法。
var
A: PAnsiChar;
W: PWideChar;
U: PUTF8Char;
begin
A := Addr(TEncoding.ANSI.GetBytes('你的字符串' + #0)[0]);
W := Addr(TEncoding.Unicode.GetBytes('你的字符串' + #0)[0]);
U := Addr(TEncoding.UTF8.GetBytes('你的字符串' + #0)[0]);
end;作者: wang_80919 时间: 2015-7-24 13:41
delphi 2010升级到xe8后,decodestring汉字出现:No mapping for the http://www.2pascal.com/forum.php ... =1692&fromuid=4
(出处: 2Pascal-新时代的Pascal)
本人不是学计算机的,工作也与计算机无关,Delphi只是业余爱好而已。wang_80919(Flying Wang)大神所说的“太过低级”的问题,看了上边的讨论[答案就是 使用 THttpEncdong.Url.Encode(TBytes 版本的参数); (很早之前,我们自己研究出的答案)],本人菜鸟还是没看明白,THttpEncdong也不知道是什么东东,最后自己写了个函数,完成了汉字转GB2312 Urlencode。[mw_shl_code=delphi,false]
function MyUrlEncode(const input: string): string; // 汉字转Gb2312 urlencode
var
S: string;
Stream: TStringStream;
B: Byte;
begin
Result := '';
S := '';
try
Stream := TStringStream.Create(input, TEncoding.GetEncoding(936));
for B in Stream.Bytes do
S := Format('%s%%%.2x', [S, B]);
finally
Stream.Free;
end;
Result := S;
end;