delphi un algoritmo
//Nota: el conjunto de datos representa la recopilación de datos que desea operar
//caché es la suma de los valores que desea restar del registro
procedimiento doSubtraction();
var
caché: entero; recValue: entero;
comenzar
caché := 50;
//Mueve el registro de datos al primero
dataset.First;
//Comienza el bucle hasta el final del registro
repetir
//Salir si el número de registros del conjunto de datos es 0, o la suma de los valores a restar se ha agotado
si (conjunto de datos .RecordCount = 0) o (cache = 0) luego romper;
recValue:= dataset.FieldByName('record').AsInteger //Obtener datos en la colección de datos
// Realizar condicionalmente la operación de resta. Este es el núcleo de este problema
if recValue gt; cache then
comenzar
{ Si el valor del registro actual es mayor. que la suma de los valores a restar, luego déjelo restar. El valor a restar es 0
y el valor registrado actual se usa para restar la suma de los valores a restar
}
recValue: = recValue - caché; caché: = 0;
fin
más
if recvalue = cache entonces
comenzar
{ Este paso es general. Puede fusionarse con el paso anterior/siguiente, pero por el bien de un buen estilo de programación, debe conservarse
Si el valor del registro actual es igual a la suma de los valores a restar, establezca los valores de ambos lados en 0}
cache := 0 recValue :; = 0;
end
else
start
{ Si el registro actual Si el valor es menor que la suma de los valores a restar, el valor actual es 0
Y use la suma de los valores a restar para restar el valor del registro actual}
caché: = caché - recValue ; recValue: = 0;
end;
//Refleja todos los cambios en la base de datos
dataset.Edit; dataset.FieldByName('record').AsInteger:= recValue;
dataset.Post;
dataset.Next; //Cliché. , "morirá (bucle) dentro"
hasta que dataset.eof; //Determine si el registro se ha movido al final
end;