AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Syntax für Operatorenüberladung

Ein Thema von Codewalker · begonnen am 25. Nov 2012 · letzter Beitrag vom 28. Nov 2012
Antwort Antwort
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Syntax für Operatorenüberladung

  Alt 25. Nov 2012, 13:13
Delphi-Version: XE2
Hallo zusammen.

Ich möchte für eine eigene Klasse den = - Operator überladen und eine eigene "Equal"-Methode implementieren. Gemäß der Beschreibung hier, sollte das ja so aussehen:

Delphi-Quellcode:
  TBenutzer = class
    class operator Equal(A, B: TBenutzer): Boolean;
  public
    Name: String;
    Surname: String;
    procedure Clear;
  end;
Aber ich bekomme für die die operator-Deklaration (auch wenn ich sie unter public setze) als Fehler
Code:
[DCC Fehler] E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet
. Kann mir jemand sagen, wo mein Denkfehler ist?
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Syntax für Operatorenüberladung

  Alt 25. Nov 2012, 13:16
Operatoren kannst du nur bei records überladen, nicht bei klassen

und hier stehts wie es geht:
http://docwiki.embarcadero.com/RADSt...g_%28Delphi%29
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#3

AW: Syntax für Operatorenüberladung

  Alt 25. Nov 2012, 14:45
In XE4-5-99 könnte sich das vielleich ändern, wenn Emba wirklich auf die grauenhafte Idee kommt den Ansatz, die Delphi-Klassen in "Interfaces" umzuwandeln, weiterzuentwickeln.

Aktuell spricht aber die nicht automaschite Speicherverwaltung dagegen, daß man sowas mit Klassen machen darf.
Dir hätte aber bei allen im Interet auffindbaren Beispielen, Fragethreads und Tutorials auffallen können, daß dort ausschließlich Records verwendet werden



Du kannst aber gerne Klassen über Interfaces in einem Record verpacken. (als Beispiel gibt es hier irgendwo eine Math-Bibliothek von mir, wo ich das mal ausprobiert/getestet hatte)

Gemäß der Beschreibung hier, sollte das ja so aussehen:
Gemäß der unten dargestellen Beispiele und der Beschreibung, gleich im allerersten Satz, nicht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Nov 2012 um 15:29 Uhr) Grund: deswegen
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Syntax für Operatorenüberladung

  Alt 25. Nov 2012, 15:23
Gemäß der Beschreibung hier, sollte das ja so aussehen:
Gemäß der unten dargestellen Beispiele und der Beschreibung, gleich im allerersten Satz, nicht.
Dann ist auf der Seite das Beispiel schlicht falsch. Im Quelltext steht ja ein explizites class . Naja, bei Records hilft mir das nur bedingt. Immer diese halben Ansätze ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#5

AW: Syntax für Operatorenüberladung

  Alt 25. Nov 2012, 15:26
Ups, stimmt.

Ich hatte irgendwie zwei Tabs vom docwiki und dachte ihr hattet das Selbe verlinkt.


Man könnte Emba ja mal was zu diesen Beispielen schreiben, aber Dinge, welche über ein Jahr alt sind, werden eh nicht repriert.


Wie geagt, aktuell nur für Records.
Interfaces gehn leider nicht, da es kein Copy-Event gibt.
Ebenso gehen keine Klassen.
Und bei Records geht es nur mit statischen Typen (z.B. Integer, Double, Char, Static-Char-Array und String), da hier auch der Copy-Befehl fehlt (weil Emba meinen Wunsch nicht eingebaut hat)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Nov 2012 um 15:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Syntax für Operatorenüberladung

  Alt 28. Nov 2012, 12:46
Soweit ich weiß, entstanden die Operator Überladungen während oder kurz nach der Delphi.NET Zeit. Daher auch class operator, weils in .Net ebend für Klassen geht. Die Syntax ist dann so geblieben.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#7

AW: Syntax für Operatorenüberladung

  Alt 28. Nov 2012, 12:53
Und bei Records geht es nur mit statischen Typen
[edit]
Gehen tut es schon mit allen Records, aber bei referenzierten Daten, ohne Referenzzählung und vorallem ohne Copy-On-Write oder so, wird es Probleme mit der Speicherverwaltung geben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr.
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