大虾帮我看看这个代码,怎么回事,郁闷ing.....(50分)

  • 主题发起人 主题发起人 fyt234
  • 开始时间 开始时间
F

fyt234

Unregistered / Unconfirmed
GUEST, unregistred user!
Var Data,Data1:widestring;

然后给Data:='abcdefgh'

SetLength(FileOkBuf,Length(Data)+1);
copymemory(@FileOkBuf[0],@Data[1],length(Data));
FileOkBuf[length(FileOkBuf)-1]:=0;
Setlength(data1,length(data));
CopyMemory(@Data1[1],@FileOkBuf[0],length(data));


可是Data1却是乱码.
怎解???
 
因为你的Data,Data1为WideString,所以所有的内存操作要用双字节计算。
procedure TForm1.Button1Click(Sender: TObject);
Var Data,Data1:widestring;
FileOkBuf:Array of char;
begin
Data:='abcdefgh';

SetLength(FileOkBuf,Length(Data)*2+1);
^^^^^^^^^^^^^^^^^
copymemory(@FileOkBuf[0],@Data[1],length(Data)*2);
^^^^^^^^^^^^^^^^^^^^^^^
FileOkBuf[length(FileOkBuf)-1]:=#0;
Setlength(data1,length(data));
CopyMemory(@Data1[1],@FileOkBuf[0],length(data)*2);
^^^^^^^^^^^^^^^^^^^
showMessage(data1);
end;
 
有TYZhang在,你这问题搞定了 [:)]
 
to yostgxf:
谢谢兄弟捧场!
 
是啊,多谢TYZhang兄啊!
我怎么就没想到呢?
郁闷了一个上午,重试了很多办法都没解决啊!!
高,....实在是高........
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部