Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Pero que significa este error? (https://www.clubdelphi.com/foros/showthread.php?t=217)

nesetru 08-05-2003 16:58:00

¿Pero que significa este error?
 
Hola a Todos!!!

He hecho un procedimiento que realiza la copia de una base de datos a un archivo .txt
la cabecera es la siguiente:

procedure TFmGanancia.GuardarDatos(Path: String; fexa: String);
siendo el Path la ruta del directorio donde quiero guardar el archivo .txt, y fexa, la fecha del sistema.

El caso es que cuando llamo al procedimiento:

TFmGanancia.GuardarDatos(Ruta, fexa);

Meda este erro:

[Error] Formulario.pas(312): This form of method call only allowed for class methods

Podriais ayudarme!!!!:(

Gracias!

guillotmarc 08-05-2003 17:18:16

Hola.

Estás utilizando un método, directamente a partir de la clase (TFmGanancia) y no de una instancia de la clase.

Es decir, si tienes un formulario FmGanancia1 de la clase TFmGanancia, podrás ejecutar ese método sin problemas sobre la instancia :

FmGanancia1.GuardarDatos(Path: String; fexa: String);

Pero no :

TFmGanancia.GuardarDatos(Path: String; fexa: String);

Utilizar un método directamente a partir de la clase, solo lo puedes hacer con los constructores (para crear una nueva instancia de la clase, normalmente el Create), o con métodos de clase. Que se han definido como :

class procedure TFmGanancia.GuardarDatos(Path: String; fexa: String);

Estos métodos de clase se pueden usar directamente a partir de la clase, sin necesidad de ejecutarse sobre una instancia de la misma. NOTA : Al no ejecutarse sobre ninguna instancia de la clase no podrás utilizar la pseudo-variable Self.

Ha quedado un poco liado, pero espero que se pueda entender.

Saludos.

FRANKER 08-05-2003 17:19:22

Hola

Me parece ver que tu error está en la llamada de la función.

Cambia :
TFmGanancia.GuardarDatos(Ruta, fexa);
por
FmGanancia.GuardarDatos(Ruta, fexa);

sin la T del principio que hace referencia a la clase.

Saludos!

delphi.com.ar 08-05-2003 17:20:07

Estas queriendo llamar a un método directamente desde la clase, y eso está solo permitido para los métodos de clase.
Si estas ejecutándolo dentro de un método de este TFmGanancia, solo lo tenés que llamar así:

Código:

GuardarDatos(Ruta, fexa);
Sin la clase!!... si lo llamás de afuera y el form esta creado en la variable FmGanancia, lo que tenés que hacer es

Código:

FmGanancia.GuardarDatos(Ruta, fexa);
No creo que quieras que GuardarDatos sea un método de clase..

FRANKER 08-05-2003 17:20:30

Me Gusta más tu Respuesta guillotmarc :p
saludos!!!!

nesetru 08-05-2003 17:27:45

Gracias a todos!!

La verdad es que estoy comenzando a programar en Delphi y para nada controlo las Clases ... y demás!
:(


Gracias otra vez!!


La franja horaria es GMT +2. Ahora son las 23:06:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi