Ver Mensaje Individual
  #1  
Antiguo 31-05-2010
rodrigo881215 rodrigo881215 is offline
Registrado
 
Registrado: may 2010
Posts: 2
Reputación: 0
rodrigo881215 Va por buen camino
Exclamation problemas al crear objetos en delphi

Hola que tal, soy nuevo en esto de programar con delphi y me dejaron un proyecto de de cajero automatico. El trabajo consiste en pasar un cajero hecho en builder a delphi, el problema es que me marca errores en tiempo de ejecucion, marca un Access Violation, pienso que el problema puede ser que no estoy creando bien los objetos de mi clases o que no estan bien declarados, tambien en builder uso la clase vector para almacenar datos no se si alla una parecida en delphi, la que encontre es TList, pero haber si me recomienda otra. Aqui les anexo parte del codigo que creo que es el problema. Espera me puedan ayudar y me respondan pronto. Gracias.

Código Delphi [-]
unit UBaseDatosBanco;

interface

uses
   Classes, UCuenta, Forms;

type
   //cuentas = TList;
   BaseDatosBanco = class (TObject)
   public
      constructor Create;
      function autenticarUsuario(numeroCuentaUsuario, nipUsuario: Integer): Boolean;
      function obtenerSaldoDisponible(numeroCuentaUsuario: Integer): Double;
      function obtenerSaldoTotal(numeroCuentaUsuario: Integer): Double;
      procedure abonar(numeroCuentaUsuario: Integer; monto: Double);
      procedure cargar(numeroCuentaUsuario: Integer; monto: Double);
   private
      //cuentas: TList;
      function obtenerCuenta(numeroCuenta: Integer): Cuenta;
   end;

var
   cuentas: TList;
   cuentaUsuarioPtr: Cuenta;
   cuenta1, cuenta2, cuenta3: Cuenta;

implementation

constructor BaseDatosBanco.Create;
begin
   //inherited Create;
   cuentas := TList.Create;
   cuenta1 := Cuenta.Create(12345, 54321, 1000.0, 1200.0);
   cuenta2 := Cuenta.Create(98765, 56789, 200.0, 200.0);
   cuenta3 := Cuenta.Create(69, 96, 1800.0, 2000.0);
   cuentas.Add(cuenta1);
   cuentas.Add(cuenta2);
   cuentas.Add(cuenta3);
end;

function BaseDatosBanco.obtenerCuenta(numeroCuenta: Integer): Cuenta;
var
   i: Integer;
begin
   for i := 0 to 2 do
   begin
      if ((Cuenta(cuentas.Items[i]).obtenerNumeroCuenta) = numeroCuenta) then
         obtenerCuenta := Cuenta(cuentas.Items[i]);
         //Application.MessageBox(Cuenta(cuentas.Items[i]), "", 0);
   end;
   obtenerCuenta := nil;
end;

function BaseDatosBanco.autenticarUsuario(numeroCuentaUsuario, nipUsuario: Integer): Boolean;
{var
 cuentaUsuarioPtr: Cuenta;}
begin
   cuentaUsuarioPtr := obtenerCuenta(numeroCuentaUsuario);
   if (cuentaUsuarioPtr <> nil) then autenticarUsuario := cuentaUsuarioPtr.validarNip(nipUsuario)
   else
      autenticarUsuario := false
end;

function BaseDatosBanco.obtenerSaldoDisponible(numeroCuentaUsuario: Integer): Double;
begin;
   cuentaUsuarioPtr := obtenerCuenta(numeroCuentaUsuario);
   obtenerSaldoDisponible := cuentaUsuarioPtr.obtenerSaldoDisponible;
end;

function BaseDatosBanco.obtenerSaldoTotal(numeroCuentaUsuario: Integer): Double;
begin
   cuentaUsuarioPtr := obtenerCuenta(numeroCuentaUsuario);
   obtenerSaldoTotal := cuentaUsuarioPtr.obtenerSaldoTotal;
end;

procedure BaseDatosBanco.abonar(numeroCuentaUsuario: Integer; monto: Double);
begin
   cuentaUsuarioPtr := obtenerCuenta(numeroCuentaUsuario);
   cuentaUsuarioPtr.abonar(monto);
end;

procedure BaseDatosBanco.cargar(numeroCuentaUsuario: Integer; monto: Double);
begin
   cuentaUsuarioPtr := obtenerCuenta(numeroCuentaUsuario);
   cuentaUsuarioPtr.cargar(monto);
end;

end.

Última edición por rgstuamigo fecha: 31-05-2010 a las 23:57:52. Razón: Estética en el código
Responder Con Cita