Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Operatoren überladen in Delphi 9 (https://www.delphipraxis.net/131382-operatoren-ueberladen-delphi-9-a.html)

koerbi 24. Mär 2009 07:41


Operatoren überladen in Delphi 9
 
Hallo Leute,

Anfängerfrage??????????
habe Probleme ein einfaches Beispiel zu Operator Overloading zu kompilieren
(siehe unten)
wenn ich die betreffenden Zeilen auskommentiere geht es!
was ist mein Fehler? beinhaltet Delphi 9 , Delphi.NET?

folgende Fehlermeldung kommt dann:
[DCC Fehler] Unit1.pas(28): E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet
[DCC Fehler] Unit1.pas(28): E2029 ',' oder ':' erwartet, aber '(' gefunden
[DCC Fehler] Unit1.pas(28): E2029 ';' erwartet, aber ':' gefunden
[DCC Fehler] Unit1.pas(28): E2029 ',' oder ':' erwartet, aber ';' gefunden
[DCC Fehler] Unit1.pas(29): E2029 Typ erwartet, aber 'END' gefunden
[DCC Fehler] Unit1.pas(45): E2037 Deklaration von 'testclass' unterscheidet sich von vorheriger Deklaration
[DCC Fataler Fehler] simpletest2.dpr(5): F2063 Verwendete Unit 'source\Unit1.pas' kann nicht compiliert werden



danke

gruss koerbi

Delphi-Quellcode:
################################################
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  testclass = class
    var i1:integer;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    class operator Add(a, b: testclass): testclass; //<========geht nicht zu kompilieren
  end;






var
  Form1: TForm1;

implementation
{$R *.dfm}


var status:integer;

class operator testclass.Add(a, b: testclass): testclass; // <========geht nicht zu komilieren

begin
end;

procedure changeFormColor();
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 case(status) of
  1: begin
      status:=2;
      label1.Caption:='label1: my state is 2 now!';
       button1.caption:='change to state 1 now!';
     end;
  2: begin
      status:=1;
      label1.Caption:='label1: my state is 1 now!';
       button1.caption:='change to state 2 now!';
     end;


  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   status:=1;
end;

end.
[edit=Phoenix]Delphi-Tags eingefügt. Mfg, Phoenix[/edit]

Phoenix 24. Mär 2009 08:56

Re: Operatoren überladen in Delphi 9
 
Hallo,

erstmal herzlich willkommen in der DP. :dp:

Zum einen habe ich erstmal um den Code in Deinem Beitrag Delphi-Tags gelegt. Bitte beachte bei zukünftigen Posts, dass Du das selber machst (oben über dem Beitrag-Editor hats nen Button Delphi-Code, der diese Tags einfügt). Damit wird der Code lesbar formatiert.

Zum anderen: Es gibt kein Delphi 9.
Es gibt Delphi 8 für das Microsoft .NET Framework. Die darauf folgende Version war Delphi 2005. Oder meinst Du etwa 2009?

Und keine reine Delphi-Version 'beinhaltet' Delphi .NET.
Nur das RAD Studio (2007, 2009), bei der 2005er und 2006er Version hiess das noch Borland Developer Studio, enthielt dann jeweils auch die .NET Version. Delphi .NET heisst jetzt (also 2009er Version) übrigens Delphi Prism.

Also: Was meinst Du?


Und zur Operator-Überladung (geht erst ab Delphi 2006, wenn Du mit Delphi 9 also die 2005er meinst hast Du pech gehabt) guckst Du Dir am besten mal diesen Thread hier an.

HeinzJ 24. Mär 2009 09:19

Re: Operatoren überladen in Delphi 9
 
Kein Delphi 9 :cyclops: -> Heise: Borland präsentiert Delphi 9

Bernhard Geyer 24. Mär 2009 09:28

Re: Operatoren überladen in Delphi 9
 
Zitat:

Zitat von HeinzJ
Kein Delphi 9 :cyclops: -> Heise: Borland präsentiert Delphi 9

Zum Release-Zeitpunkt wurde diese Version Delphi 2005 genannt.

Meflin 24. Mär 2009 11:50

Re: Operatoren überladen in Delphi 9
 
Unter Win32 kann man Operatoren doch sowieso nur mit Records, aber nicht mit Klassen überladen :gruebel:

himitsu 24. Mär 2009 12:32

Re: Operatoren überladen in Delphi 9
 
Zitat:

Zitat von Meflin
Unter Win32 kann man Operatoren doch sowieso nur mit Records, aber nicht mit Klassen überladen :gruebel:

genau.

das Einzige, was möglich ist, ist das Objekt in einen Record zu legen.

z.B. siehe http://www.delphipraxis.net/internal...t.php?t=151373
(dort ist zwar ein Interface im Record, aber im Prinzip isses das Selbe)

koerbi 26. Mär 2009 07:57

Re: Operatoren überladen in Delphi 9
 
hallo,

ich benutze Code Gear Rad Studio 2009 (mit Delphi 2009)
beinhaltet das also "Delphi .NET", welches OP-Overloading unterstützt!?
kann mir jemand ein kleines simples Beipsiel schicken, was ich auch unter delphi 2009
kompileren kann? oder mein Beispiel korrekt erweitert?
am besten mit Klassen und Records

habe mit OP-Overloading leider noch garkeine Erfahrung!

danke

wünsche euch noch viel Spass

gruss koerbi

himitsu 26. Mär 2009 08:34

Re: Operatoren überladen in Delphi 9
 
Delphi.net gibt es sozusagen nicht mehr ... stattdessen gibt es dort (wie schon erwähnt) Delphi Prism (müßte im RAD2009 drin sein) und dieses müßtst du dann theoretisch verwenden. :gruebel:

Meflin 26. Mär 2009 10:42

Re: Operatoren überladen in Delphi 9
 
Zitat:

Zitat von koerbi
beinhaltet das also "Delphi .NET", welches OP-Overloading unterstützt!?

Auch Delphi Win32 unterstützt Operator Overloading. Also was willst du jetzt eigentlich genau, ich blick nicht ganz durch :gruebel:

himitsu 26. Mär 2009 12:23

Re: Operatoren überladen in Delphi 9
 
Zitat:

Zitat von Meflin
Auch Delphi Win32 unterstützt Operator Overloading. Also was willst du jetzt eigentlich genau, ich blick nicht ganz durch :gruebel:

nur bei Records und nicht bei Objekten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2      

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