Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi optionale Parameter mit object-type? (https://www.delphipraxis.net/189208-optionale-parameter-mit-object-type.html)

SearchBot 18. Mai 2016 01:10

Delphi-Version: XE

optionale Parameter mit object-type?
 
Hallo,

ich habe da ein kleines Object aber keine Klasse deklariert:
Code:
type TScript = object
  private
   line:word;
   state:TStatus;
  public
   script:TStringList;
   error:string;
   function Init(scriptfile:string):boolean;
end;

function Interpreter(cmd:string; Modus:TModus; inScript:TScript):TStatus;
Die Interpreter-Function ist sehr umfangreich.
Jetzt habe ich manchmal den Fall, daß ich die Interpreter-Function auch ohne "inScript" aufrufen möchte.

Ich kann den Parameter aber nicht einfach auf NIL setzen, das läßt der Compiler nicht zu.
Ich möchte jedoch nicht nochmal die fast gleiche, umfangreiche Function schreiben und mit OVERLOAD versehen (dann alternativ ohne "inScript").

Wie kann ich auf einfache Weise die Funktion deklarieren, daß der "inScript"-Parameter optional ist?
:?:

milos 18. Mai 2016 01:37

AW: optionale Parameter mit object-type?
 
Zitat:

Zitat von SearchBot (Beitrag 1338309)
Hallo,

ich habe da ein kleines Object aber keine Klasse deklariert:
Code:
type TScript = object
  private
   line:word;
   state:TStatus;
  public
   script:TStringList;
   error:string;
   function Init(scriptfile:string):boolean;
end;

function Interpreter(cmd:string; Modus:TModus; inScript:TScript):TStatus;
Die Interpreter-Function ist sehr umfangreich.
Jetzt habe ich manchmal den Fall, daß ich die Interpreter-Function auch ohne "inScript" aufrufen möchte.

Ich kann den Parameter aber nicht einfach auf NIL setzen, das läßt der Compiler nicht zu.
Ich möchte jedoch nicht nochmal die fast gleiche, umfangreiche Function schreiben und mit OVERLOAD versehen (dann alternativ ohne "inScript").

Wie kann ich auf einfache Weise die Funktion deklarieren, daß der "inScript"-Parameter optional ist?
:?:

Hi,

wie wärs mit nem Overload der dann einfach ein leeres TScript übergibt? Und wozu genau ein object? :D

Freundliche Grüsse

HolgerX 18. Mai 2016 04:20

AW: optionale Parameter mit object-type?
 
Hmm..

wie währe es mit folgender Deklaration

Delphi-Quellcode:
function Interpreter(cmd:string; Modus:TModus; inScript:TScript = nil):TStatus;


Mit dem ' = nil' kann das Object doch einfach beim Aufruf weggelassen werden.
Musst dann nur in der implementation der Funktion überall vor Verwendung von inScript auf Assigned prüfen..

hoika 18. Mai 2016 04:51

AW: optionale Parameter mit object-type?
 
Hallo,
warum lässt der Compiler das nicht zu?
Zeig doch mal Deinen Code.

uligerhardt 18. Mai 2016 05:59

AW: optionale Parameter mit object-type?
 
Zitat:

Zitat von hoika (Beitrag 1338316)
warum lässt der Compiler das nicht zu?

TScript ist ein old-style-object, keine class.

uligerhardt 18. Mai 2016 06:00

AW: optionale Parameter mit object-type?
 
Zitat:

Zitat von SearchBot (Beitrag 1338309)
Ich möchte jedoch nicht nochmal die fast gleiche, umfangreiche Function schreiben und mit OVERLOAD versehen (dann alternativ ohne "inScript").

Du kannst doch in der einen Überladung einfach die andere aufrufen.

Uwe Raabe 18. Mai 2016 06:16

AW: optionale Parameter mit object-type?
 
Bist du sicher, daß das wirklich so sein soll
Delphi-Quellcode:
type TScript = object
und nich so
Delphi-Quellcode:
type TScript = class
?

In dem Fall würde mich schon der Grund interessieren.

milos 18. Mai 2016 06:22

AW: optionale Parameter mit object-type?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1338320)
Bist du sicher, daß das wirklich so sein soll
Delphi-Quellcode:
type TScript = object
und nich so
Delphi-Quellcode:
type TScript = class
?

In dem Fall würde mich schon der Grund interessieren.

Dachte ich eben auch ^^
Hab in den ganzen Jahren noch nie object verwendet wüsste auch nicht wozu. :lol:

Rollo62 18. Mai 2016 08:08

AW: optionale Parameter mit object-type?
 
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Classes_and_Objects_%28Delphi%29#Object_Types"]http://docwiki.embarcadero.com/RADStudio/Berlin/en/Classes_and_Objects_%28Delphi%29#Object_Types"]http://docwiki.embarcadero.com/RADStudio/Berlin/en/Classes_and_Objects_%28Delphi%29#Object_Types
Zitat:

Object types are supported for backward compatibility only. Their use is not recommended.
http://stackoverflow.com/questions/6...lass-in-delphi

Rollo

Fritzew 18. Mai 2016 10:47

AW: optionale Parameter mit object-type?
 
das geht wenn Du einen Pointertyp für das Object erzeugst.

Delphi-Quellcode:
PmyObject = ^TmyObject;
und diesen in der function als parameter verwendest. Aber am besten ist es sicher eine Klasse zu verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Seite 1 von 2  1 2      

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