Autor Beitrag
JoelH
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 07.11.03 14:55 
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 ??

_________________
mfg. Joel
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 07.11.03 15:02 
wie genau sieht der Fehler aus? Eigentlich ist der einzige Unterschied, dass inc schnelleren Code produziert
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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.

_________________
Ist Zeit wirklich Geld?
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: 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?

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Fr 07.11.03 15:27 
ausblenden Delphi-Quelltext
1:
2:
3:
i := 10;
i := i + 1;
Inc(i);

Wird zu
ausblenden Delphi-Quelltext
1:
2:
3:
MOV EAX, 10
INC EAX
INC EAX

_________________
Ist Zeit wirklich Geld?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 07.11.03 15:41 
hmm... war das dann vielleicht mal früher so? Irgendwie hatte ich das nämlich so im Kopf.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 07.11.03 15:47 
Die Code Optimierung von Delphi erzeugt seit D5 identischen Maschinencode.
JoelH Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: 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 ;)

_________________
mfg. Joel
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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.

_________________
Ist Zeit wirklich Geld?
JoelH Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 806
Erhaltene Danke: 17

Win10
Delphi Alexandria 11.2 Patch 1
BeitragVerfasst: Fr 07.11.03 16:21 
Titel: hmm,
aber das original ist leider
ausblenden Delphi-Quelltext
1:
lbx_nach.itemindex := lbx_nach.itemindex +1;					


natürlich verwende ich dann Copy&Paste ;) Es geth eher ums Prinzip.

_________________
mfg. Joel