Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Compiler: Methode X verbirgt virtuelle Methode vom Basistyp (https://www.delphipraxis.net/68686-compiler-methode-x-verbirgt-virtuelle-methode-vom-basistyp.html)

Martin K 3. Mai 2006 19:55


Compiler: Methode X verbirgt virtuelle Methode vom Basistyp
 
Habe folgendes Problem:

Ich habe eine abgeleitete Komponente der TIniFile:
Delphi-Quellcode:
type
  TIni = class(TIniFile)
    {...}
  public
    {..}
    function DeleteKey(const Section, Key: String): Boolean;
  end;
Hier kommt es zu folgender Fehlermeldung:
Zitat:

[Warnung] Inis.pas(27): Methode 'DeleteKey' verbirgt virtuelle Methode vom Basistyp 'TIniFile'
Was diese Meldung bedeutet, weiß ich schon.
Ich würde nur gerne wissen, wie ich sie wegbekomme /das Problem lösen kann.

Oder ist die einzige Möglichkeit, die Funktion umzubenennen?

mirage228 3. Mai 2006 19:56

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
Hi,

schau mal unter Delphi-Referenz durchsuchenreintroduce ;)

mfG
mirage228

Martin K 3. Mai 2006 19:58

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
Danke, das war's :thumb:

Delphi-Quellcode:
type
  TIni = class(TIniFile)
    {...} 
  public
    {..} 
    function DeleteKey(const Section, Key: String): Boolean; reintroduce;
  end;
*freu*

Chewie 3. Mai 2006 19:58

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
Willst die die alte Methode überschreiben, verwende Delphi-Referenz durchsuchenoverride.
Willst du eine neue mit dem gleichen Namen und gleichen Parametern einführen, verwende Delphi-Referenz durchsuchenreintroduce

Martin K 3. Mai 2006 20:04

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
Eigentlich sollte die alte Methode schon noch vorhanden sein, habe es auch mit override; zuerst probiert, doch da kam diese Meldung:

Zitat:

[Fehler] Inis.pas(27): Deklaration von 'DeleteKey' unterscheidet sich von vorheriger Deklaration

Chewie 3. Mai 2006 20:06

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
DU kannst natürlich nur Methoden mit der gleichen Signatur überladen. In deinem Fall wäre noch Delphi-Referenz durchsuchenoverload eine Möglichkeit.

Martin K 3. Mai 2006 20:11

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
Bei overload kommt auch die ursprüngliche Meldung:
Zitat:

[Warnung] Inis.pas(27): Methode 'DeleteKey' verbirgt virtuelle Methode vom Basistyp 'TIniFile'
Ich denke mal, das hat damit zu tun, dass die ursprüngliche Methode eine Prozedur ist, während meine eine Funktion ist (mit dem selben Namen eben).

Aber mit reintroduce funzt es ohne Probleme.
Ich hatte zwar das geschrieben
Zitat:

Zitat von Martin K
Eigentlich sollte die alte Methode schon noch vorhanden sein

aber, auch wenn ich reintroduce verwende, kann ich ja mit inherited immer noch auf die ursprüngliche Methode zugreifen.

SirThornberry 3. Mai 2006 20:13

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
ich würde die procedure überschreiben und dann zusätzlich überladen.

Martin K 3. Mai 2006 20:18

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
@SirThornberry:
Meinst Du so????
Delphi-Quellcode:
  function DeleteKey(const Section, Key: String): Boolean; override; overload;

SirThornberry 3. Mai 2006 20:26

Re: Compiler: Methode X verbirgt virtuelle Methode vom Basis
 
nicht ganz. Du schreibst ja das es im Original eine Procedure ist. Dementsprechend musst du wieder eine Procedure machen (mit override) und zusätzlich deine Funktion. Allerdings weiß ich nicht ob der Compiler meckert wenn die Procedure und die Funktion dann die gleichen Parameter haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz