Hola Karo,
El error que veo está en que que tienes mal declarado la función sumardosnumeros. Veamos, la forma correcta es como sigue:
Código Delphi
[-]unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
private
public
end;
function sumardosnumeros(num1, num2: integer): integer;
var
Form2: TForm2;
implementation
{$R *.dfm}
function sumardosnumeros(num1, num2: integer): integer;
begin
result := num1 + num2;
end;
end.
Fíjate que declaro la función despues del la definición del TForm2. Como puede observarse esta declaración pertenece a la sección interface. Compara con el tuyo y notarás que defines la función entre la declaración interface y uses. Eso no es correcto.
Además el otro error está en escribir el cuerpo o código de dicha función dentro del evento OnClick del boton1. No es correcto, si te fijas el código está fuera...
Ahora bien, si sigues los pasos como muestro en mi ejemplo, notarás que en tu form1 ya puedes incluir una referencia en uses hacia unit3 y podrás llamar a la función de forma algo similar a esto:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var n1, n2: integer;
begin
n1 := StrToInt(edit1.Text);
n2 := StrToInt(edit2.Text);
ShowMessage(intToStr(sumardosnumeros(n1,n2)));
end;
end.
¿Ya leíste un poco al libro que te he recomendado? Ve al capítulo 3, página 57. Allí está bien explicado como se estructura una unit, como se declaran los tipos, variables, procedimientos, funciones, clases y métodos.
Se puede declarar una función o procedimiento de otro, e incluso dentro de un evento... algo parecido a como lo tenías declarado en tu button1 de tu unit3. La cuestión es que si lo haces, sólo estas funciones y procedimientos "internos" sólo podrán ser usados dentro del evento, función o procedimiento principal. Además estos procedimientos y/o funciones internas no necesitan declaración en interface. Algo así:
Código Delphi
[-]function SumarNumeros(Numero1, Numero2: integer): integer;
function EsPositivo(Numero: integer): integer;
begin
result := Numero >= 0;
end;
begin
if EsPositivo(Numero1) AND EsPositivo(Numero2)
then result := Numero1 + Numero2
else result := -1; end;
Ahora sólo basta con agregar la declaración en la sección interface de la función SumarNumeros para que funcione.
Creo que con esto se entenderá mejor el tema. Si tienes mayores dudas por favor dilo y vamos llendo paso a paso. Recomiendo mucho la lectura de la Cara Oculta.
Si antes de Delphi pasaste por Pascal no creo que te resulte complicado adaptarte.
Espero que se me entienda.
Saludos,
PD: Acostumbrate a emplear las etiquetas delphi:
[ DELPHI ]
tu código aquí...
[ /DELPHI ]
(Sin los espacios entre los corchetes). Notarás como el sistema de los foros solito le dará el formato adecuado... esto ayuda a comprender mejor el código. Como consejo, tabula tu código.