Delphi Compiler Error
E2119 Structure field identifier expected
Reason for the Error & Solution
The inline assembler recognized an identifier on the right side of a ‘.’, but it was not a field of the record found on the left side of the ‘.’. One common, yet difficult to realize, error of this sort is to use a record with a field called ‘ch’ – the inline assembler will always interpret ‘ch’ to be a register name.
program Produce; type Data = record x : Integer; end; procedure AssemblerExample(d : Data; y : Char); asm mov eax, d.y end; begin end.
In this example, the inline assembler has recognized that ‘y’ is a valid identifier, but it has not found ‘y’ to be a member of the type of ‘d’.
program Solve; type Data = record x : Integer; end; procedure AssemblerExample(d : Data; y : Char); asm mov eax, d.x end; begin end.
By specifying the proper variable name, the error will go away.