Question and Answer Database FAQ: FAQ4648C — Working around GH1949 internal error. Category: Compiler Platform: All-32Bit Product: C++Builder4.x, Question: I'm compiling a Delphi unit in Builder and am getting internal error GH1949. The code compiled fine in Delphi. What does it mean and how do I fix it? Answer: The problem here is a bug in the header generation portion of the delphi compiler included with Builder (dcc32.exe). This bug commonly surfaces when your code defines a class inheritance structure looks something like this: type AncestorClass = class protected AncestorField: Integer; end; BaseClass = class(AncestorClass); MyClass = class(BaseClass) protected procedure SetField(const Value: Integer); public property MyField: Integer read AncestorField write SetField; end; MyClass.MyField's read is set to AncestorField, but the bug keeps the compiler from finding AncestorField. Instead, the compiler sees the empty field list in BaseClass and doesn't look any deeper in the ancestry. To work around this bug, simply add a read function to BaseClass that MyClass.MyField can reference. The definition of BaseClass becomes: BaseClass = class(AncestorClass) protected function GetAncestorField: Integer; end; The definition of MyClass becomes: MyClass = class (BaseClass) protected procedutre SetField(const Value: Integer); public property MyField: Integer read GetAncestorField write SetField; end; 8/4/99 11:52:49 AM
Last Modified: 01-SEP-99