Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Es soll keine Version mit den Parametern geben (https://www.delphipraxis.net/134546-es-soll-keine-version-mit-den-parametern-geben.html)

xZise 24. Mai 2009 17:28


Es soll keine Version mit den Parametern geben
 
Hallo ihr,

ich habe ein Problem mit folgendem einfachen Code:

Delphi-Quellcode:
unit UMessageBox;

interface

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

type
  TDialogTyp = (dtNormal, dtFrage, dtFehler, dtWarnung);

function LibMessageBox(const AOwner : TComponent; const ACaption, AText : string; AButtons : TMsgDlgButtons; ADialogTyp : TDialogTyp) : Integer; overload;
function LibMessageBox(const AOwner : TComponent; const ACaption, AText : string; AButtons : TMsgDlgButtons; ADialogTyp : TDialogTyp; OnHilfeClick : TNotifyEvent) : Integer; overload;

implementation

function LibMessageBox(const AOwner : TComponent; const ACaption, AText : string; AButtons : TMsgDlgButtons; ADialogTyp : TDialogTyp) : Integer; overload;
begin
  Result := LibMessageBox(AOwner, ACaption, AText, AButtons, ADialogTyp, nil);
end;

function LibMessageBox(const AOwner : TComponent; const ACaption, AText : string; AButtons : TMsgDlgButtons; ADialogTyp : TDialogTyp; OnHilfeClick : TNotifyEvent) : Integer; overload;
begin
  Result := mrYes; // nur Beispiel
end;

end.
An sich nichts besonderes. Außer dass er in der Zeile 20 rum meckert:
Zitat:

[DCC Fehler] UMessageBox.pas(20): E2250 Es gibt keine überladene Version von 'LibMessageBox', die man mit diesen Argumenten aufrufen kann
Nun warum ist dies so? Weil ich kann doch die OnClick Eigenschaft eines Buttons auch auf "nil" setzen.

MfG
xZise

mirage228 24. Mai 2009 17:29

Re: Es soll keine Version mit den Parametern geben
 
Sowas hatte ich auch mal. Das sollte gehen:
Delphi-Quellcode:
TNotifyEvent(nil)
Viele Grüße

xZise 24. Mai 2009 17:33

Re: Es soll keine Version mit den Parametern geben
 
Danke David für die Schnelle und einfache Lösung :D

Funktioniert so super ;) Danke ^^ hätte ich auch selber drauf kommen können :D

MfG
xZise

jaenicke 24. Mai 2009 17:56

Re: Es soll keine Version mit den Parametern geben
 
Der Grund dafür ist, dass nil auch auf andere Zeigertypen passen würde, und da könnte Delphi dann nicht entscheiden welches die passende Version der überladenen Methoden ist, wenn es mehrere Methoden mit ansonsten identischen Parametern gäbe. Deshalb muss man das Delphi direkt sagen. ;-)

DeddyH 24. Mai 2009 18:02

Re: Es soll keine Version mit den Parametern geben
 
Ich denke mal, dass xZise das auch weiß und nur nicht darauf gekommen ist :mrgreen:

jaenicke 24. Mai 2009 18:56

Re: Es soll keine Version mit den Parametern geben
 
Das liest aber vielleicht auch mal jemand anderes, deshalb ist es auch dann sinnvoll es zu erwähnen, denn dieser Fehler kommt ja öfter mal vor. ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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