Página 1 de 1
Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 30 Abr 2008 12:58
por labaroazul
Boa tarde, amigos do fórum! :*
Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 30 Abr 2008 14:49
por Pablo César
Eu não sei dizer agora de imediato, teria que pesquisar, mas lábaro por quê você pergunta isso ?. Estaria dando algum erro na compilação ?. O Exospace não é utilizado mais em vista da utilização do BLINKER que é muito melhor !
Enviado: 30 Abr 2008 15:17
por Maligno
Ademais a tabela de símbolos nasce na criação do objeto e não no encadeamento.
De qualquer forma eu não sei informar. Em toda a vida nunca precisei tomar conhecimento desse número. Mas pode ser só uma curiosidade.

Enviado: 30 Abr 2008 21:02
por vagucs
olha, pelo que v, superficialmente, 32000 simbolos declarados isto nao conta nomes de variaveis locais, como os nomes de rotinas e variaveis no clipper ficam e uma tabela unica no EXE, o limte é para ambos.
É um dado um tanto impreciso, mas acredito que suporte algo em torno disto pelo que analisei supercialmente com o DClip.
Re: Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 02 Mai 2008 18:02
por labaroazul
Minha pergunta, amigos, deve-se ao fato de que eu sempre tenho problemas quando meus sistemas ficam muito grandes. :-O
Uso programação "modular" (um prg comporta toda a rotina de cadastro, cunsulta, alteração e exclusão de cliente; outro comporta todas as funções usadas no sistema; outro comporta os menus da tela principal...). E estou tentando pesquisar se há a possibilidade de eu declarar todas as variáveis usadas no sistema no primeiro prg e, depois, só ir limpando e chamando essas variáveis no decorrer do programa. Exemplo:
No primeiro prg do programa eu colocaria:
PUBLIC cNOME := SPACE(50)
PUBLIC cENDERECO := SPACE(50)
PUBLIC cBAIRRO := SPACE(40)
PUBLIC cCEP := SPACE(10)
PUBLIC cCIDADE := SPACE(50)
PUBLIC cUF := SPACE(02)
PUBLIC cPAIS := SPACE(20)
PUBLIC cPORTO := SPACE(PORTO)
e, nos prgs que usam essas variáveis, quando eu precisar limpá-las, usaria da seguinte forma:
cNOME = SPACE(50)
ou preenchê-las:
cNOME = NOME
ou salvá-las na base de dados
REPLACE NOME WITH cNOME,; (...)
Desse modo eu saberia exatamente quantas variáveis meu sistema está usando e não precisaria repetí-las / criá-las em cada prg que as utilize. E, sem estourar as 32000 variáveis! :xau
Se essa idéia funcionar eu acho que vai ser muito bom!

)
Vocês acham que isso dá certo?

Re: Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 02 Mai 2008 18:08
por Maligno
O que você quer fazer não é considerada uma boa prática de programação. Mas se ainda assim quiser, ao invés de usar variáveis públicas, utilize matrizes. Elas ajudarão bastante a aliviar a carga sobre a tabela de símbolos.
Re: Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 02 Mai 2008 18:17
por labaroazul
Matrizes? Como eu declaro uma matriz?

Re: Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 02 Mai 2008 18:22
por Maligno
Exemplo:
Código: Selecionar todos
local aMatriz := {} // vazia
local aMatriz := {1,2,3,4,5} // unidimensional
local aMatriz := {{"A"},{"B"},{"C"}} // multidimensional
Logicamente, uma matriz é uma variável como outra qualquer e pode, portanto, receber qualquer um dos demais modificadores de classe de armazenamento: public, private e static. Mas não podem ser armazenadas diretamente em arquivos MEM. O NG explica com detalhes.
Uma lembrança: além da operação direta, você também tem várias funções da biblioteca padrão para a manipulação de matrizes.
Re: Quantas variáveis (symbols) o Clipper e o Exospace suportam?
Enviado: 02 Mai 2008 18:32
por Pablo César
Lábaro, veja este exemplo em que exemplifiquei utilizando MATRIZes.
viewtopic.php?f=1&t=7751&p=43054#p43054
Outra forma, seria você passar a utilizar mais os recursos de criação de funções, isto te permitirá "economizar" memória ao criar memórias Locais ou staticas. Você por exemplo, poderá criar as variáveis necessárias para inclusão, alteração e pesquisa declarando-as como "locais" em um função específica para esse fim. Logo que termina de executar essa função essa memória é liberada. Isso dá mais velocidade e deixa o seu código-fonte mais entendível e específico. Inclusive certas funções poderão ser compartilhadas em outro módulo sem ter a necessidade de repetí-las.
As memórias PUBLIC ocupam muito espaço de memória, só utilize quando você não tem outra saída.