PDA

Ver la Versión Completa : redimension de array se pierde por bucle !!!!!


david_uh
31-07-2007, 00:05:30
tengo el siguiente codigo

i := 1;
while not ZListas.Eof do //
begin
cbo_Cliente.AddItem(ZListas['cliente'],
pointer(ZListas.FieldByName('id').AsInteger));
SetLength(arrDirecciones,i);
arrDirecciones[i-1] := ZListas.FieldByName('Direccion').AsString;
Inc(i);
ZListas.Next;
end;

for i := 1 to 1000 do
begin
Items.Add( IntToStr(i) );
arrFact[i] := i;
end;

tengo declarado como global el array arrDirecciones en el primer bucle ademas de asignar a un combo los nombres de los clientes guardoen el array sus direcciones

en el otro bucle for trabajo con elarray arrFact estático pero cuando este se ejecuta este for pasa que el primer array se queda sin elementos !!!!!!!! osea como a cero nulo como si no lo hubiese redimensionado.

alguna vez te paso esto? que estoy haciendo mal??? estoyenloqueciendo???

Enan0
31-07-2007, 12:37:32
Hola David!! a ver si te puedo ayudar un poco.
La verdad que no veo porque te hace pero creo saber como optimizar un poquito tu codigo y talvez por aca venga el problema.

Lo que veo es que mientras que el la lista tenga datos siempre redimencionas el Array, te recomiendo esto!

antes del while


//estas Redimensionando el Array por unica vez
If not zlistas.isempty then
SetLength(arrDirecciones,zlistas.RecodCount);
i:=0;
While .......
....
....
arrDirecciones[i]:= .......
Inc(i);
Zlistas.next;
.....



Por ultimo Inmagino que el ArrDirecciones lo utilizas en algun otro lado.
estas seguro que no lo estas Limpiando, o Re direccionando en alguna otra llamada?

Saludos y suerte

david_uh
31-07-2007, 17:39:28
si lo he hecho asi, lo que sucede es que en el combo de clientes muestro una lista de cada clientey como cad entrada crea un objeto en ese objeto almaceno su ID, ahora se me pide mostrar las direciciones de cada cliente al momento de seleccionar un cliente de la lista entonces para ello uso el array dinamico, lo he solucionado asignando esta direccion ya no a el aray sino a otra lista (listbox). la verdad no se por que pasa esto en ningun lugar estoy modificando las dimensiones del array, ya que el codigo se ejecuta enel create del form.

De todas formas gracias por tu respuesta