widestring 和 string的转换问题(50分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
var
S: widestring;
begin
s:= '我是字符串';
s := utf8encode(s);
s := utf8decode(s); //这个参数如何处理
showmessage(s);
end;

如果将s声明为string则没有错误,但现在我得把这两个函数封装成com组件,接口中只能使用
widestring类型,我该如何处理?
 
没错呀,就把s声明为string可以
var
s:string;
s1:widestring;
begin
s:=s1;
end;
widestring 和string都是delphi的字符串的一种
可以互相赋值
 
错了,看看我的com生成代码:
unit UTF8;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
ComObj, ActiveX, HDT_TLB, StdVcl;

type
TUTF8Encoder = class(TAutoObject, IUTF8Encoder)
private
FStr: string;
protected
function Get_Result: WideString; safecall;
procedure DecodeString(const Value: WideString); safecall;
procedure EncodeString(const Value: WideString); safecall;
{ Protected declarations }
end;

implementation

uses ComServ;

function TUTF8Encoder.Get_Result: WideString;
begin
Result := FStr;
end;

procedure TUTF8Encoder.DecodeString(const Value: WideString);
begin
FStr := UTF8Decode(Value);
end;

procedure TUTF8Encoder.EncodeString(const Value: WideString);
begin
FStr := UTF8Encode(Value);
end;

initialization
TAutoObjectFactory.Create(ComServer, TUTF8Encoder, Class_UTF8Encoder,
ciMultiInstance, tmApartment);
end.

EncodeString没有问题,DecodeString得到的都是空串。
 
问题已经解决了,用ansitoutf8和utf8toansi函数。
 

Similar threads

回复
0
查看
973
不得闲
回复
0
查看
845
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部