Ver Mensaje Individual
  #1  
Antiguo 16-03-2011
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 178
Reputación: 21
Efren2006 Va por buen camino
Uso de Componente TArtFormula

Me gustaria saber si por este Foro existe alguien que halla trabajador con este Componente
Código:
ArtFormula
el mismo sirve para hacer evaluaciones matematicas, Formulas y Funciones.

Tengo Problemas al Crear mis funciones propias para que el Componente las utilize,, pero me da error de Acceso de Violacion, no se si es un desconocimiento de la Parte de Objeto de Delphi o es que el componente simplemente no sirve para lo que necesito.

Explico Brevemente el proble acon el codigo

Código Delphi [-]

unit UBioDataPerX;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UbioGeneral, DB, Wwdatsrc, formula, IBCustomDataSet, IBQuery,UBioTipos, UGlobal, UBioBusPer, DateUtils, Math, UBioCxCTra;
type
  TDataPer = class(TForm)
   ..
   ..
  public
    { Public declarations }
    Global:ValoresGlobales;
    Variables:array of string;
    Valores:TCalcArray;
    FechaBase:TDateTime;
    Nombre:String;
    Procedure CreaVariables;
    Function  BusSaldoCxp(Numero:String;Tipo:String)ouble;
  end;
var
  DataPer: TDataPer;
implementation
{$R *.dfm}
 
procedure TDataPer.FormCreate(Sender: TObject);
begin
   CreaVariables;
   FechaBase:=Dateof(Now);
end;
 
Function TDataPer.BusSaldoCxp(Numero:String;Tipo:String)ouble;
Begin
  BusSalCxp.Close;
  BusSalCxp.ParamByName('CODCIA').AsString:=Global.Cia.Codigo;
  BusSalCxp.ParamByName('CODSUC').AsString:=Global.Sede.Codigo;
  BusSalCxp.ParamByName('NUMTRABA').AsString:=Numero;
  BusSalCxp.ParamByName('HASTA').AsDate:=FechaBase;
  BusSalCxp.ParamByName('TIPO').AsString:=Tipo;
  BusSalCxp.Open;
  BusSalCxp.First;
  Result:=BusSalCxpSALDO.AsFloat;
  BusSalCxp.Close;
End;
 
 
 
function SaldoCXP(var Calc : TFormulaCalc):TCalcItem;
var
   V1,V2,V3:String;
   Montoouble;
begin
   V1 := Calc.ItemS(1); // primer valor
   V2 := Calc.ItemS(0); // segundo valor
   Monto:=DataPer.BusSaldoCxp(V1,V2);
   SetN(result,Monto);
End;
 
 
 
 
Procedure TDataPer.CreaVariables;
begin
 PCalculo.CaseSensitive := False;
 setlength(Variables,100);
 setlength(Valores,100);
 // Variables Del Calculo
 Variables[0]:='CALCULA';
 Variables[1]:='XCANTIDAD';
 Variables[2]:='XMONTO';
 Variables[3]:='TOT_ASIGNACION';
 Variables[4]:='TOT_DEDUCCION';
 Variables[5]:='TOT_DEVENGADO';
 Variables[6]:='TOT_PRESTAMOS';
 Variables[7]:='TOT_ACUMPROM';
 Variables[8]:='TOT_ACUMISLR';
 // Funciones
 PCalculo.AddUserFunction('SaldoCXP',2,SaldoCxP,False);
end;



El error esta cuando mando a ejecutar la funcion SaldoCXP,, cuando en la
Código:
Funcion BusSaldoCxp
Se ejecuta; da el error de Acceso de Violacion,, ya probe incluso en la primera linea de esa funcion algo tan simple como Colocar Código Delphi [-]Nombre:='prueba'

me da el mismo error,, lo unico que funciono es utilizar un objeto Visual del formulario o una propiedad.

Saludos

Última edición por Neftali [Germán.Estévez] fecha: 16-03-2011 a las 11:09:13. Razón: Corregidos los TAG's
Responder Con Cita