如何在delphi中调用vb编的ActiveX控件,或在delphi中实现unicode到ascII的转换?(50分)

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

azure_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在需要实现一种unicode到ascii或ascii到unicode的转换,万望各位大侠指教.或者可以给我指出为啥我在vb中写的控件,在delphi中调用总是报错.谢谢!!
 
在delphi中:
unicode到ASCII: ascstring:=string(unicodestring);
ASCII到unicode: unicodestring:=LPWSTR(ascstring);
或者用函数WideCharToString, StringToWideChar来做。
 
首先感谢您的的答复,
但我试了一下,
用lpwstr来做前后得出的结论相同,
例:
ascstring:='啊';
unicodestring:=LPWSTR(ascstring);
而这时unicodestring在watch中看还是'啊'而其对应的unicode应为554a
我怎样才能实现从'啊'到554a的转换呢?
多谢!!
 
那你在vb中怎样做的?
另外unicode还有两种形式呢,utf16和utf8,
 
procedure TForm1.FormCreate(Sender: TObject);
var
Buffer: array[0..127] of WideChar;
source:string;
SourceLen: Integer;
begin
source := '啊';
SourceLen := Length(Source);
StringToWideChar( Source, Buffer, SourceLen+1 );
end;

查看Buffer[0],的确是554a
 
感谢您对我问题的支持,
有个小问题
是关于您的程序,
一般来讲
delphi是不支持数组以0开始的为什么在这里就可以?
为什么当我将数组范围改成[1..128]是就会报错?
恳请您不吝赐教,
azure有点得寸进尺的说?:-p
 
Delphi没有说不支持数组以0开始啊?
为什么不能用[1..128]我也不是很清楚。
可能用[0..128]的话,buffer就等同于指向它的内容的指针,
用[1..128]就不是吧。
听听别人怎么说吧。
 
接受答案了.
 
后退
顶部