08. juli 2007 - 15:19Der er
6 kommentarer og 1 løsning
TypeInfo, TypeIdentifier
Hej
Der findes en delphi function som hedder TypeInfo. Den tager en type identifier og returnerer en pointer til info om typen.
Jeg kunne godt tænke mig at lave en function, som (ligesom TypeInfo) også modtager en parameter der en er en type identifier.
Noget i stil med:
Type TMyType = (Ja, Nej);
function MyFunction(T: TypeIdentifier): Pointer begin end;
procedure CallTheAbove; begin MyFunction(TMyType); end;
I ovenstående eksempel vil MyFunction og CallTheAbove ikke kompilere. Men hvis man kalder
TypeInfo(TMyType)
så kan man godt.
Problemet ligger i declarationen af MyFunction. Der hvor der står "TypeIdentifier", skal der stå noget andet. Men Hvad ??? Hvad skal typen på "T" være, så "T" kan indeholde en type og ikke bare en variabel ?
Men da jeg har forskellige enumerated variable, synes jeg at det ville se mere elegant ud, hvis man hver gang man skulle lave en streng om til en enum, bare kunne kalde en function:
function StrToEnum(T: "TypeIdentifier", S: String): Integer; begin Result:= T(GetEnumValue(TypeInfo(T), S)); end;
Problemet er : hvad skal der står der, der hvor jeg har skrevet "TypeIdentifier" ? Jeg ved at det kan lade sig gøre, fordi man kan jo kalde functionen TypeInfo i delphi på denne måde.
Den er bygget ind i compileren, og Typeidentifier er ikke sådan lige at definere :(
Bliver dig svar skyldig, hvis du er rigistreret bruger kan du jo prøve at spørge CodeGear folkene
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.