3. 'END' expected but 'PROCEDURE' found

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;
Edit1: TEdit;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var n: integer;
begin
n:= StrToInt(Edit1.Text);
if n mod 2 = 0 then Label1.Caption:= 'Parne cislo'
else Label1.Caption:= 'Neparne cislo'

procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= 'Pocet cislic: ' + IntToStr(length(Edit1.Text));
end

procedure TForm1.Button3Click(Sender: TObject);
var n, pocet: integer;
begin
n:= StrToInt(Edit1.Text);
pocet:= 0;
while n>0 do begin
if (n mod 10) mod 10 = 1 then inc(pocet);
n:= n div 10;
end;
Label1.Caption:= 'Pocet jednotiek v cisle: ' + IntToStr(pocet);
end;

{

[Error] Unit1.pas(40): 'END' expected but 'PROCEDURE' found
[Error] Unit1.pas(45): ';' expected but 'PROCEDURE' found

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

Očakávala sa END ale našlo sa PROCEDURE
Očakávala sa ; ale našlo sa PROCEDURE

PREČO?

Prvú chybu spôsobilo chýbajúce end.

V tomto prípade je potrebné chybu hľadať niekde v programe PRED miestom,
kde bola objavená.

Druhú chybu spobila chýbajúca bodkočiarka.

RIEŠENIE

Zistíme, ku ktorému begin chýba end a doplníme ho. V našom prípade ide o end
na konci procedúry Button1Click.

Dopíšeme bodkočiarku za end procedúry Button2Click

Upravený zdrojový kód

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

procedure TForm1.Button1Click(Sender: TObject);
var n: integer;
begin
n:= StrToInt(Edit1.Text);
if n mod 2 = 0 then Label1.Caption:= 'Parne cislo'
else Label1.Caption:= 'Neparne cislo'
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= 'Pocet cislic: ' + IntToStr(length(Edit1.Text));
end;

procedure TForm1.Button3Click(Sender: TObject);
var n, pocet: integer;
begin
n:= StrToInt(Edit1.Text);
pocet:= 0;
while n>0 do begin
if (n mod 10) mod 10 = 1 then inc(pocet);
n:= n div 10;
end;
Label1.Caption:= 'Pocet jednotiek v cisle: ' + IntToStr(pocet);
end;

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

}

end.

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