Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi x+=y ? (https://www.delphipraxis.net/108488-x-%3Dy.html)

BloodySmartie 14. Feb 2008 16:17


x+=y ?
 
Liebe Community!

In meinem aktuellen Projekt habe ich unheimlich viele Aufrufe in der Form
Delphi-Quellcode:
x:=x+i*o;
//oder
x:=x*pow(z,2);
zu schreiben. In C-verwandten Sprachen geht sowas etwas schneller:
Code:
x+=i*o;
//oder
x*=pow(z,2);
Ich habe mir nun folgende kleine Funktion geschrieben, die mir ein wenig Getippe im Umgang mit Integern abnimmt:
Delphi-Quellcode:
//add
procedure a(var x:integer;y:integer);
begin
x:=x+y;
end;
Kann man das in Delphi vielleicht auch eleganter lösen? Gibts in der Sprache irgendwelche Entsprechungen zu den praktischen C-Operatoren?

[edit=SirThornberry]Delphi-Tags durch c-Tags ersetzt - Mfg, SirThornberry[/edit]

Apollonius 14. Feb 2008 16:19

Re: x+=y ?
 
Inc und Dec erfüllen denselben Zweck.

cruiser 14. Feb 2008 16:20

Re: x+=y ?
 
bei + und - ginge wohl:

Inc(x, y);

bezw:

Dec(x, y);

ansonsten ist ausschreiben wohl kürzer und performanter als eine funktion ;)

greetz

mkinzler 14. Feb 2008 16:24

Re: x+=y ?
 
Diese "Kurzschreibweisen" sorgen für schlechtere Lesbarkeit. Sowas ist in Delphi nicht möglich. Mit dem Präprozessor von jbg wäre es prinzipiell möglich solche Konstrukte abzubilden.

BloodySmartie 14. Feb 2008 16:28

Re: x+=y ?
 
Ich finde durchaus nicht, dass diese Operatoren zu schlechterer Lesbarkeit führen - im Gegenteil. Ich vermute aber mal, dass das Geschmackssache ist.

bluesbear 14. Feb 2008 16:34

Re: x+=y ?
 
In Delphi2007 kann man für eigene Datentypen Operatoren überladen (operator overloading).
http://www.delphi-treff.de/sprachen/...al/operatoren/ unten
Damit könnte man sowas (bööhhse) tricksen, indem man Operatoren überläd, die man in ihrer ursprünglichen Form nicht braucht (ShiftLeft oder sowas)... :wink:

EDIT: Das Beispiel war für .NET, sehe ich gerade. Geht aber auch für records - Stichwort "class operator"

BloodySmartie 14. Feb 2008 16:42

Re: x+=y ?
 
Cooooooool!! Danke für den Tipp!

r2c2 14. Feb 2008 17:32

Re: x+=y ?
 
Ich würde davon abraten, sowas hinzutricksen. Ich kann zwar nachvollziehen, dass dir das +=, etc. fehlt, aber die ganzen Tricksereien(abgesehen von Inc bzw. Dec) sind einfach nur unschön und machen den Code nicht gerade leserlicher...

mfg

Christian

FAlter 14. Feb 2008 17:40

Re: x+=y ?
 
Hi,

FPC hat eine Option für sowas.

Ansonsten inc und dec und, z. B. für Multiplikation, könntest du dir selber was bauen wie du es oben vorgeschlagen hast, ohne viel Performance einzubüßen, indem du inline verwendest.

Mfg
FAlter

grenzgaenger 14. Feb 2008 23:24

Re: x+=y ?
 
Zitat:

Zitat von bluesbear
In Delphi2007 kann man für eigene Datentypen Operatoren überladen (operator overloading).
http://www.delphi-treff.de/sprachen/...al/operatoren/ unten
Damit könnte man sowas (bööhhse) tricksen, indem man Operatoren überläd, die man in ihrer ursprünglichen Form nicht braucht (ShiftLeft oder sowas)... :wink:

EDIT: Das Beispiel war für .NET, sehe ich gerade. Geht aber auch für records - Stichwort "class operator"

geht übrigens ab D2006. ob += etc. pp. unterstützt werden? einfach mal in die OH gucken


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

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