Cédric Joubert wrote:
> I've made a little example that works fine, but i don't know if it is what 
> you were expecting.
> The problem is :
> if you replace all my "class function" with simple functions, it still 
> works...
> so my example do not show the using of generic reference of class you were 
> attending ;-)
> 
> [...]
> 
> procedure TForm1.Test(AFormatType : enumFormatter);
> var
>   myClass : TFormatterClass;
>   ftClass : TFormatter;

Rename "myClass" to be "ftClass" and then get rid of the TFormatter 
variable. (The prefix "my" doesn't really describe the code in terms of 
what it does. It describes the code in terms of who wrote it, and then 
only when you already know who wrote it. It alienates everyone else 
reading your code, too.)

> begin
>   myClass := nil;
> 
>   case AFormatType of
>     ftArrangementNumber : myClass := TArrangementNumberFormatter;
>     ftCustomerNumber : myClass := TCustomerNumberFormatter;
>   end;
>   ftClass := myClass.Create;
> 
>   ShowMessage(ftClass.FormatString('Text to format'));

Now that you've gotten rid of the instance variable, get rid of the line 
that calls the constructor. You're creating an instance of a class that 
never needs to have an instance. You can call class methods directly on 
the class-reference variable.

-- 
Rob
_______________________________________________
Delphi mailing list -> Delphi@elists.org
http://lists.elists.org/cgi-bin/mailman/listinfo/delphi

Reply via email to