Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi var Parameter in Ereignis (https://www.delphipraxis.net/40056-var-parameter-ereignis.html)

Pseudemys Nelsoni 10. Feb 2005 13:42


var Parameter in Ereignis
 
Hi,

ich wollte gerade ein eigenes Ereignis schreiben:

Delphi-Quellcode:
TOnLogon = procedure(var HaltDef: Boolean = False);
nur sagt delphi da:

Zitat:

[Error] IRCClient.pas(19): Default parameter 'HaltDef' must be by-value or const
Wieso kann ich kein Var parameter mitgeben?

Es gibt doch auch sowas wie:

Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

jfheins 10. Feb 2005 13:51

Re: var Parameter in Ereignis
 
Ich würde mal sagen, beim OnCloseQuery wird CanClose auf true gesetzt, und dann dafst du es noch verändern, wenn du lustig bist :mrgreen:

Machs doch genauso ...
Das "= False" weg, und jedes mal manuell vorher setzen

Steve 10. Feb 2005 13:59

Re: var Parameter in Ereignis
 
Hi,

dass ein var-Parameter kein default-Parameter sein kann, leuchtet doch irgendwie ein, denn wenn der Parameter default ist, muss er nicht übergeben werden, da er aber var ist, könnte er theor. geändert werden. -> Etwas nicht vorhandenes (übergebenes) zu ändern gestaltet sich schwierig :mrgreen:

o.g. Lösung erscheint mir auch als geeignet :)

Gruß
Stephan :dance:

Binärbaum 11. Feb 2005 02:18

Re: var Parameter in Ereignis
 
Da kann ich Steve nur zustimmmen, dass sowas nicht geht.
Der Vorteil bei solchen default-Parametern ist ja auch, dass man den Parameter beim Aufruf nicht unbedingt mit angeben muss (aber kann), da ja hierfür der default-Wert verwendet wird.
Also kann man die Prozedur
Delphi-Quellcode:
procedure ParameterOderNicht(param1: Char= 'A');
folgendermaßen aufrufen:
Delphi-Quellcode:
  //mit Parameter:
  ParameterOderNicht('B');
  //ohne Parameter:
  ParameterOderNicht;
Beide Varianten sind zulässig. Das ist u.a. dann von Vorteil, wenn eine Prozedur bis auf wenige Ausnahmen immer mit demselben Parameterwert aufgerufen wird und nur selten mit anderen Werten. Dann braucht man die Parameter nicht jedesmal mit in den Quelltext zu schreiben.
(Praktisch für schreibfaule Programmierer :) )

MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.

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