Ver Mensaje Individual
  #2  
Antiguo 31-05-2010
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Reputación: 16
LoPiTaL Va por buen camino
No sé si será el origen de tu error, pero creo que el error está en la función

Código Delphi [-]
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;

ya que aquí no pasa como en C, que cuando asignas el valor de la función, ésta termina. En Delphi, "obtenerCuenta" es una variable más (a mí me gusta sustituirla por "Result", que referencia lo mismo y sirve para todos los nombres de funciones) y no por darle un valor fuerza el fin de la función. Deberías añadir un Exit dentro del if cuando asignas el valor de obtenerCuenta.
No me he fijado en el resto de funciones, pero si haces cosas similares, es posible que también te haya sucedido.

De hecho, si en lugar de hacer "Compile" haces "Build" el compilador te generará un Warning diciéndote que el valor asignado a obtenerCuenta no se utiliza nunca. Es por esto, porque al final es sobreescrito por nil.

Otra cosa, por convenio, todos los objetos, clases, etc en Delphi empiezan con T. Por tanto tu clase deberías renombrarla a TCuenta (sólo es por convenio, no es obligatorio, pero así podrás diferenciar clases de interfaces que empiezan por I y de punteros a clases que empiezan por P).

Espero haberte ayudado,
Un saludo,
LoPiTaL
Responder Con Cita