Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - unterschied von inc(x,1); und x := x +1 ??
JoelH - Fr 07.11.03 14:55
Titel: unterschied von inc(x,1); und x := x +1 ??
Ich benutze eigentlich immer inc(x) um etwas zu incrementieren. Leider habe ich nun festgestellt dass die nicht immer geht. Bzw. ich hab es schon öfter bemerkt aber es hat mich nicht weiter berühert. Doch jetzt interessiert es, was ist der Unterschied ? Warum gibt es Fälle in denen inc(x,1); einen Fehler produziert und x := x +1; nicht ??
Anonymous - Fr 07.11.03 15:02
wie genau sieht der Fehler aus? Eigentlich ist der einzige Unterschied, dass inc schnelleren Code produziert
AndyB - Fr 07.11.03 15:03
Der Unterschied liegt in den properties. Inc ist als Prozedur deklariert die einen var Parameter erwartet. Ein Property kann man aber nicht als var übergeben. Deswegen macht hier Inc() nicht mit.
"x := x + 1" hingegen braucht keinen var Parameter, womit es keine Probleme mit Properties gibt.
Inc(x); und x:= x + 1 erzeugen genau denselben Maschinencode.
UC-Chewie - Fr 07.11.03 15:07
| AndyB hat folgendes geschrieben: |
| Inc(x); und x:= x + 1 erzeugen genau denselben Maschinencode. |
Wird dabei eigentlich ein
ADD x,1 oder ein
INC x erzeugt?
AndyB - Fr 07.11.03 15:27
Delphi-Quelltext
1: 2: 3:
| i := 10; i := i + 1; Inc(i); |
Wird zu
Delphi-Quelltext
1: 2: 3:
| MOV EAX, 10 INC EAX INC EAX |
Anonymous - Fr 07.11.03 15:41
hmm... war das dann vielleicht mal früher so? Irgendwie hatte ich das nämlich so im Kopf.
Delete - Fr 07.11.03 15:47
Die Code Optimierung von Delphi erzeugt seit D5 identischen Maschinencode.
JoelH - Fr 07.11.03 16:15
Titel: hmm,
@obbschtkuche
ist zB. bei einer Listbox so.
@die andern
hehe Maschinencode ist derselbe aber inc(x); schreibt sich schneller ;)
AndyB - Fr 07.11.03 16:19
Titel: Re: hmm,
| JoelH hat folgendes geschrieben: |
| aber inc(x); schreibt sich schneller ;) |
Bei einer Einbuchstabigen Variable ist x := x + 1; fast geauso schnell geschrieben.
JoelH - Fr 07.11.03 16:21
Titel: hmm,
aber das original ist leider
Delphi-Quelltext
1:
| lbx_nach.itemindex := lbx_nach.itemindex +1; |
natürlich verwende ich dann Copy&Paste ;) Es geth eher ums Prinzip.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!