一个有趣的事情,大家过来看看(0分)

  • 主题发起人 主题发起人 天真
  • 开始时间 开始时间

天真

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var aa : pChar;
buffer : array [1..1024] of char;
s:string;
i :integer;
begin
aa :='fasdfasdf';
s:=aa;
for i :=1 to length(s) do
buffer := s;
showmessage(buffer);
end;
你们觉得BUFFER的值为多少????
 
在用buffer前先设定一下长度
SetLength(Buffer, Length(s));
 
什么意思, BuFFER的值是fasdfasdf!!!
 
buffer为空???
 
不就是'fasdfasdf'吗?
 
BUFFER的长度定了,用的着设长度吗?
 
出乱码,改成:

for i :=1 to length(s) do
buffer := s;
buffer := #0;

就没事了
 
天真兄,最近为什么不开QQ?
buffer : array [1..1024] of char;
这样声明的数组内容是不定的,所以要想保持数据不变,还应该手工添加#0字符啊。你说
是不是?
新工作如意吗?我们QQ上聊?
 
远帆呀,不是我不开,只能在晚上开呀!公司不让的
 
这个问题远帆说对了,最后是会出现乱码的
 
aa :='fasdfasdf';
//strcopy(aa,'fasdfasdf');
s:=aa;
//s:=string(aa);
for i :=1 to length(s) do
buffer := s;
 
一般我在用字符数组前都FILLCHAR();一次数组,你的说的问题都没了
而且可以用COPYMEMORY来做,就不用拷被了
 
FillChar(buffer,1024,0);
copymemory(@buffer,@s[1],length(s));
就OK了
 
接受答案了.
 
后退
顶部