![]() |
Pointer operation
Hallo,
ich arbeite von Delphi heraus mit einer Dll. Teil der Kommunikation ist das Increment eines Pointers. Der Pointer war bisher vom Typ PByte. Nun nutze ich einen Pointer vom Typ PWord. Als Folge dessen, funktioniert der Befehl Inc(pData) nicht mehr. Liefert mir nun den Fehler "Invalid Pointer Operation". Wie bekomm ich den PWord-Pointer hochgezählt? |
Re: Pointer operation
Upps, hab was überlesen :cry:
|
Re: Pointer operation
Pointeroperationen gehen nicht immer mit allen Pointern-Typen
eventuell:
Delphi-Quellcode:
var x: PWord;
Inc(PWideChar(x)); // zählt 2 dazu, also +SizeOf(x) Inc(PByte(x)); // zählt nur 1 Byte Inc(Integer(x)); // zählt nur 1 Byte Inc(PByte(x), 2); // zählt auch SizeOf(x) dazu |
Re: Pointer operation
Also es kommt schonmal keine Fehlermeldung mehr.
Die Hardware reagiert trotzdem nicht richtig. Ohne Fehlermeldung wird's jetzt schwierig den Fehler zu finden. :( |
Re: Pointer operation
Schon dein Befehl oben sollte funktionieren. Was willst du eigentlich?
|
Re: Pointer operation
Na das Increment eines PWord-Pointers.
|
Re: Pointer operation
Also bei mir (Delphi 5) funktioniert Inc(pdata) definitiv (pData = PWord)...
Ich vermute mal eher, dass du beim erhöhen des Pointers in einen "undefinierten" Speicherbereich reinrutscht. |
Re: Pointer operation
Wie kann sowas passieren?
Delphi-Quellcode:
Das ganze soll bewirken, dass an meiner Hardware (16-Bit-Port) ständig EInsen und Nullen im Wechsel ausgegeben werden.for i := 0 to DatLen-1 do begin if a = 0 then a := 65535 else a := 0; pData^ := a; Inc(pData); end; Mit der 8 Bit Variante funktioniert das wunderbar. Das einzige, was sich ändert ist, dass pData ein PWord-Pointer ist und kein PByte mehr. |
Re: Pointer operation
Hast du auch doppelt so viel Speicher reserviert?
|
Re: Pointer operation
Ich rufe die Funktion aus einer DLL (auf welche ich keinen Einluß habe) auf. Der Pointer wird nicht durch mich deklariert.
Na ich denk, ich werd's einfach mit den 8-Bit lösen. Danke für die Antworten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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