E1038 Unit identifier '%s' does not match file name
- create a new project press F12 to switch to code editor, press CTRL+Home and change unit1 to anything else i.e. unit_E1038;
solve
- the unit identifier and the unit file name must perfectly match(case sensitive), i.e. if the identifier after unit keyword is myFavoritUnit then the file name must be myFavoritUnit.pas.
E2003 Undeclared identifier '%s'
problem You must declare the identifier and it's type before you can use it
procedure produce_E2003; begin ShowMessage(myUndeclaredIdentifier); end;solve
procedure solve_E2003; var myDeclaredIdentifier: String; begin myDeclaredIdentifier := 'I love Delphi'; ShowMessage(myDeclaredIdentifier); end;
E2004 Identifier redeclared '%s'
procedure produce_E2004; var myRedeclaredIdentifier: Integer; myRedeclaredIdentifier: Integer; begin ... end;solve
procedure solve_E2004; var mySingleTimeDeclaredIdentifier1: Integer; mySingleTimeDeclaredIdentifier2: Integer; begin ... end;
E2005 '%s' is not a type identifier
This error is shown when you try to declare a variable of an unknown type
procedure produce_E2005; var aVariable: MySuperClass; (* <-- MySuperClass is not defined *) begin end;solve
type MySuperClass = class (* <-- MySuperClass is now defined *) (* ... *) end; procedure solve_E2005; var aVariable: MySuperClass; begin end;E2009/E2010 Incompatible type(s) '%s' (and '%s')
procedure produce_E2009_E2010; var myIntegerVariable: Integer; begin myIntegerVariable := 'a string cannot be assigned to an integer variable'; end;solve
procedure solve_E2009_E2010; var myIntegerVariable: Integer; begin myIntegerVariable := 2009; end;E2014 Statement expected, but expression of type '%s' found
procedure produce_E2014; var myInteger: Integer; begin 2000+14; end;solve
procedure solve_E2014; var myInteger: Integer; begin myInteger := 2000+14; end;E2015 Operator not applicable to this operand type Source: Delphi Help
program Produce;
var
P: ^Integer;
begin
if P and P^ > 0 then
Writeln('P points to a number greater 0');
end.
solve
program Solve;
var
P: ^Integer;
begin
if (P <> nil) and (P^ > 0) then
Writeln('P points to a number greater 0');
end.
E2017 Pointer type required
procedure produce_E2017; var x: TForm; begin x^.ShowModal; end;solve
procedure solve_E2017; var x: TForm; begin x.ShowModal; (* just remove the ^ symbol *) end;E2023 Function needs result type
function produce_E2023; (* no result type!! *) begin end;solve
function solve_E2023: Integer;(* or any other type *) begin end;E2025 Procedure cannot have a result type
procedure produce_E2025: Integer; begin end;solve
procedure solve_E2025; (* I removed ": integer" *) begin end;E2030 Duplicate case label
procedure produce_E2030; var aCase: Integer; begin case aCase of 0: (* do something *); 0: (* here's the duplicate case label "0" *); end; end;solve
procedure solve_E2030; var aCase: Integer; begin case aCase of 0: (* do something *); 4: (* changed from "0" to "4" *); end; end;
No comments:
Post a Comment