Procedury i funkcje

0

Szukalem i nie moge znaleźć albo pojac jestem dosc nowy w programowaniu radze sobie z komponentami ale nie potrafie w Delphi 7 stworzyc wlasnej procedury czy funkcji. Staram sie ja zadeklarowac w clasie ale wywala mi to blad choc z tego co czytalem nie powinno.
Wiec prosze napiszcie mi co jest zle:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Button1: TButton;
  **function Suma(a,b:integer):integer;**
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

jak zadeklarowac funkcje lub procedure aby mozna bylo swobodnie korzystac z niej na danej formie.
chcialbym np: zeby funcja pobierala 2 wartosci z edit1 i edit2 sumowala je i wyplula jako caption Label.

jak zadeklaruje funkcje lub procedure jak wyzej wypluwa mi taki blad

[Error] Unit1.pas(15): Unsatisfied forward or external declaration: 'TForm1.Suma'

co ja robie zle bo juz nie ogarniam
wiem ze mozna takie cos w prosty sposob napisac bez dodatkowej funkcji ale chodzi mi wlasnie o nauczenie sie tworzenia i korzystania z nich

0

function Suma(a,b:integer):integer;

1.Bez gwiazdek (ale się domyślam że tak masz)
2.Musi być ciało procedury, poczytaj o tym. Powinno ono wyglądać:

function TForm1.Suma(a,b:integer):inger;
begin
//Kod
end;

0
function TForm1.Suma(a,b:Integer):Integer;
Begin
   result:=65;
end;
0

Bardzo dziekuje za odpowiedzi pomoglo juz wiem gdzie robilem blad

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label1: TLabel;
function Suma(a,b:integer):integer;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.Suma(a,b:integer):integer;
var
suma:integer;
begin
suma:=a+b;
result := suma;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:= inttostr(Suma(strtoint(edit1.Text),strtoint(edit2.Text)));
end;

end.

przy poprzednim przykladzie nie podalem ciala funkcji poniewaz myslalem ze blad lezal po stronie deklaracji i tu sie mylilem blad popelnialem poniewaz moje cialo funkcji zawsze wygladalo tak

function Suma(a,b:integer):integer;

zabraklo TForm1
domyslam sie ze przy tworzeniu procedur robie identyczny blad ale to przez wszystkie poradniki ktore pisza jak zrobic wlasna procedure w Pascalu i nie ma slowa o delphi nawet w tutejszym kompendium. Warto by dodac niewielka notke o procedurach wlasnej konstrukcji.

Jeszcze raz dziekuje i temat do zamkniecia

0

Mogłeś też zadeklarować funkcję poza klasą TForm1 ale wtedy odwoływanie się w niej do komponentów klasy TForm1 byłoby nieco bardziej kłopotliwe.

0

nie ma potrzeby zmieniac niczego to co napisałeś to metoda w klasie a nie funkcja. Funkcje i procedury nie sa formalnie zwiazane z klasami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1