View Full Version : نحوه استفاده از function
  
amirtofighi
دوشنبه 12 بهمن 1388, 08:39 صبح
سلام دوستان
خواستم این سوال رو بپرسم ولی اولش گفتم خیلی سوال ابتداییه
ولی بالاخره جرات کردم بنویسم!
تو این فروم کلی سورس دسدم که همشون با function شروع میشد
میخواستم بپرسم این کد رو کجای یونیت باید وارد کرد واینکه چطوری باید تونو فراخوانی کرد؟
مثلا میشه یه  دکمه تو فرم گذاشت و برای on-click این دکمه دستورات function رو قرار داد؟
و ورودی های این function رو از کجا باید وارد کنیم؟
لطفا اگه میشه با یه مثال توضیح بدید خیلی ممنون میشم
ایشاله پیشرفت که کردم تو دلفی یه روز جبران میکنم!
SYNDROME
دوشنبه 12 بهمن 1388, 11:15 صبح
با سلام
دوست عزیز هر Function نوع ، تعداد ورودی و نوع خروجی با تابع دیگر می تواند متفاوت باشد.
شما تابع مورد نظر خود را قرار دهید تا دوستان راحتر بتوانند کمک کنند.
موفق باشید
majid_ramak
دوشنبه 12 بهمن 1388, 11:42 صبح
با سلام،
۱) اولا تفاوت بین Function و Procedure  رو بهتره بدونید که هر کدوم نحوه استفادشون چیه.
Function MyFunction(var FText:string): Boolean;
    Procedure MyProcedure(var FText:string);
در این دو تعریف  تفاوت بین این دو رو نشون میده  هردو یک مقدار ورودی به اسم FText میگیرن که از نوع  String هست اما تفاوت اونها در اینکه Function ها یک مقدار خروجی دارن اما Procedure  ها مقدار خروجی ندارند که در انجا مقدار خروجی در Function  مورد نظر یمک مقدار Boolean هست.
۲) نحوه تعریف اونها به این صورت که  در یک از بلاک های Public یا Private در  بخش Interface تعریف کنید به این شکل:
 
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    Function MyFunction(FText:string): Boolean;
    Procedure MyProcedure(var FText:string);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
۳) نحوه استفاده از اونها به این شکل که در قسمت implementation به این شکل ازشون استفاده  می کنیم (برای مثال): 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if MyFunction(Edit1.Text) then
    ShowMessage('True')
  else
    ShowMessage('False');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  S: string;
begin
  MyProcedure(S);
  Edit1.Text:= S;
end;
function TForm1.MyFunction(FText: string): Boolean;
begin
 if FText = 'sa' then
   Result := True
 else
   Result := False;
end;
procedure TForm1.MyProcedure(var FText: string);
begin
  Ftext:= 'asdhjgahjsgdjhagshd';
end;
 
امیدوارم  توضیحاتم به دردتون خورده باشه.
amirtofighi
دوشنبه 12 بهمن 1388, 14:48 عصر
مقدار خروجی در Function  مورد نظر یمک مقدار Boolean هست
من function های زیادی دیدم که فقط صحیح یا غلط نیست بلکه یک مقدار است
مثلا function زیر را در نظر بگیرید
function tan(num:extended):extended; 
begin 
tan:=sin(num)/cos(num); 
end;
پرسش من این است که این دستور را در کجای فرم وارد کنم و چگونه آنرا فراخوانی کنم و چگونه از جواب این function استفاده کنم
فرض کنید برنامه ای نوشته ام که در یک ادیت مقدار زاویه را میگیرد و میخواهیم تانژانت آنرا حساب کنیم
amirtofighi
دوشنبه 12 بهمن 1388, 14:59 عصر
با سلام
دوست عزیز هر Function نوع ، تعداد ورودی و نوع خروجی با تابع دیگر می تواند متفاوت باشد.
شما تابع مورد نظر خود را قرار دهید تا دوستان راحتر بتوانند کمک کنند.
موفق باشید
همانطور که گفتم چون کد های زیادی دیدم که با function شروع میشد این سوال را پرسیدم و تابع خاصی را مورد نظر نداشتم
ولی در تاپیک بالا یک مثال ساده را آوردم
majid_ramak
دوشنبه 12 بهمن 1388, 16:50 عصر
من function های زیادی دیدم که فقط صحیح یا غلط نیست بلکه یک مقدار است
مثلا function زیر را در نظر بگیرید
خروجی Function  هر مقداری میتونه باشه (True , False یا Integer یا string و ...)
این یک مثال بود که در اون Function  مقدار Boolean بر می گردوند.
  
پرسش من این است که این دستور را در کجای فرم وارد کنم و چگونه آنرا فراخوانی کنم و چگونه از جواب این function استفاده کنم 
فرض کنید برنامه ای نوشته ام که در یک ادیت مقدار زاویه را میگیرد و میخواهیم تانژانت آنرا حساب کنیم
فرض کنیم در فرمتون یک Button قرار میدید که با کلیک بر روی اون مقدار تانژانت داخل ادیت رو حساب کنه حال این کد رو می نویسید:
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.Text:= FloatToStr(tan(StrToFloat(Edit1.Text)));
end;
function TForm1.tan(num: extended): extended;
begin
  tan:=sin(num)/cos(num);
end;
 
در قسمت Interface و در قسمت Private  این  کد رو می نویسید:
  
private
    function tan(num:extended):extended;
  public
    { Public declarations }
SYNDROME
دوشنبه 12 بهمن 1388, 17:21 عصر
همانطور که گفتم چون کد های زیادی دیدم که با function شروع میشد این سوال را پرسیدم و تابع خاصی را مورد نظر نداشتم
ولی در تاپیک بالا یک مثال ساده را آوردم
 دسوت عزیز شما د هر جا نام تابع را می توانید بنویسید.(FormShow , Buttom و . . .)
مهم این است که شما در کجا به عکلیات و یا مقدار این تابع نیاز دارید.
باید در همانجا نام تابع(و اگر پارامتر داشت مقادیر پارامتر) را بنویسید تا عملیات مربوط به آن آنجام شود.
مثلاً من می خواهم زمانی که فرم دارد باز می شود مقدار caption با توجه به شرایط تغییر کند پس تابع مورد نظر را در FormShow می نویسم و . . . .
موفق باشید
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.