バリアントはいつも楽しいですね。Delphiのバリアントが空の文字列かどうかを確認するには?
私はDelphi XEに移行するために、D2007の最後のレガシーアプリケーションを開発中です。
暫定的に変種がかなり変更されました。
このコード行:
if (VarType(Value) = varString) and (Value = '') then
Exit;
はtrueを返しとD2007に終了したが、デルファイXEではありません。
私はこれまで、それを変更した:
if VarIsStr(Value) and (VarToStr(Value) = '') then
Exit;
私は、これは行くための「最良」の方法です確信していません。 Variantsユニットには、これを行うための特定の呼び出しがありません。これは過去の人々の問題であることは確かです。しかし、検索ではライブラリー機能やその他の承認された方法は明らかにされていません。
"正しい"またはより良い方法はありますか?
なお、 'v = '''は 'v:= ''に明示的に代入すると真です; - 私の推測では、複数のバリアント文字列のサブタイプ、おそらくB_STRなどがあるので、たとえコンテンツが同じであっても、要素の比較は失敗します。 –
'もしVarToStr(Value)= '''だけが仕事をしたら? – kobik
@kobikこれは、たとえば、 'Value'が' Null'に等しいときに失敗します。 –