lunes 8 de enero de 2007


Me permito publicar el siguiente código el cual muestra como puede manejarse un StringGrid junto con variables String, double e Int. El programa es para calcular volumenes de producción de madera en una Aserradero, posteriormente esos resultados son almacenados en una base de datos (claro que eso no lo muestro en esta ocasión) y permite introducir las medidas comerciales utilizas en México (en pulgadas).

Claro que bien puede escribirse 1.25 en lugar de 5/4, solo que la gente esta acostumbrada a usar fracciones y es más dificil hacerles cambiar de sistema que adaptarse a ellos. Espero les sea de utilidad y publiquen sus comentarios.

String cadena, cadena2, a2, b2, c2, aux, aux2, x2, y2, z2;
int i, j, longitud, longitud2, n;
double a, b, c, x, y, z, grueso, ancho, largo, volumen,suma=0;

for(i=1;i<=31;i++) { for(j=0;j<=31;j++) { cadena=StringGrid2->Cells[0][i];
aux=cadena;
longitud=cadena.Length();

if((longitud==1) (longitud==2))
{
a2=cadena.SubString(1,longitud);
a=a2.ToDouble();
grueso=a;
}
else if(longitud==3)
{
a2=cadena.SubString(1,longitud);
a=cadena.Delete(2,longitud).ToDouble();
b2=aux.SubString(1,longitud);
b=aux.Delete(1,2).ToDouble();
grueso=a/b;
}
else if(longitud==5)
{
a2=cadena.SubString(1,longitud);
b2=cadena.SubString(1,longitud);
b2=b2.Delete(1,2);
c2=cadena.SubString(1,longitud);

if(a2.IsEmpty()==true)
a=0;
else a=a2.Delete(2,longitud).ToDouble();
if(b2.IsEmpty()==true)
b=0;
else b=b2.Delete(2,2).ToDouble();
if(c2.IsEmpty()==true)
c=1;
else c=cadena.Delete(1,longitud-1).ToDouble();
grueso=(b/c)+a;
}
else if(longitud==6)
{
a2=cadena.SubString(1,longitud);
b2=cadena.SubString(1,longitud);
b2=b2.Delete(1,3);
c2=cadena.SubString(1,longitud);

if(a2.IsEmpty()==true)
a=0;
else a=a2.Delete(3,longitud).ToDouble();
if(b2.IsEmpty()==true)
b=0;
else b=b2.Delete(2,2).ToDouble();
if(c2.IsEmpty()==true)
c=1;
else c=cadena.Delete(1,longitud-1).ToDouble();
grueso=(b/c)+a;
}

cadena2=StringGrid2->Cells[1][i];
aux2=cadena2;
longitud2=cadena2.Length();

if((longitud2==1) (longitud2==2))
{
x2=cadena2.SubString(1,longitud2);
x=x2.ToDouble();
ancho=x;
}
else if(longitud2==3)
{
x2=cadena2.SubString(1,longitud2);
x=cadena2.Delete(2,longitud2).ToDouble();
y2=aux2.SubString(1,longitud2);
y=aux2.Delete(1,2).ToDouble();
ancho=x/y;
}
else if(longitud2==5)
{
x2=cadena2.SubString(1,longitud2);
y2=cadena2.SubString(1,longitud2);
y2=y2.Delete(1,2);
z2=cadena2.SubString(1,longitud2);

if(x2.IsEmpty()==true)
x=0;
else x=x2.Delete(2,longitud2).ToDouble();
if(y2.IsEmpty()==true)
y=0;
else y=y2.Delete(2,2).ToDouble();
if(z2.IsEmpty()==true)
z=1;
else z=cadena2.Delete(1,longitud2-1).ToDouble();
//grueso=(b/c)+a;
ancho=(y/z)+x;
}
else if(longitud2==6)
{
x2=cadena2.SubString(1,longitud2);
y2=cadena2.SubString(1,longitud2);
y2=y2.Delete(1,3);
z2=cadena2.SubString(1,longitud2);

if(x2.IsEmpty()==true)
x=0;
else x=x2.Delete(3,longitud2).ToDouble();
if(y2.IsEmpty()==true)
y=0;
else y=y2.Delete(2,2).ToDouble();
if(z2.IsEmpty()==true)
z=1;
else z=cadena2.Delete(1,longitud2-1).ToDouble();
// grueso=(b/c)+a;
ancho=(y/z)+x;
}
}
/*if(StringGrid2->Cells[1][i].IsEmpty()==true)
ancho=0;
else ancho=StringGrid2->Cells[1][i].ToDouble();*/
if(StringGrid2->Cells[2][i].IsEmpty()==true)
largo=0;
else largo=StringGrid2->Cells[2][i].ToDouble();
if(StringGrid2->Cells[3][i].IsEmpty()==true)
n=0;
else n=StringGrid2->Cells[3][i].ToDouble();

volumen=((grueso*ancho*largo)/12)*n;
suma+=volumen;
if(volumen==0)
StringGrid2->Cells[4][i]="";
else StringGrid2->Cells[4][i]=FormatFloat("0.000",volumen);
StringGrid2->Cells[5][1]=FormatFloat("0.000",suma);
StringGrid2->Cells[5][i+1]="";
//Edit3->Text=FormatFloat("0.000",suma);
StringGrid4->Cells[1][3]=FormatFloat("0.000",suma);
}

0 comentarios: