如何解决在'with'语句中创建对象而不使用变量
var
UserName,NickName,UserID: string;
begin
with TStringList.Create do
begin
CommaText := 'ali,veli,4950';
UserName := x[0]; //what is x ? (x is Tstringlist.create)
NickName := x[1];
UserID := x[2];
end;
end;
如果我使用以下代码,则可以使用。但是我不想声明一个变量。我可以将其与任何变量一起使用吗?
如何在with
语句中使用它?
var
tsl: TStringList;
begin
tsl := TStringlist.Create;
with tsl do
begin
CommaText := 'ali,4950';
UserName := tsl[0];
NickName := tsl[1];
UserID := tsl[2];
end;
end;
解决方法
直接在with
语句中创建对象时,没有语法可以引用该对象(除非它提供了一个引用自身的成员,这种情况很少见),因此通常必须使用变量,就像您的底层代码一样。
另外,这两个代码都泄漏了TStringList
对象,因为在使用完对象后您不会对其调用Free()
。
话虽这么说,在这个特殊示例中,[]
运算符只是访问TStrings.Strings[]
默认属性的简写,您可以 无需使用变量即可访问创建的TStringList
对象,就像使用TStrings.CommaText
属性一样,例如:
var
UserName,NickName,UserID: string;
Begin
with TStringList.Create do
try
CommaText := 'ali,veli,4950';
UserName := Strings[0];
NickName := Strings[1];
UserID := Strings[2];
finally
Free;
end;
end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。