community.borland.com

Article #15136: TYPE MISMATCH ERROR COMPILING UNITS

 Technical Notes Database

TN136D.txt   TYPE MISMATCH ERROR COMPILING UNITS
Category   :Pascal
Platform    :All
Product    :Turbo Pascal  4.0+

Description:
Q. Why is the compiler reporting "Type Mismatch Error" when
   I have declared every variable?
A. The most common error of this type is caused by duplicated
   type definitions.  First some background on how Turbo Pascal
   4.0+ works.  All identifiers (procedures, functions, types,
   variables, constants) are handled by appending the module
   name to the front of them  (ie., ProgramName.identifier or
   UnitName.Identifier).  Now, if you have a type, MYTYPE, in
   Unit MyUnit and also in MyProgram you have the following TWO
   DIFFERENT Types :

      MyUnit.MYTYPE and MyProgram.MyType.

   Please notice that by no means does "MyUnit.MYTPYE" equal
   "MyProgram.MYTYPE".  The actual contents of MyType does not
   even enter into this discussion and Turbo Pascal only looks at
   the Type name.

   The Solution?  Declare types only in the interface section of
   the original unit AND NOWHERE ELSE!.   Alternatively, declare
   variables with the file type name (ie., if you want to pass a
   variable of MYTYPE to the unit MyUnit, declare the variable:
   var MyVar :  MyUnit.MYTYPE;).


Reference:


7/16/98 4:35:29 PM
 

Last Modified: 01-SEP-99