Link to home
Start Free TrialLog in
Avatar of karlhfreiburg
karlhfreiburg

asked on

Pointers in Delphi 32

My problem is, I have to increment a pointer.
    In old 16 bit code, I does it by use
   p := ptr(seg(p^),ofs(p^) + n);
    but this is not longer possible in delphi 32. So how can I do the
same stuff in 32bit?
    Here is some dummy code to make my problem more understandable...
    Type
   Rec = record
      size: integer;
      data: array[0..0] of byte;
   end;
   prec = ^rec;
   procedure readmorerecs;
   var
  p : pointer;
  numberofrec: integer;
   begin
  filestream := tfilestream.create('somefile',fmopenread);
  getmem(p,filestream.size);
  filestream.read(numberofrec,sizeof(integer));
  filestream.read(p^,filestream.size);
  interpretrec(p,numberofrec);
  filestream.free;
   end;
   procedure interpretrecs(var p; numberofrec: integer);
   var
  myrec: prec;
   begin
  myrec := @p;
  while numberofrec > 0 do
  with myrec^ do
  begin
   dosomething with myrec
   // not possible in 32 bit
   myrec := Ptr(Seg(myrec^),Ofs(myrec^)+Size);
   dec(numberofrec);
  end;
   end; *)

--
info@cpfreiburg.de
ASKER CERTIFIED SOLUTION
Avatar of hustch
hustch

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of julio011597
julio011597

Maybe Size here is meant to be SizeOf(Rec)