Fórum Como saber quantos registro tenho dentro do array? #300785

26/10/2005

0

Criei um array da seguinte forma

Registros :array[1..50, 1..5] of String;

só que na maioria dos casos não preencho os 50 linhas, como fazer um FOR para ir até o ultimo registro encontrado?


Wgm8

Wgm8

Responder

Posts

26/10/2005

Massuda

Você poderia percorrer o array de trás para frente (for...downto...) para localizar a primeira string não vazia (o que equivale a localizar a última string não vazia).


Responder

Gostei + 0

26/10/2005

Emerson Nascimento

crie o array de forma diferente:

1
2
i: integer; // variável auxiliar
registros: array of array [1..5] of String;
assim será criado um array dinâmico que será incrementado quando necessário.

por exemplo, se você preenche o array com os dados de uma tabela:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
setlength(registros,0); // inicializa o array
 
with tabela do
begin
  first;
  while not eof do
  begin
    if "registroatendecondicao" then
    begin
      setlength(registros,length(registros)+1); // incrementa o array
      i := high(registros);
      registros[i,1] := fieldbyname(´campo1´).asstring;
      registros[i,2] := fieldbyname(´campo2´).asstring;
      registros[i,3] := fieldbyname(´campo3´).asstring;
      registros[i,4] := fieldbyname(´campo4´).asstring;
      registros[i,5] := fieldbyname(´campo5´).asstring;
    end;
 
    next;
  end;
end;


assim o array terá somente os registros desejados, além de não ser limitado a 50.
mas se você quiser limitar a 50 registros, faça:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
setlength(registros,0); // inicializa o array
 
with tabela do
begin
  first;
  while not eof do
  begin
    if "registroatendecondicao" then
    begin
      setlength(registros,length(registros)+1); // incrementa o array
      i := high(registros);
      registros[i,1] := fieldbyname(´campo1´).asstring;
      registros[i,2] := fieldbyname(´campo2´).asstring;
      registros[i,3] := fieldbyname(´campo3´).asstring;
      registros[i,4] := fieldbyname(´campo4´).asstring;
      registros[i,5] := fieldbyname(´campo5´).asstring;
    end;
 
    next;
 
    if length(registros)=50 then // aqui é colocado um limite que,
      break;                     // se atingido, sai do laço (while)
  end;
end;


daí, para saber quantos registros há, basta fazer:
numreg := length(registros);


Responder

Gostei + 0

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

Aceitar