Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Automatische Größenerkennung von Parametern


Flamefire - So 29.08.10 18:24
Titel: Automatische Größenerkennung von Parametern
Ich schreibe gerade eine Wrapper für WriteProcessMemory etc.

Jetzt Habe ich da sowas: function Read<T>(address:Cardinal; var X:T):Boolean;
Ist ja schonmal ganz Praktisch, da ich mit:
Read<Byte>(xxx, foo); und
Read<Cardinal>(yyy, bar);


Variablen verschiedener Größen lesen kann. Auch Records sind kein Problem.
Nur: Ist es nicht möglich, den Compiler die Größe automatisch bestimmen zu lassen, ohne Generics (die ständigen <Byte> nerven)

Müsste doch gehn, oder?
Sonst hab ich ja nicht viel gekonnt im Vergleich zu:
function Read(addres:Cardinal; var X; count:Cardinal):Boolean;


delfiphan - So 29.08.10 19:16

Nein ohne Generics kannst du das nicht herausfinden. Da wird praktisch nur ein Pointer übergeben.

Bei Generics musst du den Typ nicht explizit angeben, wenn der klar ist (ausser bei Var/Out/Return :(). Käme bei dir also höchstens für das Write in Frage.

// Edit: sorry paar mal editiert :)


Flamefire - So 29.08.10 19:36

Dumm gelöst. Generics werden doch eh vom Compiler übersetzt. Und besonders bei Var Paramtern sollte der das doch machen >.<


EDIT: Noch dümmer: Der Live-Syntaxcheck kann anscheinend keine Generics (D2009)