Estou usando algo assim para incluir um campo em uma tabela em tempo de
execução:

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables,Grids, DBGrids,  BDE, DBCtrls, Menus,
ComCtrls,
Buttons;

type
  TForm1 = class(TForm)
    Table1: TTable;
    Button1: TButton;
    Button2: TButton;
    Table2: TTable;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

type
ChangeRec = packed record
szName: dbiname;
iType: Word;
iSubType: Word;
iLength: Word;
iPrecision: Byte;
end;

var
MyChangeRec: ChangeRec;

procedure AddField(Table: TTable; NewField: ChangeRec);

implementation

{$R *.DFM}

procedure AddField(Table: TTable; NewField: ChangeRec);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
pFlds: pFLDDesc;
pOp: pCROpType;
B: byte;

begin
if Table.Active = False then
raise EDatabaseError.Create('A tabela precisa estar aberta');
if Table.Exclusive = False then
raise EDatabaseError.Create('A tabela precisa estar aberta em modo
Exclusivo');
Check(DbiSetProp(hDBIObj(Table.Handle), curxltMODE, integer(xltNONE)));
Check(DbiGetCursorProps(Table.Handle, Props));
pFlds := AllocMem((Table.FieldCount + 1) * sizeof(FLDDesc));
FillChar(pFlds^, (Table.FieldCount + 1) * sizeof(FLDDesc), 0);
Check(DbiGetFieldDescs(Table.handle, pFlds));

for B := 1 to Table.FieldCount do begin
pFlds^.iFldNum := B;
Inc(pFlds, 1);
end;
try
StrCopy(pFlds^.szName, NewField.szName);
pFlds^.iFldType := NewField.iType;
pFlds^.iSubType := NewField.iSubType;
pFlds^.iUnits1 := NewField.iLength;
pFlds^.iUnits2 := NewField.iPrecision;
pFlds^.iFldNum := Table.FieldCount + 1;
finally
Dec(pFlds, Table.FieldCount);
end;
pOp := AllocMem((Table.FieldCount + 1) * sizeof(CROpType));
Inc(pOp, Table.FieldCount);
pOp^ := crADD;
Dec(pOp, Table.FieldCount);
// Blank out the structure...
FillChar(TableDesc, sizeof(TableDesc), 0);
// Get the database handle from the table's cursor handle...
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
// Put the table name in the table descriptor...
StrPCopy(TableDesc.szTblName, Table.TableName);
// Put the table type in the table descriptor...
StrPCopy(TableDesc.szTblType, Props.szTableType);
// Close the table so the restructure can complete...
TableDesc.iFldCount := Table.FieldCount + 1;
Tabledesc.pfldDesc := pFlds;
TableDesc.pecrFldOp := pOp;
Table.Close;
// Call DbiDoRestructure...
try
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));
finally
FreeMem(pFlds);
FreeMem(pOp);
Table.Open;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
NumCampos:integer;
CampoAtual:SmallInt;
NomedoCampo,Inserir:string;
codloja:string;
begin
table1.Open;
table2.Open;
    if length(inttostr(table2.Fields[0].value))=1
    codloja:='0'+inttostr(table2.Fields[0].value)
    else
    codloja:=inttostr(table2.Fields[0].value)

//AQUI DÁ O
ERRO////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////
MyChangeRec.szName := 'qtdlj'+CodLoja;///Aqui preciso atribuir como nome do
campo qtdlj+conteudo da variavel codloja
//porem da mensagem de erro [Error] Unit1.pas(148): Incompatible types:
'DBINAME' and 'String' pois o szName é do tipo DBINAME
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////

MyChangeRec.iType := fldPDXNUM;
MyChangeRec.iSubType:=0;
MyChangeRec.iLength := 0;
MyChangeRec.iPrecision := 0;
Table1.Close;
Table1.Exclusive := True;
Table1.Open;
AddField(Table1, MyChangeRec);
Table1.Close;
Table1.Exclusive := False;
Table1.Open;
End;


----- Original Message -----
From: "Rubem Nascimento da Rocha" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Tuesday, March 21, 2006 11:26 AM
Subject: RE: [delphi-br] String para DbiName


> DbiName? De onde vc tirou isso?
> Sds.
>
>
> >From: "Emerson Cassio" <[EMAIL PROTECTED]>
> >Reply-To: delphi-br@yahoogrupos.com.br
> >To: <delphi-br@yahoogrupos.com.br>
> >Subject: [delphi-br] String para DbiName
> >Date: Tue, 21 Mar 2006 11:17:20 -0400
> >
> >Pessoal alguem tem alguma ideia de como converto uma variavel do tipo
> >string
> >para DbiName?
> >
>
> _________________________________________________________________
> MSN Busca: fácil, rápido, direto ao ponto.  http://search.msn.com.br
>
>
>
> --
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
>
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a