Ver Mensaje Individual
  #12  
Antiguo 20-01-2016
Camilo Camilo is offline
Miembro
 
Registrado: jun 2007
Posts: 147
Reputación: 17
Camilo Va por buen camino
Amigos del foro:
Solucionado (bueno eso creo). Por fin dejo de botar error en las otras maquinas (aunque solo probé en dos). Que hice??? seguí sus consejos y las cosas ahora funcionan bien, ademas el misterio de las maquinas embrujadas ya me va a dejar dormir tranquilo.
solución:
1) Cambie todos los tipos de datos de Extended a Currency. Ademas revise minuciosamente el código y reemplace los extended que correspondían tanto por Currency (los valores en moneda) como a Integer los valores como cantidades por ejemplo.
2) inicialice todas las variables. No estaba iniciando las variables de hecho las incluia en el "var" pero no las ponia a 0. (Aporte de AzidRain)

Como ejemplo de los procedimientos que cambie pongo uno solo a fin de no ocupar mucho espacio y como ejemplo de la socucion que le dimos a este lio.

Código Delphi [-]
Procedure TFVenta.SumaCantidad;
var
Suma, a, d: Currency;
c, k: Integer;
begin
a:= 0;
c:= 0;
d:=0;
  a := StrToCurrDef(StringGrid1.Cells[5, StringGrid1.Row],0); // Precio
  c := StrToIntDef(Edit8.Text,0); //Cantidad
  d:=  (a*c); // Precio x Cantidad

StringGrid1.Cells[4, StringGrid1.Row]:=  Edit8.Text;  //CANTIDAD
StringGrid1.Cells[6, StringGrid1.Row]:=  FormatCurr('$ #0,.00',d);
StringGrid1.Cells[8, StringGrid1.Row]:= CurrToStr(d);

Suma := 0;
  StringGrid1.Cells[7, StringGrid1.Row]:= StringGrid1.Cells[1, StringGrid1.Row];
  for k := 0 to StringGrid1.RowCount - 1 do
    if k <= StringGrid1.RowCount - 1 then
      Suma := Suma + StrToCurrDef(StringGrid1.Cells[8, k + 1],0);
      Edit7.Text:=  FormatCurr('$ #0,.00', Suma);
      Edit5.Text:=  CurrToStr(Suma);
end;

En cuanto a los de las maquinas embrujadas; creo que la intuición de un amigo llamado jose cuando plantea lo siguiente es valida y oportuna por demás

Cita:
Y en cuanto al error que te da en algunas máquinas podría proceder de la cadena de conversión a texto que te he comentado antes ó del viejo error de punto flotante que tenían los Pentium 4 y algún otro procesador. Dentro de Delphi hay una opción en el compilador para evitarlo. De todas formas si usas variables "currency"(son enteros) no tendría que darte el problema.
Asi las cosas, ahora funcina bien en todas partes. Un agradecimiento a AgustinOrtu, Casimiro Notevi, Al González, AzidRain y todo el foro que siempre tiene para mi una voz de aliento y sus aportes desinteresados y efectivos por demas.
Responder Con Cita