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
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
function obtenerCuenta(numeroCuenta: Integer): Cuenta;
end;
var
cuentas: TList;
cuentaUsuarioPtr: Cuenta;
cuenta1, cuenta2, cuenta3: Cuenta;
implementation
constructor BaseDatosBanco.Create;
begin
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]);
end;
obtenerCuenta := nil;
end;
function BaseDatosBanco.autenticarUsuario(numeroCuentaUsuario, nipUsuario: Integer): Boolean;
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.