3. Identifier redeclared: 'x'

Pôvodný zdrojový kód

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Shape1: TShape;

procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ret: string;

implementation

{$R *.dfm}

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

var x, y: integer;
begin
x:= random(Form1.Width-Shape1.Width);
y:= random(Form1.Height-Shape1.Height);

Shape1.Left:= x;
Shape1.Top:= y;

end;

{

[Error] Unit1.pas(33): Identifier redeclared: 'x'
--------------------------------------------------------------------------------

Viacnásobná deklarácia identifikátoru x.

PREČO?

Formálne parametre a lokálne premenné procedúry majú rovnaké mená.

RIEŠENIE

Lokálnu premennú premenujeme.

alebo

Pokiaľ lokálna premenná nie je potrebná, tak ako v tomto príklade, nepoužijeme ju.

Upravený zdrojový kód

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

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

begin

Shape1.Left:= random(Form1.Width-Shape1.Width);
Shape1.Top:= random(Form1.Height-Shape1.Height);

end;

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

}

 

end.

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