Einzelnen Beitrag anzeigen

Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#1

Operatoren Implizit und Explizit

  Alt 9. Sep 2006, 11:18
Hi,

kann es sein, dass die explizite Typenumwandlung nicht richtig klappt?

habe:

Delphi-Quellcode:
  TBruch = record
    z, n: integer;
    class operator Explicit(a: TBruch): string;
    class operator Implicit(a: TBruch): string;
  end;

...

class operator TBruch.Explicit(a: TBruch): string;
begin
  if a.z > a.n then
    result := IntToStr(a.z div a.n) + '+' + IntToStr(a.z mod a.n) + '/' + IntToStr(a.n)
  else
    result := IntToStr(a.z) + '/' + IntToStr(a.n);
end;


class operator TBruch.Implicit(a: TBruch): string;
begin
  result := IntToStr(a.z) + '/' + IntToStr(a.n);
end;

...
wenn ich später dann im Code schreibe,
dass ich ne explizite typenumwandlung will, führt er immer ne implizite durch... woran liegt das?

explizit:s := string(b); implizit:s := b; (s ist ein string und b ist vom typ TBruch)

in beiden Fällen wird die Implicit funktion, oder wie auch immer man so nen Ding nennt, was nen Operator überlädt ausgeführt!


*help*
Jan
  Mit Zitat antworten Zitat