Página 1 de 1

FATAL C 3049 STRING SPACE EXHAUSTED

Enviado: 24 Abr 2005 10:24
por CDV
OLA GALERA, ESTOU TENTANDO COMPILAR UM PRG COM 863
LINHAS E DA ESSE ERRO:

FATAL C 3049 STRING SPACE EXHAUSTED, DO QUE SE TRATA ESSE
ERRO SENDO APENAS UM PRG, ESTOU COMPILANDO COM BLINKER 7.0
NO WINDOWS 2000 POIS EM UM SISTEMA COMPLETO QUE TEM PRG
COM MAIS DE 1500 LINHAS NAUM DA ESSE PROBLEMA.

SE ALGUEM PUDER ME AJUDAR AGRADECO.

Enviado: 25 Abr 2005 10:51
por Paulao
Tente compilar ele em blocos com menos linhas que vai dai certo

Enviado: 25 Abr 2005 18:17
por evolver
String space exausted ocorre durante a compilação quando ele tem que gerenciar muita memória para compilar aplicativos. Experimente reduzir as variáveis ou aumentar a quantidade de memória convencional disponível. Ou tente compilar usando "lh clipper bla,bla,bla"...

Enviado: 25 Abr 2005 19:22
por Toledo
CDV,

Este erro ocorre quando é declarada um número muito grande de variáveis no programa. O número de variáveis é contado tanto no seu arquivo PRG, como nos arquivos CH que foram incluídos no programa.

Para tentar resolver este problema, faça o seguinte:

1 - Verifique qual a versão do seu Clipper. Se não for a 5.2e ou 5.3b, atualize a sua cópia.

2 - Divida o seu PRG em vários arquivos menores, conforme orientação do Paulao na mensagem anterior.

3 - Se você estiver usando o RMAKE, informe a opção /XS 800 na linha de comando. Exemplo: RMAKE seuarq.RMK /XS 800

Abraços,

Enviado: 26 Abr 2005 21:33
por Mário Isa
Caros colegas,
como o próprio nome diz string space exhausted significa que o espaço utilizado para strings já não suporta mais dentro de uma mesma função ou procedure.
qdo vc define a:="MARIO" b:="CARLOS" c:='JOAO'.
Cada vez q faz isso vc utiliza um espaço q o clipper reserva para os strings a serem atribuídos a variáveis.
Se vc pudesse colocar esses strings num .dbf digamos:
Código Nome
a Mario
b Carlos
c Joao
e fizesse
while !eof()
a_var := codigo
store nome to &a_var
skip
end
o seu problema desapareceria porque vc não estaria mais utilizando strings dentro do .prg
Eu, particularmente, criei um arquivo chamado avisos.dbf seg estrut:
codigo mensagem
1 Arquivo não encontrado
2 Cliente não existe
3 Mercadoria não encontrada.

E assim, na minha função faço
if !dbseek(mercadoria)
tecle(3) // onde 3 é o código da msg dentro do arquivo avisos, entende?
loop
end

e assim, não utilizando tantos strings me livro do string space exhausted.

Abraços
:xau