FFileName 是一个变量 FFileName := AFileName正确,由于在控件内部所以可以赋值,如果在外部就不行了,而且FFileName在部是不可见的。
FileName是一个属性, FileName := AFileName就是给属性赋值,这个过程就用到了属性的write,因为定义中FileName没有write,所有对其赋值就会产生错误,编译是不能通过的。
假设FileName 有个write SetFileName如下:
procedure TDBRead.SetFileName(Value: string);
begin
if Value <> FFileName then
begin
FFileName := Value;
// Can do other thing;
end;
end;
那么执行FFileName := AFileName FileName := AFileName后FFileName都=AFileName,但是后者要执行SetFileName过程,而前者则不。