![]() |
Delphi-Version: 10 Berlin
Boolean var-Parameter in Prozedur mit Vorgabewert?
Delphi-Quellcode:
Ist es irgendwie möglich Fall #2 dazu zu bewegen sich kompilieren zu lassen?
// global
var BoolVar: Boolean; procedure TestProc(a: string; var x: Boolean); begin x := True; ..... x := False; end; TestProc('abc', BoolVar); // #1 TestProc('abc'); // #2 Ich möchte den Code etwas kürzer gestalten und nicht um jedes TestProc BoolVar := True und False schreiben. Deswegen dachte ich gebe ich das der Funktion bei Bedarf einfach mit. Manchmal brauche ich diese Variable aber gar nicht. |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Kurze Antwort: Nein.
Führe eine Überladung ein welche den Parameter dann halt nicht hat. Ansonsten gibt es keine Alternative. |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Einfach mit einem Default-Wert belegen sollte ausreichen:
Delphi-Quellcode:
Kann aber sein, dass das bei Var-Parametern nicht funktioniert. Habe ich noch nicht getestet
procedure TestProc(a: string; var x: Boolean = True);
|
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Ok Fall somit erledigt. Danke.
|
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Ich sehe gerade, dass du nur einen Rückgabewert hast.
Dann kannst du doch auch eine Function davon machen. Dann benötigst du auch keinen Var-Parameter und kannst ganz sicher mit Default-Parametern hantieren. |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Zitat:
Bevor TestProc aufgerufen wird, soll die Variable auf True gestellt werden. Ist die Arbeit getan auf False. Das hat den Hintergrund, dass ich den Wert dieser Variable an anderen Stellen abfrage. Ist der Wert zum Zeitpunkt der Abfrage auf True weiß ich, dass die Arbeit noch nicht getan ist. Genau genommen handelt es sich hier um den FadeIn/Out-Effect eines TForms. Nur zur Veranschaulichung wie es vorher war
Delphi-Quellcode:
Die markierten Stellen möchte ich nur ungerne dutzende Male schreiben müssen. Daher der Umweg mit dem var-Parameter.
// global
var BoolVar: Boolean; procedure TestProc(a: string; var x: Boolean); begin ..... end; BoolVar := True; // <== TestProc('abc'); BoolVar:= False: // <== |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Zitat:
Wenn es die externe Variable nicht gibt, dann kann sie auch keinen Wert haben. Lösung siehe #2. Die andere Alternative wäre ein Pointer, statt einem Var, aber so schön ist das nicht unbedingt.
Delphi-Quellcode:
oder
procedure TestProc(a: string; x: PBoolean=nil);
var y: Boolean; begin if not Assigned(x) then x := @y; x^ := True; ..... x^ := False; end;
Delphi-Quellcode:
procedure TestProc(a: string; x: PBoolean=nil);
begin if Assigned(x) then x^ := True; ..... if Assigned(x) then x^ := False; end; |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
@himitsu:
Du hast natürlich Recht. Als Var-Parameter kann das nicht funktionieren. @Glados: Wenn du keinen Rückgabewert benötigst, dann kannst du das doch als "normalen" Parameter übergeben. Dann funktioniert es auch mit einem Default-Wert und du musst ihn beim Prozedur-Aufruf nicht mehr zwingend übergeben. |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
Zitat:
Aber würde dann die globale Variable auch in TestProc neu gesetzt werden? |
AW: Boolean var-Parameter in Prozedur mit Vorgabewert?
In deinem konkreten Fall würde ich eher einen Parameter vom Typ
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz