PDA

View Full Version : پرش با goto



omidan321
پنج شنبه 14 دی 1391, 08:47 صبح
سلام ایا میشه توی دلفی از یه پروسیجر یا تابع با دستور goto خارج شد؟ اگه نه من چطورمیتونم از یه پروسیجر به یه جای دیگه خارج از همون پروسیجری که goto درش استفاده شده گریز بزنم ؟

منتظر راهنماییتون هستم

حمیدرضاصادقیان
پنج شنبه 14 دی 1391, 10:28 صبح
سلام.
از Goto میشه استفاده کرد ولی کلا غلطه. شما روش کارو تغییر بده و به جای استفاده از Goto میتونید از Procedure استفاده کنیدو بنا به نیاز پروسیجر مورد نظر رو صدا بزنید.

omidan321
پنج شنبه 14 دی 1391, 10:49 صبح
بذار یه جور دیگه بگم
ببینید من یه پروسیجر بزرگ دارم که لازمه با یه دستور تایمر یه عملی رو انجام بدم(تکرار کنم) بعد از عمل درون تایمر به همون جایی که تایمر رو انیبل کردم پرش کنم تا این سیکل دوباره انجام شه

procedure BitBtn1Click(Sender: TObject);
if true then
begin
10:
a:=a+b;
c:=2*a;
timer1.enable:=true;
goto 10;
end;
(خاصیت ontimer)
procedure timer5Timer(Sender: TObject);
begin
z:=6*9
end;
تایمر و برنامه من هردوشون یه پروسیجر هستن ،

اینیکه اینجا نوشتم درست هست من یه همچین چیزی میخام (هنوز اجراش نکردم)

BORHAN TEC
پنج شنبه 14 دی 1391, 16:47 عصر
سلام
تا جایی که میتونید باید سعی کنید که از goto استفاده نکنید ولی متاسفانه در برخی از برنامه های الگوریتمیک پیچیده چاره ای جز استفاده از goto وجود ندارد! توجه کنید که استفاده از goto فقط در برخی از شرایط واقعاً خاص توجیه دارد، نه این که کلاً به استفاده از آن عادت کنید و دائم از آن استفاده کنید!!!
در هر صورت روش استفاده از goto در دلفی به این شکل است:
procedure TForm1.Button1Click(Sender: TObject);
label
MyLabel;
begin
ShowMessage('Test Area 1');
goto MyLabel;
ShowMessage('Test Area 2');

MyLabel:
ShowMessage('Test Area 3');
end;
برای تکمیل صحبت های آقای صادقیان هم باید بگم که میتونید در روشی که ایشان گفتند از inline procedure برای بالا بردن سرعت استفاده کنید که استفاده از آن هم شرایط خودش را دارد که در جاهای مختلفی به صورت مفصل در مورد آن بحث شده است که دیگه نیازی به توضیحات بیشتر نمیبینم.
موفق باشید...

omidan321
شنبه 16 دی 1391, 11:11 صبح
سلام
تا جایی که میتونید باید سعی کنید که از goto استفاده نکنید ولی متاسفانه در برخی از برنامه های الگوریتمیک پیچیده چاره ای جز استفاده از goto وجود ندارد! توجه کنید که استفاده از goto فقط در برخی از شرایط واقعاً خاص توجیه دارد، نه این که کلاً به استفاده از آن عادت کنید و دائم از آن استفاده کنید!!!
در هر صورت روش استفاده از goto در دلفی به این شکل است:
procedure TForm1.Button1Click(Sender: TObject);
label
MyLabel;
begin
ShowMessage('Test Area 1');
goto MyLabel;
ShowMessage('Test Area 2');

MyLabel:
ShowMessage('Test Area 3');
end;


داداش ابجکت اینو که خودم می دوستم توجه ننمودی من میگم توی مثالی که زدم با goto یا هر وسیله جهنده دیگه بتون پرش کنم (از تایمر به پروسیجر باتن 1 پرش کنم )
راه حلی اگه به ذهنتون میرسه من منتظر نظرات شما هستم

کسی جوابو نمیدونه ؟؟؟؟؟؟؟؟؟؟؟؟؟

ayat255
یک شنبه 17 دی 1391, 12:07 عصر
تو کد تایمرت از کد زیر استفاده کن

timer1.enable:=false;
BitBtn1.click;

یوسف زالی
یک شنبه 17 دی 1391, 12:35 عصر
سلام.
نمی تونید از متدی که توش هستید به وسط یک متد دیگه جهش کنید.
به جاش از الگوریتم های جایگزین استفاده کنید.