AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer operation

Ein Thema von oli_a · begonnen am 12. Mär 2009 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#1

Pointer operation

  Alt 12. Mär 2009, 12:45
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?
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Pointer operation

  Alt 12. Mär 2009, 12:48
Upps, hab was überlesen
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#3

Re: Pointer operation

  Alt 12. Mär 2009, 12:59
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#4

Re: Pointer operation

  Alt 12. Mär 2009, 13:47
Also es kommt schonmal keine Fehlermeldung mehr.
Die Hardware reagiert trotzdem nicht richtig.
Ohne Fehlermeldung wird's jetzt schwierig den Fehler zu finden.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Pointer operation

  Alt 12. Mär 2009, 13:56
Schon dein Befehl oben sollte funktionieren. Was willst du eigentlich?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#6

Re: Pointer operation

  Alt 12. Mär 2009, 14:04
Na das Increment eines PWord-Pointers.
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Pointer operation

  Alt 12. Mär 2009, 14:04
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.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#8

Re: Pointer operation

  Alt 12. Mär 2009, 14:14
Wie kann sowas passieren?

Delphi-Quellcode:
         
for i := 0 to DatLen-1 do
   begin
      if a = 0 then a := 65535 else a := 0;
         pData^ := a;
         Inc(pData);
   end;
Das ganze soll bewirken, dass an meiner Hardware (16-Bit-Port) ständig EInsen und Nullen im Wechsel ausgegeben werden.
Mit der 8 Bit Variante funktioniert das wunderbar. Das einzige, was sich ändert ist, dass pData ein PWord-Pointer ist und kein PByte mehr.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Pointer operation

  Alt 12. Mär 2009, 14:15
Hast du auch doppelt so viel Speicher reserviert?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#10

Re: Pointer operation

  Alt 12. Mär 2009, 14:29
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 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