TFieldsにはValidateメソッドはないが TField には Validateメソッドはある
DataSet->Fields[i].Validate() は2つの間違い
1、DataSet->Fields[i] は参照ではなくポインタを返す
2、Validateには・・・ヘルプをみろ

Assignedは、Delphiでは 引数無しのメソッドは () を付けないので
if xx.Onxx=nil then のように書くとOnxxxメソッドが呼ばれてしまう場合があるから必要なんだけど
C++では必要ない
CのようにNULL と比較してもいいし 論理型にポインタ型が代入される時の仕掛けを利用してもいいし