Página 1 de 1

TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 04 Dez 2009 14:54
por sandata
Prezados, recorro novamente a este competente forum, no intuito de descobrir a possível causa de uma mensagem de erro TBROWSE/0: Limit exceeded, que ocorre às vezes na tentativa de abrir um arquivo DBF com o Tbrowse. No caso, isto ocorre com registros com larguras tipicamente maiores que 1 kB, podendo o tamanho limite variar conforme a máquina. A funcao Dbedit() manipula os mesmos arquivos sem problemas.

Estou utilizando o Clipper 5.2e com Rtlink e máquinas com Win XP e Vista. Será que alguém já se deparou com o problema e/ou tem albuma pista quanto a encontrar uma possível solução?

TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 04 Dez 2009 16:59
por Pablo César
Oi Jan,

Só não entendí quando você menciona: "com registros com larguras tipicamente maiores que 1 kB" você quis dizer campos em lugar de registros ? Seria o tamanho de tamanho exagerado ? Poderia listar a estrutura do seu BD, de ser possível disponibilizar um ou dois registros exemplos e seria também legal ver seu código fonte, talvez possua algum erro e daí não tem como saber.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 04 Dez 2009 19:22
por sandata
Olá! Em um dos casos, por exemplo, trata-se de um arquivo com 69 campos de tipos e tamanhos variados, totalizando 1160 bytes. Em outro caso (o problema ocorre em outra máquina), é um arquivo com 53 campos totalizando 2192 bytes. Antes de acrescentar os últimos campos, não havia problema nenhum. Não há, em nenhum deles, campos do tipo MEMO.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 04 Dez 2009 19:50
por alxsts
Ólá!

Imagino que isso seja um problema de falta de memória. Tenho quase certeza de que link-editando com Blinker vai resolver o problema.

Leia o artigo CA-CLIPPER 5.x Memory Management. Precioso...

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 05 Dez 2009 14:50
por sygecom
É como disse o colega acima, o Blinker as vez resolve problemas básicos. O uso do Blinker é indispensável com Clipper.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 05 Dez 2009 15:24
por Maligno
Uma dica ao colega: quando ocorrer erros pontuais e estranhos desse tipo, crie um sistema minimalista, a fim de isolar o ponto onde o erro ocorre. Remova todos os PRGs, incluindo apenas aquele onde o erro ocorre. Isso, claro, depois de refazer o que puder ser refeito: índices e se for o caso, recriando a estrutura dos bancos de dados envolvidos e importando os dados do DBF em suspeição. Erros em estruturas de DBFs pode ocasioar erros bem estranhos. Se depois desse artifício o erro não ocorrer, vá reinserindo os demais PRGs no projeto, até ele voltar a ser o que era.

O uso do BLinker é sempre o mais sugerido para o uso com o Clipper. Por questão de segurança e conforto. Mas ele não faz milagres. Pode resolver o problema? Pode ser que sim, pode ser que não. É pura especulação. Erros estranhos sempre nos levam à pratica da tentativa e erro. Como não custa tentar,... Tente o que julgar que seja mais fácil e rápido.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 05 Dez 2009 19:40
por sandata
Esclarecendo um pouco mais a questão, trata-se de um programa realmente pequeno, na verdade é só um substituto do DBU.EXE para manipular e preparar / alterar os arquivos de dados. No caso não se trata de arquivos corrompidos, visto que os mesmos operam normalmente nos sistemas a que pertencem. O problema só se manifesta na função Tbrowse.

Fiz alguns testes com o Blinker, com resultados um pouco melhores, com memória livre um tanto maior (memory()). Por exemplo, no Win XP e Rtlink abro normalmene um arquivo com 53 campos e largura de registro de 2192 B. Já outro com 32 campos e largura de 2464 B não abre, apresentando o erro. Com o Blinker o de 32 campos com 2464 B abre e outro de 41 campos com 2745 B apresenta o erro. No Vista os resultados são semelhantes, mas com limites menores: 57 campos com 967 B abre, 69 campos com 1160 não abre, isto com o Blinker.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 05 Dez 2009 20:04
por sygecom
se é um utilitario pequeno Por que não compila logo com Harbour isso !

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 05 Dez 2009 20:54
por Maligno
No caso não se trata de arquivos corrompidos, visto que os mesmos operam normalmente nos sistemas a que pertencem.
Pode parecer muito estranho, mas já vi caso de DBF corrompido de forma tão sutil que funcionava perfeitamente em um sistema e em outro, semelhante, apresentava erro. Por isso sugeri recriar o DBF. Agora, índice pode sempre ser refeito a qualquer tempo. Se é que já não recriou.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 06 Dez 2009 18:19
por sandata
Olá! Tentarei resumir: Com o Blinker, "brincando" com as opções, passei de cerca de 160 kB para 265 kB de memória livre [memory(0)]. Não fez diferença quanto ao limite de ocorrência do erro. Quanto a um erro de corrupção, os mesmos arquivos abrem numa máquina (XP) e não em outra (Vista), além de funcioanr sem problemas no sistema prórprio. Na ferramenta citada o arquivo é aberto inicialmente sem INDEX, assim esta influência está a meu ver descartada. E, não se trata de um único arquivo.

Quanto ao Harbour, é claro que já me ocorreu, Mas, o problema é que há muitas funções principalmente do Clipper Tools que não possuem contrapartida no Harbour (ou no xHarbour). Estas necessitariam de um profundo retrabalho, visto que utilizo uma rede bastante complexa de funções de biblioteca construída ao longo dos últimos vinte anos.

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 07 Dez 2009 09:46
por ANDRIL
A pouco tempo atrás, passei pelo mesmo problema. Meu sistema funcionava normalmente, fiz algumas implementações e do nada começou a dar este erro, porem, nao uso TBROWSE e sim o DBEDIT.

O erro acontecia quando chamava um DBEDIT dentro do outro, até achei que era problema de limite de pilha, memoria etc, mais já usava o BLINKER em modo PROTEGIDO.

Depois de muito, muito mesmo vasculhar acabei descobrindo o que ocasionava o erro, e não tinha nada, mais nada teoricamente ligada ao DBEDIT.

Usava neste mesmo sistema o WAPI.LIB do nosso colega MALIGNO nunca havia dado problema algum. Para contornar o problema visto que necessito da WAPI parei de usar a LIB e chamei o EXE direto, O PROBLEMA ACABOU.

Alem das alterações que tinha feito no sistema (nada de anormal), cito que houve uma queda de energia no micro onde programo e suspeito que tenha sido gravado algo estranho nos fontes que o compilador nao detecta. Isso ja tinha acontecido antes, dentro de um PRG achei uma linha contendo:

Código: Selecionar todos

  endif   DDDDDDDD
O estranho é compilava normalmente sem acusar erro algum, achei isso meio por acaso.

Resumindo, onde parece ser o erro, pode não ter nada haver. Sei que é dificil criar um sistema somente com a parte do erro para testar, pois há as depedencias (funcoes, variaveis e etc) que não ajudam muito então vasculhe tudo.

Desejo-lhe sorte!
Abraços

Re: TBROWSE/0: Limit exceeded - Alguma sugestão?

Enviado: 09 Dez 2009 15:04
por sandata
Agradeço o esforço de quem se dispôs a contribuir com a solução da questão abordada. Assim que tiver um "tempinho" sobrando, tentarei aprofundar mais o exame do problema, por minha conta com base nas idéias acima publicadas.