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?
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
Curtir tópico
+ 0
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:
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:
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:
daí, para saber quantos registros há, basta fazer:
numreg := length(registros);
1 2 | i: integer; // variável auxiliar registros: array of array [1..5] of String; |
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
Clique aqui para fazer login e interagir na Comunidade :)