On Thu, 8 Sep 2011, Reinier Olislagers wrote:

Hi list,

Possible newbie question so feel free to educate me ;)
(Away for some days, so may not read response until back)

A patch by Ludo Brands on bufdataset (mantis 19930) got me thinking:

const
 ftSupported = [ftString,ftGuid,... and so on];

procedure TCustomBufDataset.CreateDataset;
var i:integer;
begin
...
// check if all types are supported
 For i:=0 to FieldDefs.Count-1 do
   if not (Fielddefs.items[i].DataType in ftSupported) then

DatabaseErrorFmt(SUnsupportedFieldType,[Fieldtypenames[Fielddefs.items[i].DataType]]);
  CreateFields;
end;

Suppose I want to write a dataset data copier or importer/exporter, how
do I detect supported datatypes in a dataset?

For example, in my dbfexport test code, I make a bufdataset with all
possible fields, then strip each field away when strange errors/AVs
occur when assigning values to them.
For other datasets (with similar checks as proposed in Ludo's patch),
the runtime library is nice enough to warn me on field creation that it
doesn't work.

Am I missing something obvious or does it make sense to expose something
like a SupportedFieldTypes property for datasets?
How does Delphi do this?

It does not.


Besides that, I think it's an excellent idea to check for invalid
datatypes when creating fields, rather than failing later on when
assigning values to them.

It is up to the implementation of the datasets to give a decent error when
an unsupported data type is being created.

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to