FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Excepcion EAccesViolation
Hola,
Cree una clase TFechaHora unit CFechaHora; interface uses Windows, Messages, Forms, Dialogs, SysUtils, StdCtrls; type TFechaHora = class // private { Private declarations } dia: integer; mes: integer; anio: integer; hora: string; // public { Public declarations } constructor Create; function getDia():integer; function getMes():integer; function getMesCadena():string; function getAnio():integer; function getFechaCad():string; function getHora():string; procedure setHoy(); procedure setFecha (d, m, a: integer); procedure setHora(h: string); end; var FechaHora: TFechaHora; implementation uses tablas1, ModUtilitarios; constructor TFechaHora.Create; begin dia:=0; mes:=0; anio:=0; end; function TFechaHora.getDia():integer; begin result:=FechaHora.dia; end; function TFechaHora.getMes():integer; begin result:=FechaHora.mes; end; unction TFechaHora.getMesCadena():string; var var_mes: integer; var_cadena: string; begin var_mes:= FechaHora.getMes(); case var_Mes of 1: var_cadena:='Enero'; 2: var_cadena:='Febrero'; 3: var_cadena:='Marzo'; 4: var_cadena:='Abril'; 5: var_cadena:='Mayo'; 6: var_cadena:='Junio'; 7: var_cadena:='Julio'; 8: var_cadena:='Agosto'; 9: var_cadena:='Septiembre'; 10: var_cadena:='Octubre'; 11: var_cadena:='Noviembre'; 12: var_cadena:='Diciembre'; end; result:= var_cadena; end; function TFechaHora.getAnio():integer; begin getAnio:=FechaHora.anio; end; function TFechaHora.getFechaCad():string; var var_dia, var_anio, var_cad: string; begin str(FechaHora.getDia(),var_dia); str(FechaHora.getAnio(),var_anio); var_cad:= var_dia+FechaHora.getMesCadena()+var_anio; showmessage(var_cad); result:= var_cad; end; function TFechaHora.getHora():string; begin getHora:=FechaHora.hora; end; procedure TFechaHora.setHoy(); begin //Completar end; procedure TFechaHora.setFecha (d, m, a: integer); var var_d, var_m, var_a: string; begin var_d:= IntToStr(d); var_m:= IntToStr(m); var_a:= IntToStr(a); showmessage('en el CONSTRUCTOR'+var_d+' '+var_m+' '+var_a); dia:=d; mes:=m; anio:=a; end; procedure TFechaHora.setHora(h: string); begin hora:=h; end; end. Por el momento hago uso de esta clase de la siguiente manera: procedure TSERrecepcion.but_registrarClick(Sender: TObject); var var_hoy: string; fecha: TFechaHora; begin fecha.Create; var_hoy:=fecha.getFechaCad(); // fecha.setFecha(28,10,2003); // FechaHora.setFecha(28,10,2003); fecha.Free; Showmessage ('Fecha Actual'+var_hoy); end; Y al momento de hacer correr me sale un error de EAccessViolation, realice un trace, al parecer el constructor se ejecuta bien (asume los valores correspondientes), pero al tratar de recuperar los valores de los atributos (getDia(), getMes(), getAnio()) salen el error. Trate de llamar a otro método (setFecha) y me vuelve a salir el error al asignar valores a los atributos. Los atributos antes eran privados (pense que ese era el error), quite la instruccion y tengo el mismo problema, también probé poniendo: Self.dia:=d; y nada. ¿¿¿Alguna sugerencia??? |
|
|
|