View Full Version : تعریف تابع و زیر برنامه
akb_behnam
سه شنبه 01 اسفند 1385, 14:36 عصر
سلام میشه طرز صحیح نوشتن function و procedure رو به همراه پارامتر و صدا زدن تابع بگید
من وقتی یه تابع ساده تعریف می کنم و در Init فرم می نویسم با این ارور رو به رو میشم :
Methods and events cannot contain nested procedures or class desinitions
می شه کمک کنید اصلا تعریف تابع همچین جایی درسته ؟
rezaTavak
سه شنبه 01 اسفند 1385, 20:18 عصر
توی تابع نمیشه تابع تعریف کرد!
در واقع در برنامه نویسی ویژوال(شی گرا) method همان function,procedure است.
برای ایجاد یک تابع در فرم باید از منوی form از add method استفاده کنید و در آن تابعتان را بنویسید و مثل یک متد آنرا فرا خوانی کنید. برای properties هم همچنین. اما از بیرون به این متدها دسترسی وقتی ممکن می شود که متد public بوده و فرم شما هم به یک متغیر public نسبت داده شود.
akb_behnam
چهارشنبه 02 اسفند 1385, 09:51 صبح
برای procedure چی ؟
حالا اگر بخوام به طور مجزا این کار رو انجام بدم طوری که بعدا بتونم توابع رو در پروژه های دیگه استفاده کنم چی ؟
یا از توابع دیگران استفاده کنم مثل همین زیر برنامه تاریخ شمسی که رو این سایته
rezaTavak
چهارشنبه 02 اسفند 1385, 11:26 صبح
procedure فرقی با تابع نمیکنه
توی یک فایل prg با همان نام تابع توابعتان را بنویسید.
من یک شاخه دارم به اسم lib که تمام چیزها را در آن قرار می دهم. و به همه برنامه هایم پیوست میکنم.
akb_behnam
جمعه 04 اسفند 1385, 00:24 صبح
من یک فایل prg ساختم و کد زیر رو داخلش نوشتم :
DO FORM form1
READ event
FUNCTION functest(myMessage)
messaegbox(myMessage)
endfun
PROCEDURE proctest
PARAMETER myMessage
messaegbox(myMessage)
ENDPROC
آیا درست نوشتم ؟
حالا چه طور در فرمم تابع رو صدا کنم
rezaTavak
جمعه 04 اسفند 1385, 09:26 صبح
نه.
هر تابع یک فایل با همان نام تابع دارای توضیحات کافی
akb_behnam
جمعه 04 اسفند 1385, 14:58 عصر
یعنی چی ؟
یعنی برای هر تابع یه فایل prg بسازم ؟
چه طوری تابع رو تو فرم صدا کنم ؟
rezaTavak
جمعه 04 اسفند 1385, 18:30 عصر
بله هر تابع یک فایل؛ این بهتر است.
البته برای برنامه اصلی نه اما برای بقیه چرا دلیلش اینه که خود فاکس اتوماتیک آنها را پیدا کند مگر اینکه از دستور set procedure to Filename.prg (به جای filename نام فایلتان را باید بگذارید) استفاده کنید.
مثلا در تابعی که من برای تاریخ فارسی نوشته ام مجبورم همیشه اول برنامه هایم
SET PROCEDURE TO persiandate.prg
را قرار دهم.
با صدا زدن نام تابع و پرانتز و آرگومانها تابع صدا زده می شود. نیاز به کار خاصی نیست.
مثلا تابع شما با proctext() در هر جای برنامه صدا زده می شود.
akb_behnam
شنبه 05 اسفند 1385, 22:34 عصر
من نمی فهمم اشتباه من تو کد بالا چی بوده این که همه رو تو فایل اصلی نوشتم ؟
خوب این که باید جواب بده.
چه تغییری بدم؟
rezaTavak
شنبه 05 اسفند 1385, 23:03 عصر
اشتباه دستوری نداره
از لحاظ نظم برنامه نویسی گفتم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.