Luis Fernando Del Aguila Mejía wrote:
> The documentation 
> (http://www.freepascal.org/docs-html/prog/progsu146.html#x189-1990008.2.7) 
> says:
>     -8 Longint current string with size.
>     -4 Longint with reference count.
>  But, when I want access to that structure, I have to do it backwards.
>    -8 Longint with reference count.
>    -4 Longint current string with size.

> Do these positions are different, depending on microprocessor being used ?

I'm fairly certain that is an error in the documentation, and that it SHOULD 
always be as you discovered it to actually be.


As an aside, a tip for doing pointer arithmetic...

var
  s : ansistring;
  p : ptruint;

p := pointer(s);
dec(p);  // equivalent to p:=p-4 because p is a typed pointer.

Using typed pointers in this way will likely make it easier to adapt your code 
to a 64-bit conversion in the future.

Also note that, in this case, dec(p,2) would do p:=p-8, as (hopefully) expected

I use these types of constructs frequently, and it makes it much easier to 
change types, if that is ever necessary, or adapt constructs to new types.

Cheers,
David

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to