Concordo plenamente que eu tenho que estudar muito e tb concordo que que outras pessoas no mundo também, bem como outras precisam aprender certas coisas como humildade, educação e decência. Eduardo, agradeço sua boa vontade mas lamento lhe informar que sei como se utiliza um array mas que vai ser bom pois essas dicas podem servir para alguma outra pessoa, que assim como eu tb tem de estudar muito. Para que entendam melhor o que eu escrevi, vou colocar a procedure inteira. A declaração: private logsCapturados:array of icmpScan_cl_log_usr; A procedure: procedure icmpScan_cl_log_adm.procuraLogs; var busca: TSearchRec; logList: TStrings; Ret,i: Integer; host: string; begin Ret := FindFirst('append\*.ims', faAnyFile, busca); logList:=TStringlist.Create; i:=0; try while Ret = 0 do begin logList.Add(busca.Name); host:=copy(logList.ValueFromIndex[i],pos('_',logList.ValueFromIndex[i])+ 1,length(logList.ValueFromIndex[i])-3-(pos('_',logList.ValueFromIndex[i] )+1)); logsCapturados[i]:=icmpScan_cl_log_usr.create(host); --> O erro acontece aqui. Como se a variável não tivesse sido declarada. Ret := FindNext(busca); i:=i+1; end; finally begin FindClose(busca); end; end; end; E voltando a dizer, que se eu declarar esse array como uma variável da procedure, ao invés da unit, funciona. Elias Magalhães da Paixão Junior ___________________________________ Análise de Sistemas e Banco de Dados Consultoria e desenvolvimento de programas, sistemas e websites Tel.: (0XX21) 8262-7955 -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Eduardo Castro Alves Enviada em: segunda-feira, 14 de maio de 2007 07:58 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Violação de Memória em Array Acho que vc deve estudar muito. Segue abaixo um exemplo de um vetor dinâmico e um de tamanho fixo.
var i : Integer; A1 : Array of String; A2 : Array [0..10] of String; begin Memo1.Clear; SetLength(A1, 20); // defino o tamanho do vetor for i := 0 to Length(A1) - 1 do A1[i] := 'Vetor A1 Linha ' + IntToStr(i); for i := 0 to 10 do Memo1.Lines.Add(A1[i]); for i := 0 to 10 do A2[i] := 'Vetor A2 Linha ' + IntToStr(i); for i := 0 to 10 do Memo1.Lines.Add(A2[i]); end; Eduardo Elias Magalhães da Paixão Junior escreveu: > > Amigos, > > Preciso perturbá-los mais uma vez, pois não consigo encontrar solução. > Em uma unit, tenho o seguinte array declarado: > > Private > logsCapturados: array of log --> Já tentei estático tb. > > > Logo depois, em uma procedure, ele é criado: > > logsCapturados:=log.create; > > Aqui ocorre o erro de violação de memória, aquele mesmo que ocorre > quando o objeto não existe. O fato mais curioso é que se eu declarar o > array DENTRO da procedure, ele funciona normalmente, com o mesmo código. > Quando eu declaro como parte da classe, acontece isso. Alguém sabe??? > > Elias Magalhães da Paixão Junior > ___________________________________ > Análise de Sistemas e Banco de Dados > Consultoria e desenvolvimento de programas, sistemas e websites > Tel.: (0XX21) 8262-7955 > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas]