Fórum Array dinâmico de objetos #374556
03/09/2009
0
unit unBiblioteca; interface uses Variants, Classes, Forms, SqlExpr, dConexao, Provider, DBClient, unClasses; type TCDSData = class private public FQuery : TSQLQuery; FDSP : TDataSetProvider; FCDS : TClientDataSet; FDS : TDataSetProvider; FKeyValue : String; FListValue : String; FOrderValue : String; FTableValue : String; FModule : TModule; constructor Create; end; implementation constructor TCDSData.Create; begin inherited Create; end; end.
Criei um array em public:
public ListCombosLookup : array of TCDSData; end;
E estou tentando usar da seguinte maneira. O problema está no FKeyValue. Está dando erro de acess violation.
procedure TdmCliente.prOpenModule(Action: TActions); begin SetLength(FormCadClientes.ListCombosLookup, 1); FormCadClientes.ListCombosLookup[0].FKeyValue := ´Testes´; end;
Qaul será o motivo deste erro?
Atenciosamente
Marlon[/code]
Et.vinny
Curtir tópico
+ 0Posts
03/09/2009
Osocram
o certo p achar o problemas seria vc colocar um break point ae na linha do erro e ver qual parte dele não esta instanciado ou esta com lixo.
Gostei + 0
03/09/2009
Et.vinny
Mas tentei dar create e nada.
Vou testar aqui outras possibilidades
Gostei + 0
03/09/2009
Marco Salles
Exemplo Bobo
procedure TFormCadClientes.Button1Click(Sender: TObject); var idx:integer; begin SetLength(FormCadClientes.ListCombosLookup, 1); FormCadClientes.ListCombosLookup[0]:=TCDSData.Create; //INSTANCIAR try FormCadClientes.ListCombosLookup[0].FKeyValue := ´Testes´; Showmessage(FormCadClientes.ListCombosLookup[0].FKeyValue); finally for idx := 0 to Length(FormCadClientes.ListCombosLookup) - 1 do freeandNil(FormCadClientes.ListCombosLookup[idx]) end; end;
Gostei + 0
04/09/2009
Et.vinny
Funcionou.
Encontrei outro problema.
O código abaixo não permite compilar o programa.
function fnAddComboLookup(PArray : array of TCDSData; PModule : TModule; PCombo : TComponent) : Boolean; begin SetLength(PArray, 1); end;
O Delphi diz que o PArray não é valido.
Fazia isto dentro do form sem problmas. E na unit não rola.
Pq será?
[]s,
Marlon
Gostei + 0
04/09/2009
Marco Salles
Type TEscolhaNome = array of TCDSData;
......
ListCombosLookup : TEscolhaNome;
.......
function fnAddComboLookup(PArray :TEscolhaNome; PModule : TModule; PCombo : TComponent) : Boolean; begin SetLength(PArray, 1); end;
Que dá...
Gostei + 0
04/09/2009
Marco Salles
Type TEscolhaNome = array of TCDSData;
......
ListCombosLookup : TEscolhaNome;
.......
function fnAddComboLookup(PArray :TEscolhaNome; PModule : TModule; PCombo : TComponent) : Boolean; begin SetLength(PArray, 1); end;
Que dá...
Gostei + 0
05/09/2009
Et.vinny
Tinha achado essa solução na net, e não funcionava.
E hoje descobri o meu erro. Em vez de fazer PArray :TEscolhaNome, estava fazendo PArray :array of TEscolhaNome;
Braço curto total....
Valeu pela ajuda galera....
[]s,
Marlon
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)