Ich verwende Delphi XE4. Ich versuche, eine Hilfsfunktion für TBytes zu definieren:Kann ich einen Datensatz Helfer für TBytes definieren?
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;
ich außer dem Ergebnis für i
3
ist aber es funktioniert nicht:
TBytesHelper = record helper for TBytes
public
function GetLength: integer;
end;
function TBytesHelper.GetLength: integer;
begin
Result := System.Length(Self);
end;
Wenn ich die neue Hilfsfunktion zu konsumieren versuchen. Ich beziehe mich auf TStringHelper definieren in SysUtils.pas, die ähnliche Konstrukt hat.
Gibt es etwas, was ich vermisse?
Dieser Code wird nicht einmal in XE3 kompilieren. Fehler bei 'B.GetLength' mit' [dcc32 Error]: E2018 Datensatz, Objekt oder Klassentyp erforderlich'. Was ist "TBytes" in XE4? Ist es immer noch 'TArray'? Ich dachte nicht, dass Helfer mit generischen Typen verwendet werden könnten. –
Ja. Es wird nicht in 'XE3' kompiliert. Deshalb verwende ich 'XE4' wie in meiner Frage angegeben. –
Ich bot einige zusätzliche Informationen an, falls es sich als hilfreich erwies. Ich nehme an, du hast meinen Kommentar falsch verstanden. Vergiss es. Nebenbei sollten Sie die Frage delphi-xe4 sowie das allgemeine dephi-Tag markieren. Welches Debugging hast du bisher gemacht? –