Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Operatoren überschreiben (https://www.delphipraxis.net/58972-operatoren-ueberschreiben.html)

Matze 15. Dez 2005 08:41


Operatoren überschreiben
 
Hallo,

das klingt etwas absurd und ich benötige es auch nicht, aber mich interessiert, ob man in Delphi Operatoren überschreiben kann. Dass ich z.B. sage, das "+" soll andere Operationen ausführen, als es normalerweise der Fall ist.

Geht das mit Delphi?

Bernhard Geyer 15. Dez 2005 08:43

Re: Operatoren überschreiben
 
In Delphi 2006 - Ja. Siehe Videos von Daniel zu BDS 2006

Matze 15. Dez 2005 08:45

Re: Operatoren überschreiben
 
Hallo, stimmt, da geht das, das habe ich gesehen. Also unter Delphi-Versionen kleiner 2006 ist dies gar nicht möglich?

jim_raynor 15. Dez 2005 09:23

Re: Operatoren überschreiben
 
Zitat:

Zitat von Matze
Hallo, stimmt, da geht das, das habe ich gesehen. Also unter Delphi-Versionen kleiner 2006 ist dies gar nicht möglich?

korrekt. Erst ab Delphi 2006

Matze 15. Dez 2005 09:25

Re: Operatoren überschreiben
 
Zitat:

Zitat von jim_raynor
korrekt. Erst ab Delphi 2006

Ok, danke.
Ada, das ja auch auf Pascal basiert, kann das seit 1995, darum habe ich gefragt. ;)

Code:
[b][color=Navy]with[/color][/b] Ada.Integer_Text_IO;

[b][color=green]------------------------------------------------------------------------------
-- PROCEDURE: MultiRationalNumber
-- DESCRIPTION:
--   Main function to add 2 rational numbers
------------------------------------------------------------------------------[/color][/b]
[b][color=Navy]procedure[/color][/b] MultiRationalNumber [b][color=Navy]is[/color][/b]

  [b][color=Navy]type[/color][/b] TRationalNumber [b][color=Navy]is record[/color][/b]
    Numerator: Integer;
    Denominator: Natural;
  [b][color=Navy]end record[/color][/b];
 
[b][color=green] ----------------------------------------------------------------------------
  -- FUNCTION: "*"
  -- DESCRIPTION:
  --   Addition of 2 rational numbers
  -- PARAMETER:
  --   +Number1: 1st rat. number
  --   +Number2: 2nd rat. number
  -- RETURN:
  --   Number1 * Number 2
  -- NOTES: Result is unabridged
  ----------------------------------------------------------------------------[/color][/b]
  [b][color=Navy]function[/color][/b] "*" (Number1, Number2: TRationalNumber) [b][color=Navy]return[/color][/b] TRationalNumber [b][color=Navy]is[/color][/b]
    Result: TRationalNumber;
  [b][color=Navy]begin[/color][/b]
    Result.Numerator := Number1.Numerator * Number2.Numerator;
    Result.Denominator := Number1.Denominator * Number2.Denominator;
   
    [b][color=Navy]return[/color][/b] Result;
  [b][color=Navy]end[/color][/b] "*";
 
  Rat1, Rat2: TRationalNumber;
  NewRationalNumber: TRationalNumber;
[b][color=Navy]begin[/color][/b]
  Rat1.Numerator := 4;
  Rat1.Denominator := 5;
 
  Rat2.Numerator := 7;
  Rat2.Denominator := 12;
 
  NewRationalNumber := Rat1 * Rat2;
 
  Ada.Integer_Text_IO.Put(NewRationalNumber.Numerator);
  Ada.Integer_Text_IO.Put(NewRationalNumber.Denominator);
[b][color=Navy]end[/color][/b];

Sharky 15. Dez 2005 09:33

Re: Operatoren überschreiben
 
Zitat:

Zitat von Matze
.... ob man in Delphi Operatoren überschreiben kann. ...

Hai ihr,

es passt zwar nicht genau zum Thread :oops:
Aber eine Frage: Kann ich denn auch einen eigenen Operator definieren?

Zum Beispiel:
Code:
var
  a , b , c : boolean;
begin
  a := True;
  b := True
  c := a [b]NAND[/b] b;
end;

NicoDE 15. Dez 2005 10:07

Re: Operatoren überschreiben
 
Zitat:

Zitat von Sharky
Kann ich denn auch einen eigenen Operator definieren?

Da die überschriebenen Operatoren mit vordefinierten Namen angesprochen werden, ist davon auszugehen, dass der Compiler keine anderen kennt (lies: ich denke, nein).

jbg 15. Dez 2005 10:21

Re: Operatoren überschreiben
 
Wenn man eine .NET Anwendung schreibt, dann kann man Operatoren auch schon seit Delphi 8 überschreiben.

Chewie 15. Dez 2005 22:33

Re: Operatoren überschreiben
 
Oder FreePascal benutzen, da geht das auch schon länger ;)

LarsMiddendorf 15. Dez 2005 22:44

Re: Operatoren überschreiben
 
Man kann auch schon ab Delphi4 (glaube ich) einen eigenen Variant Type definierten und hat dafür dann eine Klasse mit den ganzen Operatoren registrieren. In der Hilfe ist ein Beispiel wie man damit eine Klasse für komplexe Zahlen macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Seite 1 von 3  1 23      

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