sto giocando con arround TValuestringa TValue <--> booleano avanti e indietro
Ho scritto questo codice in un progetto vuoto:
uses
RTTI;
procedure TForm1.FormCreate(Sender: TObject);
var
s: string;
b: Boolean;
begin
s := TValue.From<Boolean > (True).ToString;
b := TValue.From<string > (s).AsType<Boolean>;
end;
Ma non posso convertire indietro da stringa boolean; Ricevo un'eccezione Typecast non valida nella seconda riga.
Sto usando Delphi XE ma è lo stesso risultato in Delphi Xe6 che mi porta alla conclusione: sto usando TValue sbagliato.
Quindi, per favore, cosa sto sbagliando?
'TValue.ToString()' ha una conoscenza specifica di RTTE booleano e sa di chiamare 'GetEnumName()' per convertire tale valore in una stringa. 'TValue.AsType()', d'altra parte, non definisce alcuna conversione 'String'-> Enum (si veda la matrice gigante' Conversions [] [] 'in' System.Rtti.pas'). Supporta le conversioni Enum solo quando i tipi source e dest sono dello stesso tipo enum, o quando entrambi sono di tipo booleano (possono essere byte di dimensioni diverse). –