Limite de tamanho da área de transferência

1

Existe algum limite do tamanho dos dados que podem ser copiados para a área de transferência? Estou usando o VB6 e preciso copiar blocos de dados para a área de transferência.

    
por BinaryMisfit 24.08.2009 / 06:31

3 respostas

1

Para adicionar algo à área de transferência, primeiro é necessário alocar memória para os dados e, em seguida, passar uma alça desse bloco de memória para a área de transferência. Como os aplicativos WIN32 estão limitados a 2 GB de memória, a quantidade de memória que você poderia alocar estaria relacionada ao tamanho da RAM que ainda está disponível no seu aplicativo. Com o parâmetro adicional / 3GB no boot.ini, você pode aumentar esse número um pouco. E se o seu sistema tiver menos de 2 GB de RAM, aumentar o tamanho do arquivo de troca também ajudará a enviar até 2 GB. Obviamente, o aplicativo cliente também precisa ser capaz de usar esses dados. Tentando abater 1500 MB de dados em um processo que tenha apenas 600 MB disponíveis não funcionará.

Mas se você realmente deseja enviar grandes blocos de dados, use arquivos temporários! Um truque seria usando uma interface COM. Crie sua própria classe COM primeiro, que precisa envolver os dados, onde os dados devem ser baseados em arquivos. Em seguida, crie um arquivo temporário e adicione seus dados a esse arquivo. Crie um objeto COM que vincula a esse arquivo temporário e envie o objeto COM para o cliente. O cliente também precisa ser capaz de manipular o objeto COM, mas pode usá-lo para extrair os dados dele novamente. Isso teoricamente forneceria espaço de memória ilimitado. Desvantagem: você precisa escrever uma classe COM e saber o que está fazendo.

Ou use outras técnicas para enviar os dados. Canais nomeados, processadores de mensagens, TCP / IP ... Existem muitas técnicas alternativas entre processos para enviar dados entre dois aplicativos.

Como você está usando o VB6, não vou começar a usar as opções .NET ou WIN64.

    
por 24.08.2009 / 13:48
0

Depende da quantidade de memória no sistema.

    
por 24.08.2009 / 06:37
0

A maioria dos dados é copiada como uma referência, em vez dos próprios dados, para que você possa copiar praticamente qualquer tamanho. No entanto, o texto é realmente copiado e, pelo que sei, a quantidade de dados é limitada a quanto o RAM está atualmente disponível. Lembre-se disso, se o vb6 puder lidar com isso, tenho certeza que a área de transferência pode lidar com isso.

    
por 24.08.2009 / 06:54