Warnung: Variable im Elternobjekt schon deklariert

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Jo@Win
Beiträge: 18
Registriert: Do 3. Jan 2013, 14:57

Warnung: Variable im Elternobjekt schon deklariert

Beitrag von Jo@Win »

Hallo,
gibt es eine Möglichkeit, dass der Compiler eine Warnung ausgibt, wenn eine Variable noch einmal deklariert wird, obwohl eine gleichnamige im Elternobjekt schon vorhanden ist?
Beispiel:
Unit1
TParent=class(TObject)
protected
ABool:Boolean;
public
property BoolVal:boolean read ABool;
end;

Unit2
TChild=class(TParent)
privat
ABool:Boolean;
public
procedure aproc;
end;
procedure TChild.aproc;
begin
ABool:= true;

if BoolVal then
....
end;

Das gibt durcheinander!
Ist natürlich stark vereinfacht, aber denke das Problem ist ersichtlich

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Warnung: Variable im Elternobjekt schon deklariert

Beitrag von Socke »

Ich erhalte mit FPC 3.3.1 eine Fehlermeldung: Error Duplicate identifier "ABool"
Da ich hier eine Entwicklerversion des FPCs habe, weiß ich nicht, ab welchem Release das so ist.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Jo@Win
Beiträge: 18
Registriert: Do 3. Jan 2013, 14:57

Re: Warnung: Variable im Elternobjekt schon deklariert

Beitrag von Jo@Win »

Danke für die schnelle Antwort.
Ich habe auch den fpc 3.3.1 svn revision 60422M.
Kann es daran liegen, dass im Original beide im protected sind. Auch sind es zwei units...
Ich probiere es aber auch mal mit einer neueren Version vom fpc aus.

Jo

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Warnung: Variable im Elternobjekt schon deklariert

Beitrag von PascalDragon »

Wird dein Code in Modus ObjFPC oder Delphi kompiliert? Ersterer ist nämlich strikter und generiert einen Fehler bei deinem Code, bei zweiten gibt es keinen Fehler und auch keine Warnung (weil Delphi das eben auch nicht macht). Du kannst dieses Verhalten auch unabhängig vom Mode mit {$modeswitch DuplicateLocals} ein und mit {$modeswitch DuplicateLocals-} ausschalten (muss hinter dem {$mode ...} gesetzt werden und gilt jeweils für die aktuelle Unit).

Dieses Verhalten existiert übrigens schon lange.
FPC Compiler Entwickler

Jo@Win
Beiträge: 18
Registriert: Do 3. Jan 2013, 14:57

Re: Warnung: Variable im Elternobjekt schon deklariert

Beitrag von Jo@Win »

Ja das war es!
Vielen Dank
👍🏻

Antworten