Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Pointer verändern
VT - So 11.01.04 14:08
Titel: Pointer verändern
Hi,
simple frage ;)
wie kann ich einen pointer wert erhöhen? also der eine pointer variable zeigt ja auf einen speicherbereich, nun will ich aber auf speicherbereich+1 zeigen lassen. in c++ geht das ohne probleme mit einem increment, aber delphi meckert hier rum. Ich denke mal ich kenn die Syntax nich. Wie mach ich das also?
Vielen Dank im Vorraus.
So lonG
Daniel
MSCH - So 11.01.04 14:26
also bei mir funktioniert das:
Delphi-Quelltext
1: 2:
| var addr: PLongint; inc(Addr) |
grez
msch
KidPaddle - So 11.01.04 15:21
Oder
Delphi-Quelltext
1:
| Ptr := POINTER(LONGINT(Ptr) + 1); |
Gruß
KidPaddle
Moderiert von
Klabautermann: Delphi-Tags hinzugefügt.
AndyB - So 11.01.04 15:31
Zitat: |
Delphi-Quelltext 1: 2:
| var addr: PLongint; inc(Addr) | |
KidPaddle hat folgendes geschrieben: |
Ptr := POINTER(LONGINT(Ptr) + 1); |
Beide Codes machen was anderes. Der erste erhöht den Zeiger addr um 4 Bytes (= SizeOf(Longint) ). Der zweite Code erhöht den Zeiger um 1 Byte.
Motzi - So 11.01.04 15:51
Wieso erhöht die Version mit Inc() den Zeiger um 4 Bytes? Inc() hat eine überladene Version mit einem 2ten Parameter bei dem man angeben kann um wieviel erhöht werden soll, aber standardmäßig erhöht Inc() immer nur um eins...
VT - So 11.01.04 15:53
weil inc um sizeof(longint) erhöht
Motzi - So 11.01.04 16:03
Stimmt.. hab mir das grad im CPU-Fenster angeschaut.. der Compiler setzt den Inc() Aufruf so um, dass der Pointer um die Größe der Daten erhöht wird die der Pointer referenziert... das war mir neu.. :shock: :roll:
tommie-lie - So 11.01.04 20:34
Motzi hat folgendes geschrieben: |
der Compiler setzt den Inc() Aufruf so um, dass der Pointer um die Größe der Daten erhöht wird die der Pointer referenziert... |
Das ist in C übrigens auch so.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!