function aaa():TBitmap ;
VAR
B:tBITMAP;
begin
B:=TBitmap.Create;
try
B.loadfromfile('1.BMP');
Result:=B;
finally
B.FREE;
end;end;
procedure TForm3.Button1Click(Sender: TObject);
var
t:TBitmap;
begin
t:=TBitmap.Create;
try
t:=aaa;
t.SaveToFile('2.bmp');
finally
t.Free;
end;
我只想说明的是一个问题, 类是不是不能在函数(function)中引用,
以上我只举了一个简单例子 实际我遇到的是 凡是函数中的类.create 我都会弹出 什么invalid point operate
除了这个问题 我还希望Active DLL中的自定义函数 也可以直接引用类请高手回答,菜鸟走开谢谢啦
VAR
B:tBITMAP;
begin
B:=TBitmap.Create;
try
B.loadfromfile('1.BMP');
Result:=B;
finally
B.FREE;
end;end;
procedure TForm3.Button1Click(Sender: TObject);
var
t:TBitmap;
begin
t:=TBitmap.Create;
try
t:=aaa;
t.SaveToFile('2.bmp');
finally
t.Free;
end;
我只想说明的是一个问题, 类是不是不能在函数(function)中引用,
以上我只举了一个简单例子 实际我遇到的是 凡是函数中的类.create 我都会弹出 什么invalid point operate
除了这个问题 我还希望Active DLL中的自定义函数 也可以直接引用类请高手回答,菜鸟走开谢谢啦
function aaa():TBitmap ;
begin
Result:=TBitmap.Create;
Result.loadfromfile('1.BMP');
end;end;
procedure TForm3.Button1Click(Sender: TObject);
var
t:TBitmap;
begin
t:=aaa;
try
t.SaveToFile('2.bmp');
finally
t.Free;
end;
en;
在COM DLL中
ABC= class
constructor ABC.Create(const AName : String);
begin
self.Name:=AName;
self.Width:=0;
self.Height:=0;
self.BackColor:=BD_COLORLESS;
self.LineWidth:=0;
self.Size:=0;
self.BufSize:=0;
self.Bits:=nil;
self.Error:='';
end;
--------------------------------------
做如下类的引用报错 无提示退出
var
x:abc;
begin
x:=abc.create // 这句无法实例化
不知道为什么啊?
如果用系统的TBITMAP
就可以实例化
x:=tbitmap.create
constructor ABC.Create(const AName : String);
begin
inherited Create;
self.Name:=AName;
self.Width:=0;
self.Height:=0;
self.BackColor:=BD_COLORLESS;
self.LineWidth:=0;
self.Size:=0;
self.BufSize:=0;
self.Bits:=nil;
self.Error:='';
end;
--------------------------------------
做如下类的引用报错 无提示退出
var
x:abc;
begin
x:=abc.create('abcd') // 这句无法实例化
类对象变量只是一个指针,指向分配在对上的内存,通过指针的指向释放在堆上申请的内存,Free之后,指针中存储的地址并不为空,但是该地址指向的内容已经被系统回收。此时该指针就是一个野指针。
var
t:TBitmap;
begin
t:=TBitmap.Create; // 这句用不了了。因为在 AAA中已有返回了。前提是 AAA中的 Finally中不应FREE
try
t:=aaa;
t.SaveToFile('2.bmp');
finally
t.Free;
end;
Result.assign(B);因为tbitmap是对象类
:= 只会传指针(或是内存地址,这两个我总搞不清)
assign 则是传实际内容
有没人总结下,哪些类":="操作等于"Assign"
我只知道一个:TStrings类的Items的":="操作等于"Assign"