Moin,
Wer ist eigentlich auf die saublöde Idee gekommen, daß man CalcFields nicht leeren darf? (natürlich alles im OnCalcField)
Bevor das Erste mal was reingeschrieben wird, ist es ja auch schoneinmal Null, dann kann man beliebig alles Mögliche reinschreiben, aber leer bekommt man es nicht mehr.
Field.Clear;
geht nicht, da
Delphi-Quellcode:
procedure TField.Clear;
begin
if FieldKind in [fkData, fkInternalCalc] then
SetData(nil);
end;
Und es ist auch nirgends überschrieben. (außer bei Blobs)
Auch die Idee ein Null an AsVariant oder Value zu übergeben geht nicht, da
Delphi-Quellcode:
procedure TField.SetAsVariant(const Value: Variant);
begin
if VarIsNull(Value) then
Clear
else
...
Ich tausche jetzt das
Field.Clear;
gegen ein
Field.SetData(nil)
(da dieses zur Abwechslung mal nicht private ist) und hoffe es knallt dann nirgendwo.
(wir haben eh demnächst vor alle benutzten TField-Typen abzuleiten und dann würde dort das Clear überschrieben)
Weiß zufällig jemand, warum man das so gemacht hat?
Einen Bugfix für XE erwarten wir eh nicht mehr, aber wir würden gern wissen warum das so ist. Hatten ja schon Andere das Problem (laut Google), aber eine Antwort fanden wir da nie.