Página 1 de 1

ARRAY

Enviado: 15 Mar 2005 08:42
por Zima
Bom dia aos amigos,

Qual é o limite para X abaixo:

DECLARE codi[X] ???

Sds,
Zima

Enviado: 15 Mar 2005 09:02
por Clipper
Prezado Zima

Isso vai depender da sua aplicação, respeitando-se os limites impostos pelo próprio Clipper para o número/tamanho de variáveis e vetores, observe que o comando DECLARE é considerado obsoleto para a versão 5.2 e ou superior, sendo recomendado neste caso o uso de PRIVATE.

Você não precisa especificar um valor inicialmente, pode criar um vetor e ir incrementando-o conforme a sua necessidade, o que na minha opnião é mais recomendável.

Até logo.

Marcelo

Enviado: 15 Mar 2005 11:22
por vagucs
O limite de tamanho de um array é de 4096 elementos, tanto no declara quanto no comando AADD, vc pode usar o xHarbour pois nele os arrays não tem limites de tamanho, este limite é a memória disponível na máquina.

Enviado: 16 Mar 2005 10:42
por Zima
Obrigado Vagner, Marcelo pelo retorno.

Perguntei isso porque tenho a seguinte situação:
- tenho dois bancos de dados (estoque.dbf), em duas lojas distintas.
- até determinado código de produto (de 10000 até 15000), as duas lojas tem os mesmos itens.
- preciso atualizar apenas 3 campos (de estoque.dbf) da loja 2 (custo, revendedor,consumidor) com os preços constantes da loja 1 ... isso porque esses preços na loja 1 são constantemente modificados

Então, pensei:

- em vez de ficar abrindo e fechando os dois arquivos item a item, abriria estoque.dbf da loja 1, jogaria vários registros de uma só vez em uma ARRAY, e depois abriria estoque.dbf da loja 2 e atualizaria os campos necessários !

Foi o que de melhor me ocorreu, mas estou aberto a novas idéias dos amigos do forúm.

Sds !
Zima

Enviado: 16 Mar 2005 10:54
por clebermano
eu ja tive estes problemas com arrays, a saida foi usar banco de dados temporarios.

Enviado: 16 Mar 2005 17:05
por vagucs
Como assim,

Vc abre o arquivo 1 pega os dados e fecha
Abre o arquvio 2 grava os dados e fecha
Abre o arquivo 1 pega os dados e fecha
Abre o arquivo 2 grava os dados e fecha...


É isto que vc está fazendo, no seu caso a melhor forma é ficar com os dois bancos de dados abertos referenciando a area de trabalho

USE ESTOQUE NEW ALIAS EST1
USE C:\OUTR\ESTOQUE NEW ALIAS EST2
...
SELECT EST2
REPLACE PRECO WITH EST1->PRECO.

Para este tipo de processo os arrays não são indicados primeiro por não serem necessários e segundo pela sua limitação de dimensão e por ocupar memória do computador.

Enviado: 16 Mar 2005 21:35
por Zima
É isso, Vagner !

Acho que dessa forma vai dar ... você matou a charada !

Valeu mesmo. Vou implementar para ver o resultado.

Sds,
Zima