2017-10-17 2 views
1

Ich möchte meine Ergebnisobjekte von einem Webservice in Delphi analysieren. Jetzt muss ich eine Variante zu TXSDateTime analysieren, weil ich den Typ nicht kenne. Zum Beispiel:Parse-Variante zu TXSDateTime

if propInfo.PropType^ = TypeInfo(TXSDateTime) then 
begin 
    value := GetPropValue(objects[i], propInfo); //only returns a Variant 
    dateXSvalue := ???; //need to parse value to dateXSvalue; 
end; 

Die Funktion gibt nun ein Variant, dass ich nicht auf ein TXSDateTime analysieren kann. Es würde funktionieren, wenn ich den Typen kennen, so zum Beispiel:

dateXSvalue := Contract(objects[i]).StartDate; 

Also, wie ist es möglich, eine Variante zu einem TXSDateTime zu analysieren, ohne dass die genaue Art zu wissen?

+0

Was gibt Ihnen 'VarType (Wert)'? Es ist wahrscheinlich ein Zeiger auf die TXDDateTime-Instanz. – GolezTrol

+0

@GolezTrol es gibt 3 zurück –

+2

3 = 'varInteger' (Einheit System, wie in der Dokumentation zu VarType referenziert). Könnte tatsächlich ein Zeiger sein. Könnten Sie 'TXSDateTime (Integer (Wert))' versuchen und sehen, was es für Sie tut? – GolezTrol

Antwort

1

Die Variante enthält eine Ganzzahl (VarType(value) = varInteger), die die Adresse der TXSDateTime-Instanz enthält. Sie sollten in der Lage sein, es einfach so zu werfen:

XSDateTime := TXSDateTime(Integer(value)); 
Verwandte Themen