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]

Responder a