Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi eine Klasse als Rückgabewert?? (https://www.delphipraxis.net/87696-eine-klasse-als-rueckgabewert.html)

Flare 5. Mär 2007 15:15

Re: eine Klasse als Rückgabewert??
 
Zitat:

Zitat von mkinzler
Zitat:

Zitat von LarsMiddendorf
Warum in diesem Fall keinen record nehmen? Das ist bei einem Vektor eh sinnvoller und man kann Operatoren überladen.

Aber erst ab D10 (BDS2006/TD für Win32)

Also ich habe genau so wie es LarsMiddendorf beschrieben hat geschafft eine Vektorbibliothek auf Recordbasis zu basteln und habe das ganze in D7 gemacht. Oder was meinst du genau funktioniert nicht in Delphi kleiner 10?


Flare

mkinzler 5. Mär 2007 15:18

Re: eine Klasse als Rückgabewert??
 
Zitat:

Oder was meinst du genau funktioniert nicht in Delphi kleiner 10?
Class Operators

Flare 5. Mär 2007 16:35

Re: eine Klasse als Rückgabewert??
 
Zitat:

Zitat von mkinzler
Zitat:

Oder was meinst du genau funktioniert nicht in Delphi kleiner 10?
Class Operators

Stimmt, du hast Recht, ich hatte gedacht du hast deine Aussage auf den ersten Satz bezogen weil ich den 2. Satz irgendwie so schnell überflogen habe, dass ich den Inhalt nicht aufgenommen habe.
Ich habe das mit überladenen Funktionen gelöst, mit überladenen Operatoren wäre es natürlich um einiges komfortabler gewesen.


Flare

Muetze1 5. Mär 2007 18:28

Re: eine Klasse als Rückgabewert??
 
... aber Funktionen/Procedure innerhalb von Records (also nicht als Prototype sondern als Implementation) ist mit den älteren Delphi's (kleiner D8) auch nicht möglich.

yankee 5. Mär 2007 20:14

Re: eine Klasse als Rückgabewert??
 
Zitat:

Zitat von Muetze1
... aber Funktionen/Procedure innerhalb von Records (also nicht als Prototype sondern als Implementation) ist mit den älteren Delphi's (kleiner D8) auch nicht möglich.

Ich dachte immer, dass heisst dann Klasse ^^.
Wo is'n da der Unterschied? Ist das dann eine Klasse, die man nicht instanzieren und freen muss?

Ghostwalker 6. Mär 2007 06:10

Re: eine Klasse als Rückgabewert??
 
Ok....kleines Beispiel:


Record mit überladenen Operatoren:

Delphi-Quellcode:
   Type
      TVector = record
                    x,y,z : integer
                 class operator Add(a,b:TVector):TVector;
                end;

      :
   Implementation

    Class Operator TVector.add(a,b:TVector):TVector;
    begin
      result.x := a.x+b.x;
      result.y := a.y+b.y;
      result.z := a.z+b.z;
    end;
Die Verwendung sieht dann so aus:

Delphi-Quellcode:
     procedure TForm1.Button1click(Sender:TObject);
     var
       v1,v2,v3 : TVector;

     begin
       //Einfach mal werte eintrag;
       v1.x := 10;
       v1.y := 20;
       v1.z := 30;
       
       v2.x := 5;
       v2.y := 50;
       v2.z := 33;

       v3 := v1+v2;    
     end;
Das ganze funktioniert, wie bereits erwähnt, ab BDS2006 und mit den Turbos. Du brauchst also auch keine Klassen instanziieren und wieder freigeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.
Seite 2 von 2     12   

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