Question and Answer Database FAQ2126D.txt Getting stronger type checking Category :VCL Platform :All Product :All 32 bit Question: How can I get Delphi to perform stronger type checking on user defined types. Example: If I create a user defined type that descends from a double, I can pass a variable of this new type to any function that expects a double. I want Delphi to provide stronger type checking and produce a warning in this instance. Answer: The following example demonstrates Delphi's new Strong type checking types, allowing you to define types that require stronger type checking at compile time. Example: type TStrongType = type Double; type TWeakType = Double; procedure AddWeakType(var d : TWeakType); begin d := d + 1; end; procedure AddStrongType(var d : TStrongType); begin d := d + 1; end; procedure AddDoubleType(var d : Double); begin d := d + 1; end; procedure TForm1.Button1Click(Sender: TObject); var d : Double; s : TStrongType; w : TWeakType; begin AddDoubleType(d); { compiles fine } AddDoubleType(w); { compiles fine } AddDoubleType(s); { <- compile error } AddDoubleType(double(s)); { compiles fine } AddWeakType(d); { compiles fine } AddWeakType(w); { compiles fine } AddWeakType(s); { <- compile error } AddWeakType(TWeakType(s)); { compiles fine } AddStrongType(d); { <- compile error } AddStrongType(TStrongType(d)); { compiles fine } AddStrongType(w); { <- compile error } AddStrongType(TStrongType(w)); { compiles fine } AddStrongType(s); { compiles fine } end; 7/16/98 4:31:28 PM
Last Modified: 01-SEP-99