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? :-o

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.