Pílula de Visual Basic 6 -  Limites de um projeto VB6


Para tudo na vida existe um limite, não existem recursos ilimitados, e, ao criar uma aplicação no Visual Basic 6 existem limites que quando ultrapassados fazem com que a sua aplicação não se comporte como o esperado apresentado erros de estouro de pilha e/ou memória.

Mas quais são esses limites ???

Vamos ao eles diretamente do Help da Microsoft ...

1- VB 6 - Limites de Projeto

Um simples projeto pode conter até 32.000 identificadores (qualquer palavra não reservada), os quais incluem, mas não estão limitados a, formulários, controles,  módulos, variáveis , constantes , procedures , functions e objetos. O número atual de identificadores esta limitado a memória disponível.

O nome dos variáveis não podem ser  maiores que 255 caracteres, e os nomes dos formulário, controles, módulos e classes não podem ser maiores que 40 caracteres. Não existem limites para o número atual de objetos distintos em um projeto.

2- VB 6 - Limites de controles

Cada controle não gráfico (todos os controles, exceto os controles, shape, line, image e label) usa uma janela e cada janela usa os recursos do sistema, limitando o número total de janelas que podem existir em um momento. O limite exato depende dos recursos disponíveis do sistema e do tipo de controle usado.

Para reduzir o consumo dos recursos do sistema utilize os controles shape, line, label e image ao invés do controle picturebox para criar ou exibir gráficos.

O número máximo de controle permitidos em um único formulário depende do tipo de controle usado e dos recursos disponíveis do sistema. Porém, existe um limite fixado de 254 nomes de controles por formulário. A dica é que um control array é contado somente uma vez pois todos os controles no array compartilham o nome único do controle. Então procure usar control array no seu projeto para escapar dessa limitação.

O limite para os índices de um control array é de zero até 32767 em todas as versões.

Se você aninhar controles no topo de outros controles o VB aceita até 25 níveis de controles aninhados.

Limites para controles Particulares

A tabela a seguir lista as limitações das propriedades que se aplicam a alguns controles específicos no VB :

Propriedade Se aplica a Limitação
List and ListCount List box and combo box controls Número máximo de itens é 32 K; o limte no tamanho de cada item é 1024 bytes (1 K).
Text Text box control Limitado até 64K.
Caption Label control Limitado até 1024 bytes.
  Command button, check box, frame, and option button controls Limitado até 255 caracteres. Qualquer caption acima deste limite será truncada. Captions em controles customizados estão limitados a 32K.
  Menu control Limitado a 235 caracteres;
Tag All controls Limitado a somente memória disponível;
Name All controls Limitado a 40 caracteres;

3- VB 6 - Limites de código

A quantidade de código que pode ser carregado em um formulário, classe ou módulo padrão esta limitado a 65.534 linhas.

Um única linha de código consiste de até 1023 byes.

Até 256 espaços em brancos pode preceder o texto atual de uma linha única.

O número máximo de linha de caracteres de continuação de linha ( _ ) permitidos é 24 em uma única linha lógica.

Procedures, Types e Variáveis

O Visual Basic utiliza tabelas para armazenar os nomes dos identificadores (variáveis, constantes, procedures, etc) no seu código. Cada tabela esta limitada a 64 Kb.

Cada formulário e módulo de código usa uma tabela que contém uma estrutura descrevendo um ponto de entrada para a DLL. Cada estrutura usa uns 40 bytes, com o total restrito a 64 K, resultando rigorosamente em 1500 declarações permitidas por módulo.

Tabela do Nome do Projeto

Uma aplicação VB usa uma única tabela que contém todos os nomes. Eles incluem:

O nome da tabela do projeto não tem limites de tamanho , mas esta limitado a um total de 32 k de entradas únicas case-sensitives. Se o limite for alcançado reutilize identificadores privados em módulos diferentes para limitar a entrada única a 32k;

Cada referência a um identificador em um módulo diferente cria uma entrada na Tabela Import. Cada entrada tem um mínio de 24 bytes e vai até 64 k, resultando em 2000 referências por módulo;

A tabela de entrada de módulos (Module-Entries) aceita até 125 bytes por módulo com um total de 64 K resultando em aproximadamente em 400 módulos por projeto.

4- VB 6 - Limites de dados

Limitações que se aplicam a variáveis :

Form, Standard,  Class Module Data

O segmento dados ( os dados definidos em uma seção Declarations) de um módulo VBA de qualquer formulário ou módulo no VB pode ser de até 64 K. Este segmento de dados contém os seguintes dados:

Procedimentos , Tipos e Variáveis

Se um procedimento ou módulo exceder 64 K no limite de código, o VB gera um erro em tempo de compilação;

Se você definir um procedimento que possuir mais de 64 K de variáveis locais você vai receber o erro:  "Too many local nonstatic variables."

Se você encontrar esse erro , você pode evitá-lo quebrando procedimentos grandes em menores ou movendo as declarações a nível de módulo em outro módulo;

Um array declarado como uma variável não contribui para o tamanho inteiro do array, somente o descritor do array é contato até o limite de 64 K.

Tipos definidos pelo usuário

Nenhuma variável do tipo definida pelo usuário (user definide type) pode exceder 64 K, embora a soma de variáveis strings em um tipo definido pelo usuário possa exceder 64 K (variáveis strings ocupam somente 4 bytes em um user-defined type)

Se o seu projeto estiver apresentando um dos erros aqui indicados ou o VB não é a ferramenta mais indicada a ser usada ou você precisa redimensionar o seu projeto adequando a essas limitações.

Se a situação estiver muito complicada você pode tentar usar a ferramenta - Compuware NuMega DevPartner - para auxiliá-lo nessa tarefa.

Boa Sorte...

Eu sei é apenas VB, mas eu gosto...

Referências:


José Carlos Macoratti