![]() |
Pointer verändern/verschieben
Hallo,
Ich habe einen Pointer der auf eine Speicherposition zeigt und danach folgen einige Bytes daten
Code:
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
|0|1|0|0|1|1|0|1|
^
Code:
So etwas:
|0|1|0|0|1|1|0|1|
^
Code:
Gruß roboter202
var p: ^String;
begin new(p); p^ := 'Hallo Welt'; p := p + 3; // geht nicht ! write(p^); |
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; |
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 |
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:
Stell dir mal vor irgendwann hat jemand anderes auch dieses Problem. :cry: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz