我在通过字符串创建对象时碰到的问题,那个大虾知道帮看看哦
一个自定义的类
type
TSampleClass=class(TPersistent)
private public
i:integer;
j:integer;
function add:integer;
end;function tsampleclass.add: integer;
begin
result:=i+j;
end;
调用:
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClasses([TSampleClass]);
end;procedure TForm1.Button4Click(Sender: TObject);
var
lSampleClass,lSample:TSampleClass;
begin
lSampleClass := TSampleClass(FindClass('TSampleClass'));
lSample := TSampleClass(lSampleClass).Create;
lSample.i:=10;
lSample.j:=30;
edit1.Text:=inttostr(lSample.add);
end;
在执行: lSample := TSampleClass(lSampleClass).Create;出错:
Access violation at Address D9E9C3FF
这是哪里错啊,是我自己类建的哪里有问题吗
一个自定义的类
type
TSampleClass=class(TPersistent)
private public
i:integer;
j:integer;
function add:integer;
end;function tsampleclass.add: integer;
begin
result:=i+j;
end;
调用:
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterClasses([TSampleClass]);
end;procedure TForm1.Button4Click(Sender: TObject);
var
lSampleClass,lSample:TSampleClass;
begin
lSampleClass := TSampleClass(FindClass('TSampleClass'));
lSample := TSampleClass(lSampleClass).Create;
lSample.i:=10;
lSample.j:=30;
edit1.Text:=inttostr(lSample.add);
end;
在执行: lSample := TSampleClass(lSampleClass).Create;出错:
Access violation at Address D9E9C3FF
这是哪里错啊,是我自己类建的哪里有问题吗
procedure TForm1.FormCreate(Sender: TObject);
begin
//RegisterClasses([TSampleClass]);不需要
end;
procedure TForm1.Button4Click(Sender: TObject);
var
lSampleClass,lSample:TSampleClass;
begin
lSample := TSampleClass.Create;
lSample.i:=10;
lSample.j:=30;
edit1.Text:=inttostr(lSample.add);
end;
var
lSampleClass,lSample:TSampleClass;
begin
lSample := TSampleClass.Create;
lSample.i:=10;
lSample.j:=30;
edit1.Text:=inttostr(lSample.add);
lSample.Free;//别忘了释放资源
end;
lSample:TSampleClass;
begin
lSample:= TSampleClass(FindClass('TSampleClass').create);
with lSample do
begin
i:=10;
j:=30;
end;
edit1.Text:=inttostr(lSample.add);
end;
lSampleClass : TClass;
lSample:TSampleClass;
button : TButton;
begin
lSampleClass := (FindClass('TSampleClass'));
lSample := TSampleClass(lSampleClass.Create);
lSample.i:=10;
lSample.j:=30;
edit1.Text:=inttostr(lSample.add);