Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error con funcion (https://www.clubdelphi.com/foros/showthread.php?t=35661)

astut 17-09-2006 11:20:55

Error con funcion
 
Hola a todos, estoy haciendo una funcion para una cosa, y me dice que "Edt_1,text" no ha sido declarado, cuando si esta declarado o.o:
Código Delphi [-]
unit formulario1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFrm_pl = class(TForm)
    Edt_1: TEdit;
    Btn_n1: TButton;
    Btn_n3: TButton;
    Btn_o1: TButton;
    Btn_n2: TButton;
    Btn_n4: TButton;
    Btn_n7: TButton;
    Btn_n8: TButton;
    Btn_n5: TButton;
    Btn_n6: TButton;
    Btn_n9: TButton;
    Btn_o2: TButton;
    Btn_o3: TButton;
    Btn_n0: TButton;
    Btn_o4: TButton;
    Btn_o6: TButton;
    Btn_o5: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
 Frm_pl: TFrm_pl;

implementation
 {$R *.dfm}
 var usado: integer;
 function insertar(numero: string): integer;
 begin
  if (usado= 0) then
  begin
   Edt_1.Text:= '';
   usado:= 1;
  end;
  Edt_1.text:= Edt_1.text + numero;
 end;

end.
¿Que he hecho mal?, seguramente no habre puesto la funcion donde debia, o hay solo se ponian prototipos si es asi, donde se pone la definicion, bueno, espero que puedan sorventar mis dudas ^^ thanks

dec 17-09-2006 12:43:31

Hola,

Problablemente te serviría convertir la función en un método de la clase "TFrm_p1":

Código Delphi [-]
type
  TFrm_p1 = class(TForm)
  {...}
  private
    function Insertar(numero: string) : integer;
  {...}
end;

implementation

{TFrm_p1}

function TFrm_p1.Insertar(numero: string) : integer;
begin
  if (usado= 0) then
  begin
   Edt_1.Text:= '';
   usado:= 1;
  end;
  Edt_1.text:= Edt_1.text + numero;  
end;

astut 17-09-2006 13:34:30

Si, pero bueno, podrias explicarme que consigo con eso y donde tengo accesivilidad a esa funcion (se supone que solo a ese formulario), pero, ¿como hago que esa funcion sea global?, thanks y mas, se supone que el propotipo se pone en el interface que se utilizaria para todas las unidades, pero a la ora de la definicion, solo se puede poner en las instrucciones, pero estas son locales... ayuda plz gracias por contestar ^^

Spynosa 17-09-2006 14:01:55

Puedes declaralo asi
Código Delphi [-]
unit formulario1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFrm_pl = class(TForm)
    Edt_1: TEdit;
    Btn_n1: TButton;
    Btn_n3: TButton;
    Btn_o1: TButton;
    Btn_n2: TButton;
    Btn_n4: TButton;
    Btn_n7: TButton;
    Btn_n8: TButton;
    Btn_n5: TButton;
    Btn_n6: TButton;
    Btn_n9: TButton;
    Btn_o2: TButton;
    Btn_o3: TButton;
    Btn_n0: TButton;
    Btn_o4: TButton;
    Btn_o6: TButton;
    Btn_o5: TButton;
    function insertar(numero: string): integer;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
 Frm_pl: TFrm_pl;

implementation
 {$R *.dfm}
 var usado: integer;
 TFrm_pl.function insertar(numero: string): integer;
 begin
  if (usado= 0) then
  begin
   Edt_1.Text:= '';
   usado:= 1;
  end;
  Edt_1.text:= Edt_1.text + numero;
 end;

end.


o bien puedes dejarlo como lo tienes y cambiar esto
Edt_1.text:= Edt_1.text + numero;

por esto:
Frm_pl.Edt_1.text:= Frm_pl.Edt_1.text + numero;

astut 17-09-2006 14:47:04

Si lo pongo en type es para todas las unidades, es decir, es global para todos los ficheros del proyecto, pero luego veo que lo defines en implementation y ese implementation se supone que es tambien para todos los ficheros', creo que no, creo que es para ese form, asi que no seria valido =S, ¿o me equivoco?, gracias por responder ^^


La franja horaria es GMT +2. Ahora son las 11:02:43.

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