Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Freiwillige Variable... (https://www.delphipraxis.net/4641-freiwillige-variable.html)

Florian H 7. Mai 2003 13:19


Freiwillige Variable...
 
Hi!

Wie kann ich, wenn ich eine Function mache, eine Rückgabevariable so deklarieren, das sie nicht angegeben werden MUSS, aber angegeben werden kann!

also sowas in der art:

function BSP(wert1,wert2:integer; var Rückgabewert1, rückgabewert2 : integer) : boolean;
....


sodass also das rote freiwillg ist!


gruß delphi

Chewie 7. Mai 2003 13:25

Das geht leider nicht. Ein Vorgabeparameter ist nur möglich, wenn es sich um einen Wert-Parameter oder einen Konstantenparameter handelt, also so:

Delphi-Quellcode:
procedure DoSomething(var Wert1: Integer = 0); //geht nicht
procedure DoSomething(const Wert1: Integer = 0); //geht
procedure DoSomething(Wert1: Integer = 0); //geht

Jens Schumann 7. Mai 2003 13:47

Hallo,
Du musst ja nicht unbedingt Integers als var-Parameter übergeben. Du kannst ja die Integer als PInteger deklarieren.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    function BSP(wert1,wert2:integer;R1 : PInteger = Nil;R2 : PInteger = Nil) : boolean;

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }


{ TForm1 }

function TForm1.BSP(wert1, wert2: integerR1 : PInteger = Nil;R2 : PInteger = Nil): boolean;
begin
  {Damit hier irgendetwas passiert}
  Result:=True;
  If wert1=wert2 then
    Result:=True;
  If (wert1<>wert2) and (R1<>Nil) and (R2<>Nil) then
    begin
    R1^:=wert2;
    R2^:=wert1;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   a,b : Integer;
begin
  a:=5;
  b:=6;
  BSP(a,b,@a,@b);
  {Schau Dir mal hier die Werte für a und b an }
end;

end.

Christian S. 7. Mai 2003 13:49

Du könntest auch mehrere Funktionen gleichen Namens mit "overload" deklarieren und dann getrennt implementieren. So irgendwie:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    function my_function(param1 : Integer; var my_var : Integer) : Boolean; overload;
    function my_function(param1 : Integer) : Boolean; overload;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function tform1. my_function(param1 : Integer; var my_var : Integer) : Boolean;
begin
  my_var:=1;
  result:=true;
end;
function tform1. my_function(param1 : Integer) : Boolean;
begin
  result:=false;
end;

end.


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