Главная страница | назад





Article #16837: Pascal to C++ header file causes internal error GH1281

 Question and Answer Database
FAQ1837C.txt Pascal to C++ header file causes internal error GH1281
Category :IDE
Platform :All
Product :C++Builder 1.x
Question:
Why when trying to import a PAS file into the BCB IDE or
attempting to build at the command line via dcc32 -jphnv
an Internal error GH1281 is generated?
Answer:
A common cause of this error is demonstrated in
the following test case.
If you are assigning a getter or setter to a record
field property of a record member of an object and
that record also contains a user defined type
( like an enum or a typedef ) then the compiler cannot
find the getter or setter and the internal error is
generated. The error only happens when the user type
comes before the field that is being used for a property
so a workaround would be to change the ordering of the
fields. For example, to make the following test case work
move the id Integer field to first in the record. Another
workaround can be to avoid the use of an enum. For example,
changing Num to an Integer from a TNumType avoids the error.
{ this example will generate an internal error GH1281 when
compiled with dcc32 -jphnv
caused by assigning a getter or setter for a record field property
when the field comes after a user defined type in the record. An
enum is demonstrated with TNumType and a typedef is demonstrated
with TNameType ( uncomment to test ) }
unit IntError;
interface
type
TNumType = ( One, Two );
// TNameType = String[8];
TCustomerInfo = record
Num: TNumType;
// Name: TNameType;
id: Integer;
end;
TCustomer = class
public
info : TCustomerInfo;
property Fid : Integer read info.id write info.id;
end;
implementation
end.
7/2/98 10:32:32 AM

Last Modified: 01-SEP-99