El codigo es el correcto pero falta colocar el "salvadidas" de las excepciones:
Código:
var Tabla: TTable; DataSource: TDataSource;begin Tabla:=TTable.Create(nil); DataSource:=TDataSource.Create(nil); Try //usamos los componentes
Finally
DataSource.Free; Tabla.Free;
end;end;
De esta forma si algo sale mal mientras manipulas las tablas, te aseguras de que se destruyan y no te dejen memoria colgando. Esta es la forma "canónica" para crear objetos en tiempo de ejecución. La plantilla es la misma para cualquier otro objeto que quieras crear, solo sustituyes por el tipo correcto (en este caso es TDataset y TDataSource). En este ejemplo, TDAtasource solo es necesario si vas a ocupar controles DBAware como un TDBEdit o algo asi, pero si solo vas a manipular la tabla para calcular algo o copiar, no es necesario.