Error: Undeclared identifier

Portál: amos.ukf.sk
Kurz: Programovanie 1
Kniha: Error: Undeclared identifier
Vytlačil(a): Hosťovský používateľ
Dátum: štvrtok, 21 novembra 2024, 21:12

1. Undeclared identifier: 'sucet'

Pôvodný zdrojový kód

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var a, b: integer;
begin
a:= StrToInt(Edit1.Text);
b:= StrToInt(Edit2.Text);

sucet:= a + b;

ShowMessage(IntToStr(sucet));
end;

{

[Error] Unit1.pas(34): Undeclared identifier: 'sucet'
--------------------------------------------------------------------------------

Prekladač nepozná identifikátor sucet.

PREČO?

Premennú sucet sme nedeklarovali.

RIEŠENIE

Premennú sucet dopíšeme do časti var príslušnej procedúry.

Upravený zdrojový kód

--------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var a, b, sucet: integer;
begin
a:= StrToInt(Edit1.Text);
b:= StrToInt(Edit2.Text);

sucet:= a + b;

ShowMessage(IntToStr(sucet));
end;

--------------------------------------------------------------------------------

}
end.

Stiahnuť vzorový príklad (zdrojové kódy v Delphi)

2. Undeclared identifier: 'lenght'

Pôvodný zdrojový kód

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i, poc: integer;
ret: string;
begin
ret:= Edit1.Text;
poc:= 0;

for i:= 1 to lenght(ret) do
if (ret[i]>='a') and (ret[i]<='z') then inc(poc);

Label1.Caption:= 'Pocet malych pismen: ' + IntToStr(poc);
end;

{

[Error] Unit1.pas(35): Undeclared identifier: 'lenght'
--------------------------------------------------------------------------------

Prekladač nepozná identifikátor lenght.

PREČO?

V zápise mena funkcie sme urobili preklep.

RIEŠENIE

Preklep opravíme.

Upravený zdrojový kód

--------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var i, poc: integer;
ret: string;
begin
ret:= Edit1.Text;
poc:= 0;

for i:= 1 to length(ret) do
if (ret[i]>='a') and (ret[i]<='z') then inc(poc);

Label1.Caption:= 'Pocet malych pismen: ' + IntToStr(poc);
end;

--------------------------------------------------------------------------------

}
end.


Stiahnuť vzorový príklad (zdrojové kódy v Delphi)

3. Undeclared identifier: 'Label1'

Pôvodný zdrojový kód

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i, poc: integer;
ret: string;
begin
ret:= Edit1.Text;
poc:= 0;

for i:= 1 to length(ret) do
if (ret[i]>='a') and (ret[i]<='z') then inc(poc);

Label1.Caption:= 'Pocet malych pismen: ' + IntToStr(poc);
end;

{

[Error] Unit1.pas(37): Undeclared identifier: 'Label1'
--------------------------------------------------------------------------------

Prekladač nepozná identifikátor Label1.

PREČO?

Na formulári nie je komponent s týmto názvom.

RIEŠENIE

Komponent Label umiestnime na formulár. V našom prípade žiadny iný Label
na formulári nie je, automaticky sa preto zvolí meno Label1.

Upravený zdrojový kód

--------------------------------------------------------------------------------

}
end.

Stiahnuť vzorový príklad (zdrojové kódy v Delphi)

4. Undeclared identifier: 'Form2'

Pôvodný zdrojový kód

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

 

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;

{

[Error] Unit1.pas(29): Undeclared identifier: 'Form2'
--------------------------------------------------------------------------------

Prekladač nepozná identifikátor Form2.

PREČO?

Premenná Form2 je deklarovaná v inom unite (v našom prípade ide o unit info).

RIEŠENIE

Prekladač programátora upozorní, že chce použiť premennú s iného unitu, ktorý
zabudol uviesť v časti uses.

Na otázku

Form 'Form1' references form 'Form2' declared in unit 'info' which is not in
your USES list? Do you wish to add it?

(Vo formulári Form1 sa odvolávate na formulár Form2 deklarovaný v unite info,
ktorý ste neuviedli v zozname USES, chcete ho tam pridať?)

stačí odpovedať kliknutím na OK.

Alebo meno unitu dopísať v časti USES ručne.

Upravený zdrojový kód

--------------------------------------------------------------------------------
}
end.

Stiahnuť vzorový príklad (zdrojové kódy v Delphi)

5. Undeclared identifier: 'Edit1'

Pôvodný zdrojový kód

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i, poc: integer;
ret: string;
begin
ret:= Edit1.Text;
poc:= 0;

for i:= 1 to length(ret) do
if (ret[i]>='a') and (ret[i]<='z') then inc(poc);

Label1.Caption:= 'Pocet malych pismen: ' + IntToStr(poc);
end;

{

[Error] Unit1.pas(31): Undeclared identifier: 'Edit1'
--------------------------------------------------------------------------------

Prekladač nepozná identifikátor Edit1.

PREČO?

Ale na formulári je komponent Edit.

Programátor vymazal namiesto vlastnosti Text vlastnosť Name.
Komponent tak zostal bez mena, nie je ani v definícii triedy TForm1.

RIEŠENIE

Do vlastnosti Name príslušeného komponentu Edit napíšeme správne meno,
v našom prípade Edit1.

--------------------------------------------------------------------------------

}
end.

Stiahnuť vzorový príklad (zdrojové kódy v Delphi)