program ideone;
{$MODE OBJFPC}{$LONGSTRINGS ON}
uses
SysUtils;
var
strValue: String = 'ABCDEFGH';
ptrChar: Pointer;
intAddr: PtrInt;
strAddr: String;
begin
// pobranie adresu na znak 'F' z łańcucha
ptrChar := @strValue[6];
// wyświetlenie znaku spod wskaźnika i adresu na który wskazuje
WriteLn('Value: ':20, PChar(ptrChar)^);
// wyświetlenie adresu po konwersji liczby na hex-string
WriteLn('Address (hexint): ':20, HexStr(PtrInt(ptrChar), 8));
// konwersja adresu na hex-string
strAddr := HexStr(PtrInt(ptrChar), 8);
// wyświetlenie adresu jako ciągu znaków
WriteLn('Address (string): ':20, strAddr);
// dekonwersja hex-stringa na adres w pamięci
ptrChar := Pointer(StrToInt('0x' + strAddr));
// wyświetlenie znaku spod nowego wskaźnika
WriteLn('Value: ':20, PChar(ptrChar)^);
end.
cHJvZ3JhbSBpZGVvbmU7Cgp7JE1PREUgT0JKRlBDfXskTE9OR1NUUklOR1MgT059Cgp1c2VzCiAgU3lzVXRpbHM7CnZhcgogIHN0clZhbHVlOiBTdHJpbmcgPSAnQUJDREVGR0gnOwogIHB0ckNoYXI6IFBvaW50ZXI7CiAgaW50QWRkcjogUHRySW50OwogIHN0ckFkZHI6IFN0cmluZzsKYmVnaW4KICAvLyBwb2JyYW5pZSBhZHJlc3UgbmEgem5hayAnRicgeiDFgmHFhGN1Y2hhCiAgcHRyQ2hhciA6PSBAc3RyVmFsdWVbNl07CgogIC8vIHd5xZt3aWV0bGVuaWUgem5ha3Ugc3BvZCB3c2thxbpuaWthIGkgYWRyZXN1IG5hIGt0w7NyeSB3c2thenVqZQogIFdyaXRlTG4oJ1ZhbHVlOiAnOjIwLCBQQ2hhcihwdHJDaGFyKV4pOwoKICAvLyB3ecWbd2lldGxlbmllIGFkcmVzdSBwbyBrb253ZXJzamkgbGljemJ5IG5hIGhleC1zdHJpbmcKICBXcml0ZUxuKCdBZGRyZXNzIChoZXhpbnQpOiAnOjIwLCBIZXhTdHIoUHRySW50KHB0ckNoYXIpLCA4KSk7CgogIC8vIGtvbndlcnNqYSBhZHJlc3UgbmEgaGV4LXN0cmluZwogIHN0ckFkZHIgOj0gSGV4U3RyKFB0ckludChwdHJDaGFyKSwgOCk7CgogIC8vIHd5xZt3aWV0bGVuaWUgYWRyZXN1IGpha28gY2nEhWd1IHpuYWvDs3cKICBXcml0ZUxuKCdBZGRyZXNzIChzdHJpbmcpOiAnOjIwLCBzdHJBZGRyKTsKCiAgLy8gZGVrb253ZXJzamEgaGV4LXN0cmluZ2EgbmEgYWRyZXMgdyBwYW1pxJljaQogIHB0ckNoYXIgOj0gUG9pbnRlcihTdHJUb0ludCgnMHgnICsgc3RyQWRkcikpOwoKICAvLyB3ecWbd2lldGxlbmllIHpuYWt1IHNwb2Qgbm93ZWdvIHdza2HFum5pa2EKICBXcml0ZUxuKCdWYWx1ZTogJzoyMCwgUENoYXIocHRyQ2hhcileKTsKZW5kLgo=