2009-06-25 11 views
0

私はC#で、以下の方法がありますdelphi 2009/2010でC#Genericsを使用するには?

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 generics"と表示されていても、それはすべて私が必要とするものではないTrecordsとクラスです。

このコードはどのようにしてDelphiで作成できますか?

答えて

4
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; 
関連する問題