Le varianti sono sempre divertenti, eh?Come capire se una variante di Delphi è una stringa vuota?
Sto lavorando a un'applicazione legacy che era l'ultima in D2007 per migrarlo a Delphi XE.
Le varianti sono cambiate un po 'nel frattempo.
Questa riga di codice:
if (VarType(Value) = varString) and (Value = '') then
Exit;
restituito Vero e usciti in D2007, ma non lo fa in Delphi XE.
ho cambiato a questo:
if VarIsStr(Value) and (VarToStr(Value) = '') then
Exit;
non sono convinto questo è il modo "migliore" per andare. L'unità Variants non ha una chiamata specifica per farlo, e certamente ricordo che questo è un problema per la gente in passato. Tuttavia, una ricerca non ha rivelato alcuna funzione di libreria o altro modo accettato.
Esiste un modo "corretto" o migliore?
Per inciso 'v = ''' è vero, se lo assegno esplicitamente a 'v: = '';' - La mia ipotesi è che ci sia più di un sottotipo di stringa variante, forse B_STR e qualcos'altro, e quindi il confronto degli elementi fallisce, anche se il contenuto è lo stesso. –
Wont 'se VarToStr (Value) = ''' solo esegue il lavoro? – kobik
@kobik Questo fallisce, ad esempio, quando "Valore" è uguale a "Nullo". –