在task.pas中定义一个类TTask,并定义一个TTask类型的对象数组tasks
type TTask = class(TObject)
Status: string;
SourceName: string;
SourceSize: integer;
SourceType: string;
DestName: string;
DestSize: integer;
DestType: string; procedure Convert();
end;
var
tasks: array of TTask;在unit1.pas中对数组tasks[]的各个对象的每一个成员赋值:
unit1.pas: SetLength(Tasks,5);
for i:=1 to 5 do
begin
if not assigned(Tasks[i]) then
Tasks[i] := TTask.Create();
Tasks[i].Status := 'Wait';
Tasks[i].SourceName := StringGrid1.Cells[1,i];
end;但是这样做编译的时候没问题,运行有错,又是Access violation的错误,我跟踪调试的时候发现i=1的时候过去了,循环到i=2的时候马上出错(if判断为false,也就是跳过了Tasks[2] := TTask.create.).我怀疑是数组上出错了,请问有对象数组的用法么? 该怎么修改呢?请赐教.
type TTask = class(TObject)
Status: string;
SourceName: string;
SourceSize: integer;
SourceType: string;
DestName: string;
DestSize: integer;
DestType: string; procedure Convert();
end;
var
tasks: array of TTask;在unit1.pas中对数组tasks[]的各个对象的每一个成员赋值:
unit1.pas: SetLength(Tasks,5);
for i:=1 to 5 do
begin
if not assigned(Tasks[i]) then
Tasks[i] := TTask.Create();
Tasks[i].Status := 'Wait';
Tasks[i].SourceName := StringGrid1.Cells[1,i];
end;但是这样做编译的时候没问题,运行有错,又是Access violation的错误,我跟踪调试的时候发现i=1的时候过去了,循环到i=2的时候马上出错(if判断为false,也就是跳过了Tasks[2] := TTask.create.).我怀疑是数组上出错了,请问有对象数组的用法么? 该怎么修改呢?请赐教.
解决方案 »
- 讨论自动排课系统的思路
- 有没有简单的方法或者函数得出两个日期相隔有多少个星期一,星期二。。。一直到星期天这样的呢?
- 我用ado组件做的应用程序进行发布时,要如何打包,数据库是SqlSqever2000
- 今天是家父的生日,散分
- 关于网络数据库!
- 想用Delphi实现Web用户数量的限制,请高手提供帮助,谢谢。
- 关于StringGrid的问题
- 怎样判断是鼠标的左键还是右键按下
- 请问:在一个机器做好的数据库程序到了另一台机器就提示出了EOLEexception,说是bof或eof有一个是真
- 请问delphi4中如何用createfile函数调用smartvsd.vxd?
- 为什么这样的表拷贝不行??
- ★★★★★★★欢迎试用《文件夹守护神》★★★★★★★★
for i:=0 to 4 do
...其它沒見有什麼明顯錯誤
否则if not assigned(Tasks[i]) then 是false
if not assigned(Tasks[i]) then
这句话错在哪里?
for i:=0 to 4 do
运行通过,谢谢aiirii(ari-爱的眼睛) .
不过还是不解,我定义的是动态数组,开始下标也是由我来定的呀
循环到i=2的时候马上出错: 你查一下StringGrid1.Cells[1,i]是否有问题,或者
可能与你的系统有关,在我机子上是可以的
Tlist
begin
if not assigned(Tasks[i]) then
Tasks[i] := TTask.Create();
Tasks[i].Status := 'Wait';
Tasks[i].SourceName := StringGrid1.Cells[1,i];//这一句注意一下,StringGrid是多大的?
end;
SetLength(a,n)所以用的时候0..n-1,记好了
安全的写法是 for i:=Low(a) to High(a) do
释放的时候 for i:=High(a) downto Low(a) do //尤其是在List里面