读书人

小弟我晕遇到怪事了字符串赋值居然

发布时间: 2012-03-23 12:06:21 作者: rapoo

我晕,遇到怪事了,字符串赋值居然不对,大家帮忙看看
PUrlRecord=^Turlrecord;
TUrlRecord = record
URL: string;
end;

var
paramt:Purlrecord;

ustr:=SourcePageLIst.Names[n];
GetMem(Paramt,Length(ustr));
Paramt^.URL:=ustr;

就是这段代码,是在一个循环里的,当执行到第一行时,绝大多数时候都是对的,但每次循环中就有一两次跟踪时 ustr和SourcePageLIst.Names[n] 居然不同SourcePageLIst是一个Tstringlist,绝大多数时候是SourcePageLIst.Names[n]赋值给ustr时,里面的‘.’被替换成了‘-’,并且Getmem有时候不能给Paramt分配内存,执行到Paramt^.URL:=ustr 时提示错误。



[解决办法]
分配记录类型的指针内存时,因为记录类型的大小是已知,动态内存操作这样使用更好:

new();//分配内存

dispose();//回收内存

PUrlRecord=^Turlrecord;
TUrlRecord = record
URL: string;
end;

var
paramt:Purlrecord;

ustr:=SourcePageLIst.Names[n];
new(paramt);
Paramt^.URL:=ustr;

读书人网 >.NET

热点推荐