As already mentioned ftBytes represents an array of byte ( defined as TBytes), I manged to get it to work with this code:
FieldDefs.Add('XBYTES',ftBytes,1,false); //1I byte in length
Then to add/retreive data after CreateTable or CreateDataset do this
Setlength(tb,1); // tb is type TBytes
tb[0] := b; // where b is a number of type byte (0..255)
FieldsByName('XBYTES').AsBytes := tb; // Save the value to the buffer
tb2 := FieldsByName('XBYTES').AsBytes; // Retrieve the value into tb2 which is type TBytes
b2 := tb2[0]; // Same as original input
If you do this (as TDBGrid would do)
s := FieldsByName('XBYTES'].AsString; // s is chr(b2) ie the character equivalent
Hope that helps. Else as already suggested use ftSmallInt (2 bytes) with external code to do range checking. I think that would be simpler. ftBytes is really best for binary arrays where you need to know exactly what is contained in each byte and process each byte separately.