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
karlhfreiburgAsked:
Who is Participating?
 
hustchConnect With a Mentor Commented:
In Delphi 32, you don't use the segment any more, the 32-bit pointer is an offset.
You can add Size to your pointer directly. If the Compiler won't let you do it with a pointer of type prec, you can typecast it to type PChar (myrec := prec(PChar(myrec)+size);)
0
 
julio011597Commented:
Maybe Size here is meant to be SizeOf(Rec)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.