Czy istnieje sposób, w jaki mogę zadeklarować zmienną o adresie bezwzględnym, który ma pewne przesunięcie względem zmiennej, do której się odnosi. Na przykład, zamiast:Składnia zmiennej bezwzględnej lokalnej na inną zmienną z pewnym przesunięciem
function RefCount(const s: string): Integer;
begin
Result := PInteger(Integer(s) - 8)^;
end;
jest jakiś sposób, że można zrobić:
function RefCount(const s: string): Integer;
var
Count: PInteger absolute s {- 8 ?} ;
begin
Result := Count^;
end;
(Przykładem jest tylko zilustrowanie, a nie koniecznie przydatne ..)
Zadałem to samo pytanie na WP: RD/C kilka lat temu, a odpowiedź, którą otrzymałem, brzmiała "nie". I, o ile mi wiadomo, to naprawdę * jest * odpowiedzią. –
(Przy okazji, wiesz, że twój pierwszy fragment jest rzeczywiście krótszy niż twój ostatni, prawda? :) –
To, o co prosisz, to odpowiednik słowa kluczowego VC++ "__based". Nie ma takiej funkcji w Delphi (lub C++ Builder, jeśli o to chodzi). –