Как использовать C # Generics в Delphi 2009/2010? - PullRequest
0 голосов
/ 25 июня 2009

У меня есть следующий метод в C #:

    public T Read<T>()
    {
        T[] t = new T[1];

        int s = Marshal.SizeOf(typeof(T));
        if (index + s > size)
            throw new Exception("Error 101 Celebrity");

        GCHandle handle = GCHandle.Alloc(t, GCHandleType.Pinned);
        Marshal.Copy(dataRead, index, handle.AddrOfPinnedObject(), s);

        index += s;

        return t[0];
    }

dataRead - массив байтов []. Индекс и размер - целочисленный тип.

Функция читает тип из dataRead (byte []) и увеличивает индекс (index + = type).

По всей сети, когда я гуглю "Обобщения Delphi" - все, что появляется, это Trecords и классы, а это не то, что мне нужно.

Как мне создать этот код в Delphi?

1 Ответ

4 голосов
/ 25 июня 2009
function TReader.Read <T>: T;
begin
  if FIndex + SizeOf (T) > Length (FDataRead) then
    raise Exception.Create ('Error 101 Celebrity');
  Move (FDataRead[FIndex], Result, SizeOf (T));
  Inc (FIndex, SizeOf (T));
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...