{
Function MyTran(pstr:PCHAR):PCHAR
being
...
end;}
{main}
str:string;
...
str:=MyTran((PCHAR(str));
...其中在MyTran函数中跟踪返回值正常,返回后常常会在str后面多加一个字符,有誰碰到类似问题没有?
Function MyTran(pstr:PCHAR):PCHAR
being
...
end;}
{main}
str:string;
...
str:=MyTran((PCHAR(str));
...其中在MyTran函数中跟踪返回值正常,返回后常常会在str后面多加一个字符,有誰碰到类似问题没有?
使用PChar(str)是强制以pchar方式访问,但是并不能保证str字符串后面的一个
内存位置是#0,所以要看你MyTran函数怎么写的
声明也应该改一下,改为:
funtion MyTran(pstr: PChar; Length: integer): PChar;
begin
//分配空间的时候,要分配多1个字节用了放#0
//例如GetMem(P, Length + 1);
//然后,把字符然后做处理,最后把多的字符串赋值为#0就没问题了
end;
Function MyTran(pstr:PCHAR):PCHAR
being
...
end;
Function MyTran(pstr:PCHAR):PCHAR
being
...
end;
var
str:string;
being
str:=pstr;
......
//处理str
......
result:=PCHAR(str);
end;
----------------------------------------------------------------
大概就是这样,怎么会发生这种情况呢
Function MyTran(pstr:PCHAR):PCHAR
var
str:string;
ps: PChar;
being
str:=pstr;
......
//处理str
......
GetMem(ps, Length(str) + 1);
ps[Length(str)] := #0;
result:=ps;
end;
var
str:string;
ps: PChar;
being
str:=pstr;
......
//处理str
......
GetMem(ps, Length(str) + 1);
ps:=PCHAR(str);
ps[Length(str)] := #0;
result:=ps;
end;
----------------------------------------------------------------
各位有没有调试过,反正我就是出现那种情况,常常会加一个字符,真是见鬼
being
...
end;
{main}
str:string;
...
str:=strpas(MyTran((PCHAR(str)));=========================================================================
这么简单你问题CSDN没人搞得定,寒!!
不说了,结贴!!!!!!!!!!!!!!!!!!!!!!!