No lo he analizado con mucho detalle, pero a primer golpe de vista encuentro un error. No se si será un error de mera transcripción:
Código:
// coloco el resultado de (SumDep - SumRet) en el edit
ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[]->AsFloat);
El
operador [] debe contener un indice:
Código:
// coloco el resultado de (SumDep - SumRet) en el edit
ESalTot->Text = FloatToStr(SumDep->Fields[0]->AsFloat - SumRet->Fields[0]->AsFloat);
En ocasiones el operador [] no tiene la misma sintaxis en delphi que en Builder. Para Builder, que es C++ ese operador referencia elementos de un array definido por un puntero. Esto es así mientras no esté sobrecargado. Como los objetos basados en VCL son todos punteros, ese operados no puede estar sobrecargado, para este tipo de objetos.
En ocasiones se debe utilizar sobre una variable llamada Items... que no aparece en delphi.
Para C++ el operador -> se utiliza cuando se llama desde un puntero a un objeto (como lo son los derivados de VCL) y el operador punto "." se utiliza cuando el objeto no es un puntero. Esta forma tan estricta está diseñada para evitar errores con punteros, de forma que obliga al programador a conocer, en todo momento, si está trabajando con punteros o con objetos propiamente dichos.
No se si me paso explicando obiedades, pero al preguntar por la "versatilidad" del delphi ma ha parecido oportuno.
Saludos.