PDataSという、TDataS構造体へのポインタがありまして…。
Name: pCharといふフィールドを持っています。(他にもありますが)
これをTListを継承したリストに格納(StrAllocとStrPLCopyで。)
して、Destroyするときに
for i := 0 to Count-1 do
begin
StrDispose(PDataS(Items[i])^.Name);
  Dispose(Items[i]);
end;
としているんですが、どこが違うでしょうか?