![]() |
Delphi-Version: 2009
Pointermath
Hallo, koennte mal jemand checken ob folgendes kompiliert in aktueller Delphi version (habe leider nur altes Delphi): Das sollte aber mit jedem PointType (d.h. auch mit array) funktionieren. Vielleicht sollte ich mal updaten...
type TiPoint = array[0..1] of integer; // array funktioniert nicht // TiPoint = record x, y: integer; end; // record funktioniert {$POINTERMATH ON} PPoints = ^TiPoint; {$POINTERMATH OFF} var sharedPoints: array of TiPoint; points: PPoints; point: TiPoint; begin setLength( sharedPoints, 10); sharedPoints[1][0] := 10; sharedPoints[1][1] := 11; //sharedPoints[1].x := 10; //sharedPoints[1].y := 11; points := @sharedPoints[0]; point := points[1]; // point kopieren point := (points+1)^; // sollte den gleichen point holen |
AW: Pointermath
points + 1 ist 1 Byte weiter, nicht 1 Index weiter. Das war aber schon immer so.
Die letzte Zeile muss
Delphi-Quellcode:
point := (points + SizeOf(TiPoint))^;
heißen. Das sollte mit der Array und der Record-Variante funktionieren. Edit: Dein Code funktioniert bei mir. |
AW: Pointermath
Zitat:
Dass die Array Syntax auf dem Pointer nicht funktioniert, sieht nach nem Compiler Glitch aus, da der Fehler darauf hinweist, dass er den Indexzugriff auf den Typen hinter dem Pointer durchführt: E2010 Incompatible types: 'TiPoint' and 'Integer' |
AW: Pointermath
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 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