| Autor |
Beitrag |
JoelH
      
Beiträge: 806
Erhaltene Danke: 17
Win10
Delphi Alexandria 11.2 Patch 1
|
Verfasst: 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
|
Verfasst: Fr 07.11.03 15:02
wie genau sieht der Fehler aus? Eigentlich ist der einzige Unterschied, dass inc schnelleren Code produziert
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: 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
      
Beiträge: 531
WinXP
D5 Ent
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Fr 07.11.03 15:27
_________________ Ist Zeit wirklich Geld?
|
|
obbschtkuche
Gast
Erhaltene Danke: 1
|
Verfasst: 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
|
Verfasst: Fr 07.11.03 15:47
Die Code Optimierung von Delphi erzeugt seit D5 identischen Maschinencode.
|
|
JoelH 
      
Beiträge: 806
Erhaltene Danke: 17
Win10
Delphi Alexandria 11.2 Patch 1
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: 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 
      
Beiträge: 806
Erhaltene Danke: 17
Win10
Delphi Alexandria 11.2 Patch 1
|
Verfasst: 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.
_________________ mfg. Joel
|
|