Einzelnen Beitrag anzeigen

grenzgaenger
(Gast)

n/a Beiträge
 
#6

Re: Pointer kann nicht freigegeben werden?

  Alt 7. Apr 2007, 09:33
Zitat von Nuclear-Ping:
Ok, alles klar.
Delphi-Quellcode:
{...}

  GetMem (qBuffer, ReqBytes);
  qAddr := Integer (qBuffer);

  {...}
  finally
    qBuffer := Pointer (qAddr);
    FreeMem (qBuffer);
  end;
Das funktioniert nun. Danke, dass du mich mit der Nase draufgedrückt hast.
komm, das da oben vergiss mal. das macht keinen sinn. vielmehr interessiert was du hier machst:
Delphi-Quellcode:
    for a := 0 to rd - 1 do
      begin
        BitArr := ByteToBitArr (qBuffer^);
        inc (qBuffer);
sollte das nicht inc(qBuffer^) heissen? sonst kannst du ja nix incrementieren. die addy ist tabu.

wenn du jedoch das ganze durchlaufen möchtest, kannst dir ja 'n pointer schaffen und es durchlaffen, geht in etwa so:
Delphi-Quellcode:
var p: pointer;
begin ....
 p := @qBuffer;
 for ...
  bittarr := bytetobitarr(byte(p^));
  inc(p);
damit wäre p deine laufvariable, in deinem reservierten speicherbereich, der über getmen an qBuffer zugewiesen wurde. qbuffer bleibt unverändert und du durchläufst nur den reservierten speicher, mit p. musst aber selbst dafür sorgen, dass du nicht über die grenzen hinausliesst. ganze ist ungetestet sollte aber so, plus/minus ein, zwei kleinigkeiten funktionieren. ausserdem kannst du mal unter den stichwort pointerarithmetik gucken ob du zusätzliches findest...

<HTH>
  Mit Zitat antworten Zitat