![]() |
x+=y ?
Liebe Community!
In meinem aktuellen Projekt habe ich unheimlich viele Aufrufe in der Form
Delphi-Quellcode:
zu schreiben. In C-verwandten Sprachen geht sowas etwas schneller:
x:=x+i*o;
//oder x:=x*pow(z,2);
Code:
Ich habe mir nun folgende kleine Funktion geschrieben, die mir ein wenig Getippe im Umgang mit Integern abnimmt:
x+=i*o;
//oder x*=pow(z,2);
Delphi-Quellcode:
Kann man das in Delphi vielleicht auch eleganter lösen? Gibts in der Sprache irgendwelche Entsprechungen zu den praktischen C-Operatoren?
//add
procedure a(var x:integer;y:integer); begin x:=x+y; end; [edit=SirThornberry]Delphi-Tags durch c-Tags ersetzt - Mfg, SirThornberry[/edit] |
Re: x+=y ?
Inc und Dec erfüllen denselben Zweck.
|
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 |
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.
|
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.
|
Re: x+=y ?
In Delphi2007 kann man für eigene Datentypen Operatoren überladen (operator overloading).
![]() 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" |
Re: x+=y ?
Cooooooool!! Danke für den Tipp!
|
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 |
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 |
Re: x+=y ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr. |
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