Hallo und

im Forum
KainPlan hat folgendes geschrieben : |
Pointer curFrame
CallStack[cnt] = Pointer((PInteger(curFrame) + 4)^ - 4);
curFrame = Pointer(PInteger(curFrame)^ ); |
Das sieht wie eine Mischung aus C++ und Delphi aus. In Delphi sieht das eher so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var curFrame: Pointer; begin
CallStack[cnt] := Pointer((PInteger(curFrame) + 4)^ - 4); curFrame := Pointer(PInteger(curFrame)^ ); |
Funktionieren wird das so aber nicht!
Grund:
Anders als in C++ kannst du mit Pointern nicht direkt rechnen. Du kannst sie zu Integer casten, dann kannst du damit als Integer rechnen. Dann musst du aber Integer(curFrame) nehmen, nicht PInteger.
Wenn du den Pointer als einen Pointer auf einen Integer nehmen willst und um die Größe eines Integers erhöhen willst, dann kannst du Inc benutzen. Dies erhöht einen typisierten Pointer um die Größe des Typs:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var curFrame: Pointer; begin curFrame := Pointer(4); Inc(PInteger(curFrame)); ShowMessage(IntToStr(Integer(curFrame))); |
Es sollte 8 ausgegeben werden.
Was möchtest du denn machen? So macht der Quelltext kaum einen Sinn.