PDA

View Full Version : نحوه استفاده از function



amirtofighi
دوشنبه 12 بهمن 1388, 07:39 صبح
سلام دوستان
خواستم این سوال رو بپرسم ولی اولش گفتم خیلی سوال ابتداییه
ولی بالاخره جرات کردم بنویسم!
تو این فروم کلی سورس دسدم که همشون با function شروع میشد
میخواستم بپرسم این کد رو کجای یونیت باید وارد کرد واینکه چطوری باید تونو فراخوانی کرد؟
مثلا میشه یه دکمه تو فرم گذاشت و برای on-click این دکمه دستورات function رو قرار داد؟
و ورودی های این function رو از کجا باید وارد کنیم؟
لطفا اگه میشه با یه مثال توضیح بدید خیلی ممنون میشم
ایشاله پیشرفت که کردم تو دلفی یه روز جبران میکنم!

SYNDROME
دوشنبه 12 بهمن 1388, 10:15 صبح
با سلام
دوست عزیز هر Function نوع ، تعداد ورودی و نوع خروجی با تابع دیگر می تواند متفاوت باشد.
شما تابع مورد نظر خود را قرار دهید تا دوستان راحتر بتوانند کمک کنند.
موفق باشید

majid_ramak
دوشنبه 12 بهمن 1388, 10: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, 13:48 عصر
مقدار خروجی در Function مورد نظر یمک مقدار Boolean هست

من function های زیادی دیدم که فقط صحیح یا غلط نیست بلکه یک مقدار است
مثلا function زیر را در نظر بگیرید


function tan(num:extended):extended;
begin
tan:=sin(num)/cos(num);
end;

پرسش من این است که این دستور را در کجای فرم وارد کنم و چگونه آنرا فراخوانی کنم و چگونه از جواب این function استفاده کنم
فرض کنید برنامه ای نوشته ام که در یک ادیت مقدار زاویه را میگیرد و میخواهیم تانژانت آنرا حساب کنیم

amirtofighi
دوشنبه 12 بهمن 1388, 13:59 عصر
با سلام
دوست عزیز هر Function نوع ، تعداد ورودی و نوع خروجی با تابع دیگر می تواند متفاوت باشد.
شما تابع مورد نظر خود را قرار دهید تا دوستان راحتر بتوانند کمک کنند.
موفق باشید

همانطور که گفتم چون کد های زیادی دیدم که با function شروع میشد این سوال را پرسیدم و تابع خاصی را مورد نظر نداشتم
ولی در تاپیک بالا یک مثال ساده را آوردم

majid_ramak
دوشنبه 12 بهمن 1388, 15: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, 16:21 عصر
همانطور که گفتم چون کد های زیادی دیدم که با function شروع میشد این سوال را پرسیدم و تابع خاصی را مورد نظر نداشتم
ولی در تاپیک بالا یک مثال ساده را آوردم
دسوت عزیز شما د هر جا نام تابع را می توانید بنویسید.(FormShow , Buttom و . . .)
مهم این است که شما در کجا به عکلیات و یا مقدار این تابع نیاز دارید.
باید در همانجا نام تابع(و اگر پارامتر داشت مقادیر پارامتر) را بنویسید تا عملیات مربوط به آن آنجام شود.
مثلاً من می خواهم زمانی که فرم دارد باز می شود مقدار caption با توجه به شرایط تغییر کند پس تابع مورد نظر را در FormShow می نویسم و . . . .
موفق باشید