Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Operatoren in Turbo Delphi (Win32) überladen? (https://www.delphipraxis.net/76704-operatoren-turbo-delphi-win32-ueberladen.html)

7eddi 8. Sep 2006 13:16


Operatoren in Turbo Delphi (Win32) überladen?
 
Hi,

kann ich in Turbo Delphi für Win32 Operatoren überladen? In der Hilfe steht "Ja", der Compiler meckert trotzdem.

Danke und Gruß,
Lucas

Daniel 8. Sep 2006 13:20

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Das geht - jedoch wie auch im BDS2006 nur bei Records (!). Bei welchem Code meckert denn der Compiler?

3_of_8 8. Sep 2006 13:20

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Ja, das geht. Nur ohne Code kann ich dir mangels Kristallkugel nicht helfen. ;)

Elvis 8. Sep 2006 13:21

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Na und was sollen wir dir jetzt dazu sagen können? Mit dem was du uns an Infos gabst: Ja, es geht.
Aber das hilft dir nicht wirklich weiter, rightig? :mrgreen:

Probieren wir es also am Besten gleich nochmal von vorne und du zeigst uns wie du es versucht hast und was der Compiler dazu gesagt hat. ;)

Zitat:

Zitat von Daniel
Das geht - jedoch wie auch im BDS2006 nur bei Records (!). Bei welchem Code meckert denn der Compiler?

:shock: Das musste ich auch gerade mit Erschrecken feststellen! :cry:

7eddi 8. Sep 2006 13:39

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Nur bei Records? Sorry, aber ich bin gar nicht auf die Idee gekommen, dass jemand bei Records Operatoren überladen wollen würde und daher dachte ich, dass meine (allgemein technische) Frage auch ohne Code, der als einfaches Beispiel eher trivial ist, eindeutig wäre. Nun gut, in der Hilfe steht zunächst nur etwas von Records, in dem unteren Beispiel werden aber auch Klassen genannt :gruebel:.
Ich habe natürlich versucht, die Operatoren einer Klasse zu überladen - daher funktionierte es wohl nicht.

Wieso klappt das denn nur bei Records? Gibt es Hoffnung, dass sich das mit der nächsten Version endlich ändert?

Meflin 8. Sep 2006 13:42

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Zitat:

Zitat von 7eddi
Nun gut, in der Hilfe steht zunächst nur etwas von Records, in dem unteren Beispiel werden aber auch Klassen genannt :gruebel:.

Hm, das Beispiel mit den Klassen bezieht sich aber auf Delphi .Net - da ist wohl die gliche Hilfe wie beim BDS dabei :mrgreen: ?
Andererseits musste ich fesstellen dass records ggü. Klassen praktisch keinen Nachteil haben - die können ja auch private & public Teile haben, das einzige was nicht geht ist eben Vererbung (und destructoren, aber auf die kann man ja sch***** ;) )


Daniel 8. Sep 2006 13:45

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Wie würde man das denn überhaupt bei Klassen idealerweise anstellen?

Gehen wir davon aus, ich habe drei Variablen vom Typ TMeineTolleKlasse und habe für diese Klasse die Addition definiert.

Delphi-Quellcode:
procedure foo;
var a, b, c : TMeineTolleKlasse;
begin
  a:= TMeineTolleKlasse.Create;
  b:= TMeineTolleKlasse.Create;

  c:= a + b;

  a.Free;
  b.Free;
  c.Free;
end;
Der überladene Operator würde also eine neue Instanz erzeugen und sie zurückliefern. In meinem Beispiel wäre sie dann an C gebunden. Was mache ich - ohne Garbage-Collector, wenn C vorher schon eine Instanz der Klasse an sich gebunden hatte? Habe ich dann nicht ein Speicher-Löchlein?

mkinzler 8. Sep 2006 13:53

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Bei Datentypen würde sich ein Record anbieten, der besitzt unter Win32 class operators(!) Klassen nicht (!)

Daniel 8. Sep 2006 13:55

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Jaja, soweit waren wir ja schon. ;-) Nur wie regeln das andere Sprachen bei Klassen? Diese Einschränkung schien ja eine größere Bestürzung hervorzurufen.

mkinzler 8. Sep 2006 13:56

Re: Operatoren in Turbo Delphi (Win32) überladen?
 
Zitat:

Nur wie regeln das andere Sprachen bei Klassen? Diese Einschränkung schien ja eine größere Bestürzung hervorzurufen.
Da geht es wie auch unter D.Net


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

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