AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Form mit neuem Konstruktor -> Warnung des Compilers
Thema durchsuchen
Ansicht
Themen-Optionen

Form mit neuem Konstruktor -> Warnung des Compilers

Ein Thema von Andreas H. · begonnen am 23. Sep 2007 · letzter Beitrag vom 23. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#1

Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 10:25
Hallo,

ich habe für eine Form einen Constructor hinzugefügt.

Delphi-Quellcode:
 
type
  TDocsChildForm = class(TForm)
  //...
  public
    { Public-Deklarationen }
    constructor create(sender:TComponent;QueryInfo:TQueryInfo); overload;
  //...

// Konstruktor mit Query-Info-Übergabe
// ----------------------------------------------------------------------------
constructor TDocsChildForm.create(sender: TComponent; QueryInfo: TQueryInfo);
begin
  // Form erstellen
  inherited create(sender);

  // QueryInfo speicherm
  FQueryInfo:=QueryInfo;
end;
Jetzt kommt immer die Warnung:
Zitat:
[Pascal Warnung] DocsChild.pas(203): W1010 Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TCustomForm'
Warum? Der neue Konstruktor hat doch ne andere Signatur. Oder habe ich da was nicht verstanden?

Gruß Andreas
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 10:42
moin, nimm mal override anstelle von overload, vielleicht ist dann die Warnung weg.
Karl-Heinz
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#3

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 10:49
Zitat von Progman:
moin, nimm mal override anstelle von overload, vielleicht ist dann die Warnung weg.
das wird nicht funktionieren, da man nur mit gleicher Signatur ein OVERRIDE verwenden kann
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 10:54
Ergänz mal auch noch virtual.

Ich würde aber QueryInfo als Property implementieren um nicht dem Designkonzept der VCL entgegen zu arbeiten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 10:56
hm, auf meinem Turbo-Delphi funktioniert es, und notfalls kann man auch noch "reintroduce" dahinter schreiben, das unterdrückt die Compiler-Warnung
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 11:08
Hallo,

noch ne weitere Info: die Form ist ein MDIChild, deshalb wollte ich die erforderlichen Infos gleich beim Create mitgeben.

Reintroduce möchte ich nicht verwenden, da dann ja der alte Konstruktor nicht mehr erreichbar ist

Und Override geht tatsächlich nicht.

Aber mit anderen Klassen funktioniert das mit dem Overdrive doch, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 11:11
Zitat von Progman:
hm, auf meinem Turbo-Delphi funktioniert es, und notfalls kann man auch noch "reintroduce" dahinter schreiben, das unterdrückt die Compiler-Warnung
Die Meldung wird nicht "Unterdrückt" sondern es wird einfach die Überschreibungshierarchie "gekappt". hast du nun eine Formular der Basisklasse so wird beim Aufruf nur die letzmalige Überschreibung vor reintroduce aufgerufen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.893 Beiträge
 
Delphi 12 Athens
 
#8

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 11:18
Ich würde hier an Deiner Stelle einfach die Möglichkeit nutzen, dass ein Object mehrere Constructors haben kann.
Machs z. B. so:

Delphi-Quellcode:
type
  Tinfo = class end;
  TForm1 = class(TForm)
  private
    fInfo : TInfo;
  public
    constructor CreateInitialized (Owner : TComponent; info : TInfo);
  end;

implementation

constructor TForm1.CreateInitialized(Owner: TComponent; info: TInfo);
begin
  Create (Owner);
  finfo := info;
end;

end.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 11:30
OK,

das werde ich wohl so machen.

Allerdings habe ich das mit dem Erstellen von Funktionen/Prozeduren mit gleichem Namen und unterschiedlicher Signatur schon gemacht und habe keine Warnung bekommen. Dann ist das wohl bei Konstruktoren anders, oder?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Form mit neuem Konstruktor -> Warnung des Compilers

  Alt 23. Sep 2007, 11:31
Nein. Aber vermutlich waren deine damaligen Methoden nicht virtuell...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
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