Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Pointer verändern/verschieben (https://www.delphipraxis.net/166169-pointer-veraendern-verschieben.html)

roboter202 1. Feb 2012 16:18


Pointer verändern/verschieben
 
Hallo,

Ich habe einen Pointer der auf eine Speicherposition zeigt und danach folgen einige Bytes daten

Code:
|0|1|0|0|1|1|0|1|
 ^
So jetzt möchte ich jedoch die ersten (z.B. 3) Bytes überspringen damit mein Pointer nicht mehr auf das 1. sondern das 4. Byte zeigt
Code:
|0|1|0|0|1|1|0|1|
       ^
So etwas:
Code:
var p: ^String;

begin
new(p);
p^ := 'Hallo Welt';
p := p + 3; // geht nicht !
write(p^);
Gruß roboter202

Neutral General 1. Feb 2012 16:24

AW: Pointer verändern/verschieben
 
Mit PChars geht das.
Ich denke mal mit Strings ist das etwas problematisch.

Delphi-Quellcode:
var str: PChar;
begin
  str := 'Hallo Welt';
  inc(str,3);
  Caption := str;
end;

roboter202 1. Feb 2012 16:34

AW: Pointer verändern/verschieben
 
Naja also ich dachte so etwas ginge allgemein aber ich hab soeben eine andere Lösung gefunden die sogar einfacher ist.
Trotzdem Vielen Dank

himitsu 1. Feb 2012 16:59

AW: Pointer verändern/verschieben
 
Sowas geht nativ eben nur mit Pointern, welche über eine Pointer-Arithmetik verfügen.

Und das sind vorwiegend Array-Pointer (Pointer auf statische Arrays), wie PByte,
sowie PAnsiChar, PWideChar und Co oder eben Pointer auf einfache Typen, wie Byte, Word, Integer und Co.


Von Spielereien mit Pointern auf komplexere Typen, wie String, Interface oder dynamische Arrays, welche mit einem Haufen an Compilermagic und Automatiken vollgestopft sind, würde ich eher abraten.

Zitat:

Zitat von roboter202 (Beitrag 1148744)
aber ich hab soeben eine andere Lösung gefunden die sogar einfacher ist.

Und verraten wird sowas nicht?

Stell dir mal vor irgendwann hat jemand anderes auch dieses Problem. :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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