[Lazarus-es] buscar valor en array de record
José Mejuto
joshyfun en gmail.com
Lun Mayo 24 22:48:41 CEST 2010
Hello Paola,
Monday, May 24, 2010, 9:19:54 PM, you wrote:
PB> Hola a todos..
PB> Tengo datos cargados en un stringlist (código art, desc, cantidad). En
PB> ese stringlist pueden haber códigos de artócilos repetidos..
PB> Lo que quiero hacer es juntar todos los códigos repetidos, actualizando
PB> el valor de "cant"
PB> Mi idea es ir recorriendo el stringlist e ir cargando los renglones en
PB> un array (c/elemento es un tipo record), pero antes de cargar nada,
PB> quiero buscar en ese array por si existe el codigo. En caso de que
PB> exista, modificar la cantidad, sino, agregar un nuevo valor.
PB> En otros lenguajes tengo funciones de búsqueda en arrays (como este, que
PB> sería como uno multidimensional), pero acá se me está complicando :)
PB> QUizás me sugieran algunas otras funciones que desconozco
A lo "rápido" y en pseudo código:
StringList.Sort;
j:=0;
while j<StringList.Count-1 do begin
k:=j;
while k<StringList.Count-2 do begin
Clave1:=ExtraeClave(StringList[k]);
Clave2:=ExtraeClave(StringList[k+1]);
if Clave1=Clave2 then begin
ActualizaCantidad(StringList[k],Cantidad(StringList[k])+Cantidad(StringList[k+1]));
inc(k);
end else begin
Break;
end;
end;
end;
Lo más fácil es que extraigas todos los datos (después del sort) a un
array dinámico de un record con todos los campos, así te evitas las
funciones extraeClave, ActualizaCantidad,....
--
Best regards,
José
More information about the Lazarus-es
mailing list