Hi,
warum genau willst du das denn wissen?
Na ja, am einfachsten vergleichst du einfach die einzelnen Elemente (bzw. deren Adresse) mit dem Pointer.
Delphi-Quellcode:
for i := low(a) to high(a) do
begin
if (pointer = @a[i]) then
begin
pos := i;
break;
end;
end;
Da ein Array immer als ein Speicherbereich alloziert wird, kannst du natürlich auch einfach schauen, wieviel Byte du von der Startadresse weg liegst (klappt dann allerdings nur bei gleich großen Array-Elementen)
Delphi-Quellcode:
startPos := Integer(@a[0]);
pos := (startPos - Integer(p)) div sizeOf(a[0]);
Warum genau sind eigentlich deine Array-Elemente Unterschiedlich groß?
Gruß Der Unwissende