AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer addieren

Ein Thema von ATS3788 · begonnen am 7. Mär 2010 · letzter Beitrag vom 7. Mär 2010
Antwort Antwort
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Pointer addieren

  Alt 7. Mär 2010, 09:21
Code:
char      *lpZero      = NIL;
Int    nOut = (lpZero - lpszBuffer) + 1;

char       lpszBuffer[1024]   = {'\0',};

Hi kann man in Pascal/Delphi über Umwegen, wie in C++ Zeiger addieren oder subtrahieren,
habe nichts im Web gefunden
Martin MIchael
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Pointer addieren

  Alt 7. Mär 2010, 09:29
Delphi-Quellcode:
Var
  MyPointer : Pointer;
  MyCharPointer : ^Char;
  MyIntPointer : ^Integer;
Begin
  MyPointer := Pointer (Integer (MyPointer) + 1);
  Inc (MyCharPointer); // Zeigt auf nächstes Element ( = +1)
  Inc (MyIntPointer); // Zeigt auf nächstes Element ( = +4)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Pointer addieren

  Alt 7. Mär 2010, 09:46
Zitat:
MyPointer := Pointer (Integer (MyPointer) + 1);
MyPointer := PAnsiChar(MyPointer) + 1; PAnsiChar hat 1-Byte große Elemente und verfügt über die nötige Pointer-Arithmetik.
$2B or not $2B
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Pointer addieren

  Alt 7. Mär 2010, 10:18
Zitat von himitsu:
PAnsiChar hat 1-Byte große Elemente und verfügt über die nötige Pointer-Arithmetik.
Und PAnsiChar wird auch noch in einem zukünftigen 64-Bit Delphi richtig rechnen, wohingegen "Integer(ptr)" die oberen 32-Bit des 64-Bit ausblendet und somit einen defekten Zeiger generieren wird, da laut Embarcadero Integer 32 Bit bleiben wird, wie auch in Visual C++.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Pointer addieren

  Alt 7. Mär 2010, 11:00
Dann würde ich aber die Schuld ganz klar an die Compilerbauer weiter geben welche in der Hilfe immer schön erwähnten das Integer und Cardinal immer schön mitwachsen.
Aber was lernen wir daraus. Sich dafür einen eigenen Typen definieren und dabei den möglichst größten zur Verfügung stehenden Typen nutzen und dann braucht man nur die eigene Typdeclaration ändern.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#6

Re: Pointer addieren

  Alt 7. Mär 2010, 11:38
Danke Leute Danke für die schnelle Antwort
Martin MIchael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz