我初学Delphi ,有段程序如下:
var
slTmp : TStringList ;
begin
slTmp := TStringList.Create;
slTmp := TStringList( Memo.Lines ) ;
if slTmp.Strings[0] <> 'BEGIN' then
begin
......
end;
......
end;
第一次执行没有问题,但是再次执行时,在判断语句处出错,这是怎么回事啊?
var
slTmp : TStringList ;
begin
slTmp := TStringList.Create;
slTmp := TStringList( Memo.Lines ) ;
if slTmp.Strings[0] <> 'BEGIN' then
begin
......
end;
......
end;
第一次执行没有问题,但是再次执行时,在判断语句处出错,这是怎么回事啊?
解决方案 »
- 16进制的双精度浮点数的转换问题
- 双引号、斜杠和反斜杠问题
- 如何把DBgrid 中选中的那一行的值 赋给 edit 框
- 有关DLL中ShowModal问题!
- StringGrid中,怎样禁止用户选中多行
- 如何控制窗口大小,即将最大化最小化按钮屏蔽?
- 关于COM口的数据通信的问题,各位高手请帮帮忙!
- 入门问题:怎么让dbgrid可以修改选中cell的值(连datasource),还有若干简单问题,请高手们抢分啊
- 有关数据库发布
- 请教一个SQL的问题
- 奇怪的问题,我的多文档窗体的主窗体的WindowMenu已经指向一个菜单,为什么当打开一个子窗体时这个菜单下没有这个子窗体?
- 关于饼状图的使用,在线等候!!!
slTmp : TStringList ;
begin
slTmp := TStringList.Create;
slTmp.Clear
try
slTmp := TStringList( Memo.Lines ) ;
if slTmp.Strings[0] <> 'BEGIN' then
begin
......
end;
......
finally
slTmp.Clear ;
slTmp.Free ;
end ;
end;
if not Assigned(slTmp) then slTmp := TStringList.Create;
有什么用?
这样:
sltmp.text:=memo1.lines.text;
还有,你说第二次运行到sltmp.strings[0]的时候就出错?如果是"list index out of bounds -1"那么就有可能是memo的内容发生了变化,根本就没有内容,以至于sltmp连一行都没有。
sltmp.text:=memo1.lines.text; 是完全正确的,
就算用slTmp := TStringList( Memo.Lines ),运行正确
但是关闭程序时, 会出现错误,呵呵,象你这么一改,就完全正确
马上给分,每人100, 你另加100 , Thank !