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 class oparator implicit funktioniert nicht (Bug??) (https://www.delphipraxis.net/71458-class-oparator-implicit-funktioniert-nicht-bug.html)

stoxx 15. Jun 2006 15:59


class oparator implicit funktioniert nicht (Bug??)
 
ich versteh das nicht, den String kann ich wunderbar zuweisen, aber nicht die Variable vom Typ TDateTime
Wieso ??? ist das ein Compilerbug oder mach ich was falsch ?

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;

stoxx 16. Jun 2006 13:01

Re: class oparator implicit funktioniert nicht (Bug??)
 
hmm .. weiß das denn wirklich niemand ? ist doch ein ziemlich wichtiges Grundproblem ?
Habe ich irgendeinen Compilerschalter übersehen ?
Versteh das nicht !

Klaus01 16. Jun 2006 13:13

Re: class oparator implicit funktioniert nicht (Bug??)
 
Delphi-Quellcode:
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;
Nun, ich kann jetz mal wieder total daneben liegen, aber
so wie ich das vor langer Zeit mal gelernt habe
können records nur statische Feldtypen arbeiten.
So in der Art:
Delphi-Quellcode:
TIBTeit = record
  value : TDateTime;
end;
Grüße
Klaus

stoxx 16. Jun 2006 14:05

Re: class oparator implicit funktioniert nicht (Bug??)
 
Zitat:

Nun, ich kann jetz mal wieder total daneben liegen, aber
so wie ich das vor langer Zeit mal gelernt habe
können records nur statische Feldtypen arbeiten.
Da bist Du leider nicht mehr UpToDate .. Delphi2006 kann das ! das ist ja das coole !

Klaus01 16. Jun 2006 14:08

Re: class oparator implicit funktioniert nicht (Bug??)
 
Tja, cool oder verwirrend.
Da bleibe ich doch noch ein Weilchen bei Delphi6 ;o)

Grüße
Klaus

uligerhardt 16. Jun 2006 14:08

Re: class oparator implicit funktioniert nicht (Bug??)
 
Zitat:

Zitat von Klaus01
Nun, ich kann jetz mal wieder total daneben liegen, aber

Tust du. :-)

Zitat:

Zitat von Klaus01
so wie ich das vor langer Zeit mal gelernt habe
können records nur statische Feldtypen arbeiten.
So in der Art:
Delphi-Quellcode:
TIBTeit = record
  value : TDateTime;
end;
Grüße
Klaus

Seit D2006 (?) können Records prinzipiell auch Methoden etc. haben. Allerdings hagelt's bei mir immer interne Compilerfehler, sobald ich irgendwas Nichttriviales mache (z.B. http://qc.borland.com/wc/qcmain.aspx?d=26014). :-(

Uli.

Klaus01 16. Jun 2006 14:11

Re: class oparator implicit funktioniert nicht (Bug??)
 
Ein wenig OT:

Da habe ich dann mal eine Frage wo ist
denn dann der prinzipielle Unterschied
zwischen records und Objects?

Ist das ganze dann eher mir einer Class in Java
zu vergleichen?

Grüße
Klaus

Dax 16. Jun 2006 14:15

Re: class oparator implicit funktioniert nicht (Bug??)
 
New-style records können nur statische Methoden haben, während objects weiterhin auch late-bound-Methoden haben können *glaub*

edit: Genauer: objects unterstützen Vererbung, records nicht

DGL-luke 16. Jun 2006 14:17

Re: class oparator implicit funktioniert nicht (Bug??)
 
ähm... dass records funktionen haben können, wär mir neu, aber das sind doch hier operatoren! und das wurde ja extra eingeführt, dass man in recordtypen (afaik aber nicht in klassen sprich objekttypen) die operatoren benutzen kann.

warum das beispiel nicht funktioniert, kann ich aber ncihtr sagen.

Im übrigen ist "funktioniert nicht" keine befriedigende fehlermeldung ;)

Nervt der COmpiler? kommen falsche ergbnisse raus? oder was?

Elvis 16. Jun 2006 14:53

Re: class oparator implicit funktioniert nicht (Bug??)
 
Zitat:

Zitat von Dax
New-style records können nur statische Methoden haben, während objects weiterhin auch late-bound-Methoden haben können *glaub*
edit: Genauer: objects unterstützen Vererbung, records nicht

Lol, virtuelle Methoden wären ohne die Möglichkeit zur Vererbung auch irgendwie witzlos, oder? :mrgreen:


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