新手小白求教点数组问题

xueyupankai 2011-12-06 10:37:40
procedure TForm1.quzhi2();
var
ASource,BU: string;
iio: Integer;
AA,subB: Integer;
AStrings: TStringList;
Delimiter: Char; // 分隔符
begin
try
ASource := Edit2.Text;
subB:=0;
Delimiter := '+';
AStrings := TStringList.Create;
AStrings.Delimiter := Delimiter;
AStrings.DelimitedText := PChar(ASource);
for iio := 1 to AStrings.Count - 1 do
begin
BU:=AStrings.Strings[iio];
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select 角钢 from zhongliangbiao WHERE 材料名称='+BU+'');
ADOQuery2.Open;
AA:=strtoint(ADOQuery2.Fieldbyname('角钢').AsString);
subB:=subB+AA;
end;
zhi2:=IntToStr(subB);
finally
AStrings.Free;
end;
以上代码在运行的时候提示我Astrings没有初始化,我看上面那不已经创建了一个数组了吗,怎么会没有初始化呢
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
s11ss 2011-12-06
  • 打赏
  • 举报
回复
正确的应当是:
AStrings := TStringList.Create;
try
...
finally
AStrings.Free;
end;

如果把“AStrings := TStringList.Create;”放在try之后,比如:
try
Abort;
AStrings := TStringList.Create;
finally
AStrings.Free;
end;
在执行Abort之后,就不会执行“AStrings := TStringList.Create;”,而直接转去执行AStrings.Free;

所以编译器会警告AStrings可能没有被初始化
kaikai_kk 2011-12-06
  • 打赏
  • 举报
回复
try放错地方了,要放在Create后面

AStrings := TStringList.Create;
try
...
finally
AStrings.free;
end;
大肚肥肥 2011-12-06
  • 打赏
  • 举报
回复
以下代码无措通过呢?我也没搞明白。。。

var
ASource,BU: string;
iio: Integer;
AA,subB: Integer;
AStrings: TStringList;
Delimiter: Char; // 分隔符
begin
try
ASource := Edit2.Text;
subB:=0;
Delimiter := '+';
AStrings := TStringList.Create;


AStrings.Delimiter := Delimiter;
AStrings.DelimitedText := ASource;
Memo1.Lines.Clear;
for iio := 0 to AStrings.Count - 1 do
begin
BU:=AStrings.Strings[iio];

Memo1.Lines.Add(BU);

end;

finally
AStrings.Free;
end;
end;

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧