Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
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
    { Private declarations }
  public
    { Public declarations }
  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;
// en mi caso es unit2! es un ejemplo recuerda!

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  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)));
// llamamos a la función definida en el otro form.
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;
  // una función interna
  // fíjate el tabulado... ayuda a comprender mejor.
  function EsPositivo(Numero: integer): integer;
  begin
    result := Numero >= 0;
  end;

begin
  if EsPositivo(Numero1) AND EsPositivo(Numero2)
     then result := Numero1 + Numero2
     else result := -1; // digamos que este -1 significa un "error"
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.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 12-03-2009 a las 04:00:46.
Responder Con Cita
  #2  
Antiguo 14-03-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
¿Se me entendió karo?
¿Hay dudas?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Retornar o no retornar desde un script principal dec PHP 6 24-03-2008 23:41:12
Como hacer para que una funcion regrese varios valores jangel_ramirezm Varios 11 07-03-2008 22:14:49
Cómo puedo hacer para que una variable valga 2 valores al mismo tiempo wlad Internet 15 19-12-2007 18:06:03
Como pasar los valores de una tabla a otra! Carlosguiland MySQL 4 15-06-2004 22:58:20
¿Como puedo llamar un Procedure desde otra unit? athal Lazarus, FreePascal, Kylix, etc. 11 17-05-2004 01:05:20


La franja horaria es GMT +2. Ahora son las 01:22:59.


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