Fórum Interfaces, Objetos amp; OO - Problemas #285033

17/06/2005

0

Caros amigos, estou tendo um problema: necessito urgentemente de criar uma estrutura de interface e sua implementacao, algo bem parecido com o que o XMLDatabind faz, mas dirigido a um BD.

Abaixo segue a estrutura da qual preciso ´interfacear´:
type
         IoDataBases = interface;
         IoDatabase = interface;
         IoTabelas = interface;
         IoTabela = interface;
         IoCampos = interface;
         IoCampo = interface;
         IoIndices = interface;
         IoIndice = interface;


Na verdade essa estrutura armazenara os dados dos diversos alias com os quais trabalhamos hj aqui, tanto em paradox quanto em IB/FB, tendo uma ´indentacao´ +- assim:

Databases
|
+Database1
|
+Tabelas
|
+Tabela1
|
+Campos
| |
| +Campo1
| +Campo2
| +Campo3
|
+Indices
|
+Indice1

Meu problema consiste em como farei para lidar com essas listas de campos e indices dentro da interface IoTabela e a IoTabelas dentro da IoDatabase, como adicionar e excluir.
Se alguem souber de qquer coisa para me ajudar, fique a vontade!


Desde ja valeu, pessoal!


Wanx

Wanx

Responder

Posts

17/06/2005

Massuda

...como farei para lidar com essas listas de campos e indices dentro da interface IoTabela e a IoTabelas dentro da IoDatabase, como adicionar e excluir.
Não ficou claro para mim... o problema é gerar o XML ou gerenciar a lista de itens contidos na implementação de IoCampos e IoIndices?

No segundo caso, acho que a implementação de IoCampos/IoIndices pode conter uma lista TInterfaceList (essa lista é derivada de TInterfacedObject, o que torna ela também uma implementação de IUnknown).


Responder

Gostei + 0

17/06/2005

Wanx

Massuda, novamente gratissimo pela atencao!

Na verdade, seria a segunda alternativa, pois o XML eu apenas tomei por base, pois seria como um ´XMLDatabinding´ para DB....
Tenho essa estrutura em XML e num banco de dados firebird, usei o XMLDatabinding para me dar uma ideia de como poderia gerar os objetos, ao inves de trabalhar diretamente com o banco, acho que seria um ´framework´ bem primario, mas seria o ideal para meu caso.
No caso de gerenciar a lista de itens contidos na implementação de IoCampos, IoIndices (e tb IoDatabases e IoTabelas) como deveria proceder com a implementação da lista TInterfaceList? Desculpe, mas eh um assunto totalmente novo para mim, e igualmente importante...


Responder

Gostei + 0

18/06/2005

Wanx

???


Responder

Gostei + 0

20/06/2005

Massuda

No caso de gerenciar a lista de itens contidos na implementação de IoCampos, IoIndices (e tb IoDatabases e IoTabelas) como deveria proceder com a implementação da lista TInterfaceList? Desculpe, mas eh um assunto totalmente novo para mim, e igualmente importante...
Imagino que as classes que implementam essas interfaces que envolvem o conceito de ser uma coleção/lista utilizarão internamente uma lista do tipo TInterfaceList. Por exemplo (não testei):
type
  IoCampos = interface(...
    function GetLista: IInterfaceList;
    property Lista: IInterfaceList read GetLista;
  ...

  ToCampos = class(TInterfacedObject, IoCampos)
  private
    FLista: TInterfaceList;
  ...
  public
    constructor Create; override;
    destructor Destroy; override;
    function GetLista: IInterfaceList;
  ...

constructor ToCampos.Create;
begin
  inherited;

  FLista := TInterfaceList.Create;
  ...
end;

destructor ToCampos.Destroy;
begin
  FLista.Free;
  ...
  inherited;
end;

function ToCampos.GetLista: IInterfaceList;
begin
  Result := FLista as IInterfaceList;
end;
IInterfaceList e TInterfaceList são declarados na unit Classes.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar