PDA

Ver la Versión Completa : Error con funcion


astut
17-09-2006, 11:20:55
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:
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":


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

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 ^^