![]() |
Re: class oparator implicit funktioniert nicht (Bug??)
Stimmt, aber das is mir eben als erstes eingefallen, der Rest kam erst später^^
|
Re: class oparator implicit funktioniert nicht (Bug??)
Zitat:
Wäre etwas sinnlos, nur Operatoren zu unterstützen, da es im Endeffekt auch nur Methoden sind. BTT: Auch wenn das Beispiel mit C# anstandslos läuft *g*, macht es IMHO eher wenig Sinn. Der TIBZeit-DateTime-Operator sollte mit einer stinknormalen Property und das Gegenstück mit einem Konstruktor ersetzt werden. Der dritte Operator muss dann von TDateTime selbst implementiert werden. Falls die Borländer die Implementation nicht erweitert haben, Pech ;) . Helper Records gibt es ja AFAIK nicht. Allgemein sollte man wohl so wenig implizite Operatoren wie möglich verwenden oder auf einen Bugfix hoffen. |
Re: class oparator implicit funktioniert nicht (Bug??)
Zitat:
|
Re: class oparator implicit funktioniert nicht (Bug??)
Also nochmal zur Sicherheit, ich rede von Win32, nicht .Net
den String kann ich doch auch problemlos "bestücken" Warum kann man dann eine Variable von einem anderen Typ nicht zuweisen Umgekehrt funktioniert es schließlich auch. Zeit := d; // das geht Zitat:
er mein: Incompatible types: 'TDateTiem' and 'TIBZeit' |
Re: class oparator implicit funktioniert nicht (Bug??)
Hallo stoxx
geht es denn so? d := Zeit as TDateTime; Grüße der nichtsahnende Klaus |
Re: class oparator implicit funktioniert nicht (Bug??)
Zitat:
Ausserdem wäre das Quark und nicht Sinn und Zweck einer impliciten Typumwandlung im Sinne von class operatoren. um das zu umgehen gibts ja auch eine property like in .NET
Delphi-Quellcode:
somit geht es d := Zeit.ToDateTime;
property ToDateTime : TDateTime read Value;
Aber das ist ja nicht Sinn und Zweck der Übung ! und der Quellcode wird mir zu unübersichtlich, um sowas will man sich ja keine Gedanken machen ! Darum gehts ja gerade ! |
Re: class oparator implicit funktioniert nicht (Bug??)
Delphi-Quellcode:
type
TIBZeit = record private Value : TDateTime; public class operator implicit(Zeit : TDateTime) : TIBZEit; class operator implicit(a : TIBZeit) : TDateTime; class operator implicit(a : TIBZEit) : String; end; implementation {$R *.dfm} class operator TIBZeit.implicit(Zeit : TDateTime) : TIBZeit; begin result.value := Zeit; end; class operator TIBZeit.implicit(a : TIBZeit) : TDateTime; begin result := a.Value; end; class operator TIBZeit.Implicit(a : TIBZeit) : String; begin result := DateTimeToStr(a.value); end; //============================================================================== procedure TForm1.Button1Click(Sender: TObject); var d : TDateTime; Zeit : TIBZEit; st : String; begin Zeit := now; st := Zeit; d := Zeit; /// geht nicht end; isch habe mir gerade mal die Trial von Delphi 2007 rungergeladen .. und das Beispiel geht jetzt ... coole Sache ....
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var d : TDateTime; Zeit : TIBZEit; st : String; begin Zeit := now; d := Zeit; showmessage(Zeit); Showmessage(DateTimeToStr(d)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 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