Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Inc(i) das gleiche wie i := i + 1 ?


StrikeLucky - Mo 21.12.09 12:01
Titel: Inc(i) das gleiche wie i := i + 1 ?
Hallo,

ich würde gerne wissen wo der Unterschied zwischen


Delphi-Quelltext
1:
2:
3:
4:
5:
  Inc(i);

  //und

  i := i + 1;

liegt bzw. welche Variante Vorteile und Nachteile hat.

Danke


Narses - Mo 21.12.09 12:08

Moin und :welcome: im Forum!

AFAIK gibt´s da keinen Unterschied, Inc() dürfte leicht schneller sein. ;)

cu
Narses


JoelH - Mo 21.12.09 12:11

siehe http://www.delphi-forum.de/viewtopic.php?t=18398&highlight=inc+unterschied


BenBE - Mo 21.12.09 12:49

@Narses: Doch, es gibt einen:

Inc(Ptr); inkrementiert nicht um eines, sondern basierend auf dem C-Verhalten (Also Länge des referenzierten Datentyps). Ptr := Ptr+1; ist unter Delphi dagegen nicht erlaubt (bzw. dürfte recht bizarres Verhalten zeigen).

Für Ordinaltypen ist das Verhalten identisch und erzeugt AFAIR sogar den gleichen ASM-Source.


Narses - Mo 21.12.09 12:59

Moin!

user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
@Narses: Doch, es gibt einen:

Inc(Ptr); inkrementiert nicht um eines
Ist schon klar, da er aber mit "i" wohl einen Integer meint, habe ich das mal wegoptimiert. ;) Wenn man Inc() auf Pointer anwendet, fragt man nicht mehr nach dem Unterschied, dann weiß man das... :zwinker:

cu
Narses


BenBE - Mo 21.12.09 13:04

Nagut ... dann erwähn ich halt mal noch, dass Inc auch einen zweiten Parameter hat ... :mrgreen:

Wofür der ist, dürfte man sich ja vorstellen können ;-)


Narses - Mo 21.12.09 13:08

OK, du hast gewonnen und ich das letzte Wort. :mrgreen: Deal? :beer: (rhetorische Frage)