Używam Delphi XE4. Staram się określić jakąś funkcję pomocniczą dla TBytes:Czy mogę zdefiniować pomocnika rekordu dla TB?
TBytesHelper = record helper for TBytes
public
function GetLength: integer;
end;
function TBytesHelper.GetLength: integer;
begin
Result := System.Length(Self);
end;
Kiedy próbuję zużywają nową funkcję pomocniczą:
var B: TBytes;
i: integer;
begin
B := TBytes.Create(1,2,3);
i := B.GetLength;
if i <> Length(B) then
raise Exception.Create('Incorrect result');
end;
I, z wyjątkiem wyniku na i
jest 3
ale tak nie jest. Odnoszę się do TStringHelper define w SysUtils.pas, który ma podobny konstrukt.
Czy jest coś, za czym tęsknię?
Ten kod nie będzie nawet kompilowany w XE3. Nie działa z 'B.GetLength' z' [dcc32 Error]: E2018 Wymagany rekord, obiekt lub typ klasy'. Co to jest 'TBytes' w XE4. Czy to nadal 'TArray'? Nie sądziłem, że pomocnicy mogą być używani z typowymi typami. –
Tak. Nie skompiluje się w 'XE3'. Właśnie dlatego używam 'XE4' jak podano w moim pytaniu. –
Oferowałem dodatkowe informacje na wypadek, gdyby okazało się to pomocne. Sądzę, że źle zrozumiałeś mój komentarz. Nieważne. Na marginesie powinieneś tagować pytanie delphi-xe4, a także używać ogólnego tagu dephhi. Jakie dotychczas debugowanie zostało wykonane? –