![]() |
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? |
Re: Operatoren überschreiben
In Delphi 2006 - Ja. Siehe
![]() |
Re: Operatoren überschreiben
Hallo, stimmt, da geht das, das habe ich gesehen. Also unter Delphi-Versionen kleiner 2006 ist dies gar nicht möglich?
|
Re: Operatoren überschreiben
Zitat:
|
Re: Operatoren überschreiben
Zitat:
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]; |
Re: Operatoren überschreiben
Zitat:
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; |
Re: Operatoren überschreiben
Zitat:
|
Re: Operatoren überschreiben
Wenn man eine .NET Anwendung schreibt, dann kann man Operatoren auch schon seit Delphi 8 überschreiben.
|
Re: Operatoren überschreiben
Oder FreePascal benutzen, da geht das auch schon länger ;)
|
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. |
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