Variavel Array of Integer
Atualmente estava usando uma variavel array com elementos de 0 até 80000000 como integer:
variavel:array[0..80000000] to integer;
Para guarda 80000000 elementos, mais agora esse numero aumentou para 2147483647, tentei subistituir os 800000000 mais esta dando um erro:
Data type too large: exceeds 2 GB
Com ess erro percebi que o numero adicionado é superior ao suportado, tentei trocar integer para longint e deu o mesmo erro, existe alguma outra sulução?
variavel:array[0..80000000] to integer;
Para guarda 80000000 elementos, mais agora esse numero aumentou para 2147483647, tentei subistituir os 800000000 mais esta dando um erro:
Data type too large: exceeds 2 GB
Com ess erro percebi que o numero adicionado é superior ao suportado, tentei trocar integer para longint e deu o mesmo erro, existe alguma outra sulução?
Richard Alexander
Curtidas 0
Respostas
Richard Alexander
06/11/2011
Problema Resolvido.
Na verdade o valor era 2147483648, subtrai 1 pra fica 2147483647 e ele aceitou, fiz uma pesquisada e vi que o longint aceita valores até 2147483647.
Na verdade o valor era 2147483648, subtrai 1 pra fica 2147483647 e ele aceitou, fiz uma pesquisada e vi que o longint aceita valores até 2147483647.
GOSTEI 0
Richard Alexander
06/11/2011
Eu me enganei, continua dando o mesmo erro. :s
GOSTEI 0
Emerson Nascimento
06/11/2011
o problema não é tipo que está sendo usado - vai dar o mesmo erro com string, byte, integer - e sim o tamanho do próprio array.
porque você precisa de um vetor com tantos elementos ?
porque você precisa de um vetor com tantos elementos ?
GOSTEI 0
Richard Alexander
06/11/2011
Estou mechendo com memoria, cada elemento array[0] por exemplo guardara um valor integer, acontece que são muito elementos e realmente queria uma solução.
GOSTEI 0
Carlos Júnior
06/11/2011
Amigo, como disse o Emerson, acredito que não seja o tipo usado, mas mesmo assim, tenta criar um array de Cardinal que aceita até 4294967295.
Até+
Até+
GOSTEI 0
Carlos Júnior
06/11/2011
Amigo, Testei com Cardinal, também não vai dar certo:
Achei esse exemplo:
type
EnormousArray = array [0..MaxLongint DIV 8] OF Longint;
DataPoints = ^DataPointDesc;
DataPointDesc = array [1..10000] of Extended;
BigRecord = record
points : DataPoints;
end;
var
data : array [0..500000] OF BigRecord;
Acredito que se você trabalhar com Record você vai conseguir fazer o que quer...
Espero ter ajudado.
Achei esse exemplo:
type
EnormousArray = array [0..MaxLongint DIV 8] OF Longint;
DataPoints = ^DataPointDesc;
DataPointDesc = array [1..10000] of Extended;
BigRecord = record
points : DataPoints;
end;
var
data : array [0..500000] OF BigRecord;
Acredito que se você trabalhar com Record você vai conseguir fazer o que quer...
Espero ter ajudado.
GOSTEI 0
Richard Alexander
06/11/2011
Testei com tudo, nada da certo kkk
Bom darei uma olhada nesse exemplo se der certo irei responder, senão vo te que quebrar em partes o numero.
Bom darei uma olhada nesse exemplo se der certo irei responder, senão vo te que quebrar em partes o numero.
GOSTEI 0
Emerson Nascimento
06/11/2011
Estou mechendo com memoria, cada elemento array[0] por exemplo guardara um valor integer, acontece que são muito elementos e realmente queria uma solução.
mais de 2 BILHOES
GOSTEI 0
Emerson Nascimento
06/11/2011
Estou mechendo com memoria, cada elemento array[0] por exemplo guardara um valor integer, acontece que são muito elementos e realmente queria uma solução.
mais de 2 BILHOES de elementos ?
GOSTEI 0
Richard Alexander
06/11/2011
0 até 2.147.483.647, é o array ultrapasa 2 bilhões, mais alguma pergunta? meu scan de memoria scanea address por address, não sei usar a função Virtualqueryex.
GOSTEI 0