[Back to POINTERS SWAG index] [Back to Main SWAG index] [Original]

    { Convert it to 2 words and then do it. You can do it like this; }
    Type
     St4  = string[4];
     PRec = record
      Ofs, Seg: Word;
     end;

    Var
     P:Pointer;
     P2:PRec absolute P;

    Function Hexw(w:word):st4;
    var s:st4; c:byte; n:array [1..2] of byte absolute w;
    begin
     s:='';
     for c:=2 downto 1 do s:=s+hexid[n[c] shr 4]+hexid[n[c] and $f];
     hexw:=s;
    end;

    Begin
     Writeln('Pointer P is at address: ',P2.Seg,':',P2.Ofs,'.');
     writeln('In hex, that''s ',hexw(p2.seg),':',hexw(p2.ofs,'.');
    End.
    {
    You can also use typecasting instead of absolute variables. To do this,
    you would use PRec(p) instead of P2 in all places.

    > am making an exitprocedure for runtime errors, but when I try to write
    > the address, its not allowed. I triedto convert it to a word but no-go.
    > Anyone, any ideas would be nicely taken.

    It's not 1 word but 2. Word is 2 bytes, longint and pointer are 4. PRec
    splits it into 2 fields each of size Word.
    }

[Back to POINTERS SWAG index] [Back to Main SWAG index] [Original]