Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, tudo bem ?
Será que alguém poderia me ajudar com um erro quando teu termino o programa na rotina de array dinamico ?
É assim, tenho um programa que faz um random de X valores. Estes valores eu jogo em um ListBox e depois armazeno em um array dinamico:
SetLength(vArray,QNT);
for X := 0 to QNT do
begin
Y := RandomRange(N, N2);
ListBox1.Items.Add(IntToStr(Y));
vArray[x] := Y;
end;
Até aqui o programa tá funcionando, mas quando eu uso o método Quick Sort pra ordenar o vetor com muitas posições, dá esse erro quando eu saio do programa:
Exception EInvalidPointer in module Project1.dpr
Invalid Pointer Operation
Esse erro ocorre quando eu uso o método Quick Sort com passagem de parametro:
pQuickSort(0,QNT) // 0 - posição inicial
//QNT - tamanho do meu vetor
Abaixo minha rotina QuickSort:
procedure TForm1.pQuickSort(esquerdo, direito: integer);
var
e,d,aux,chave:integer;
begin
e:=esquerdo;
d:=direito;
chave:= varray[(esquerdo+direito)div 2];
repeat
while(varray[e]<chave)do
e:=e+1;
while(varray[d]>chave)do
d:=d-1;
if(e<=d) then
begin
aux:= varray[e];
varray[e]:=varray[d];
varray[d]:=aux;
inc(e);
dec(d);
end;
until(e>d);
if(esquerdo<d)then
pQuickSort(esquerdo,d);
if (e<direito)then
pQuickSort(e,direito);
end;
Alguém por favor tem alguma idéia do que seja ? Eu iniciei o vetor com a posição 0 por que li um material que diz que o vetor dinamico inicia em 0.
Gilcimar
Carregando comentários...