delphi4arab منتديات دلفي للعرب
هل يمكن للدالة ارجاع اكثر من قيمة - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : هل يمكن للدالة ارجاع اكثر من قيمة (/showthread.php?tid=10376)



هل يمكن للدالة ارجاع اكثر من قيمة - ELARAPY - 13-08-2019

السلام عليكم ورحمة الله وبركاته 

انا اعلم ان  Function يمكن ان ترجع اكثر من قيمة فهل يمكن مثال لدلفي ؟


RE: هل يمكن للدالة ارجاع اكثر من قيمة - delphi17 - 13-08-2019

ماذا تقصد ؟ هل تعني في نفس الدالة او شى اخر
راجع delphi overload function ايضا


RE: هل يمكن للدالة ارجاع اكثر من قيمة - ELARAPY - 14-08-2019

(13-08-2019, 11:25 AM)delphi17 كتب : ماذا تقصد ؟ هل تعني في نفس الدالة او شى اخر
راجع delphi overload function ايضا

في نفس الدالة وليس دالة مطابقة في الاسم مختلفة في الوظيفه ,, لا اقصد Overload  وسبق لي من فترة القراءة عنها ولم اطبق وعلى الاغلب Overload هي فقط نمط من OOP .

فقط قرأت ما قرأت في كتاب لغة C ووجدت ما استفسر عنه في دلفي

شكرا لاهتمامك اخي



RE: هل يمكن للدالة ارجاع اكثر من قيمة - onexite - 14-08-2019

PHP كود :
type
  TMyRec 
= record
    Str 
: String;
    Boo : Boolean;
  end;

function 
DoQuery(AQuery: String): TMyRec;
begin
  
// do stuff
  Result.Str := 'hello';
  Result.Boo := False;
end;

procedure CallQuery;
begin
  with DoQuery
('this is my query') do
    if Boo then
      Edit1
.Text := Str;
end; 



RE: هل يمكن للدالة ارجاع اكثر من قيمة - S.FATEH - 14-08-2019

السلام عليكم
الموضوع فيه كل طرق ارجاع اكثر من قيمة بدالة
http://delphi4arab.net/forum/showthread.php?tid=10271


RE: هل يمكن للدالة ارجاع اكثر من قيمة - ELARAPY - 15-08-2019

الكود الذي قرأته خاص بلغة C وارجاع قيمتين باستخدام المؤشرات

الكود مرفق


RE: هل يمكن للدالة ارجاع اكثر من قيمة - ELARAPY - 15-08-2019

اسف اخي الحبيب عندي مشكلة مع النت


RE: هل يمكن للدالة ارجاع اكثر من قيمة - أبو معاذ - 15-08-2019

وعليكم السلام ورحمة الله وبركاته.
الدالة (Function) في الدلفي لا يمكنها ارجاع أكثر من قيمة.
لكن هناك بعض الحيل من بينها :
1- ارجاع قيمة داخل الدالة لمتغير عام.
2- انشاء دالة من نوع Record.

PHP كود :
type
TMyRecord 
= record
First
: integer;
Second: string;
end;

function 
MyFunction: TMyRecord;
begin
result
.First := 1;
result.Second := 'Hello';
end; 



RE: هل يمكن للدالة ارجاع اكثر من قيمة - merouane - 15-08-2019

(15-08-2019, 09:29 AM)ELARAPY كتب : الكود الذي قرأته خاص بلغة C وارجاع قيمتين باستخدام المؤشرات

في الصورة المرفقة void تقابلها procedure في لغة باسكال
أما عن إرجاعه قيمتين، هي لم ترجع قيمتين وإنما عدلت على القيمين عبر المؤشر (أخذت عنوان القيمة ثم قام بالتعديل) 

 أقرب ترجمة له هو كالتالي:
PHP كود :
program Project1;

uses
  sysutils
, Math;

var
  hours: integer;
  minutes: integer;

proceudre minutesDevision(var hourspointer: integer; var minutespointer: integer);
begin
  hourspointer 
:= Floor(minutespointer / 60);
  minutespointer := minutespointer mod 60;
end;

begin
  hours 
:= 0;
  minutes := 90;

  minutesDevision(hours, minutes);
  writeln(inttostr(hours) + ' hours and ' + inttostr(minutes) + ' minutes');
  readln;

end. 



RE: هل يمكن للدالة ارجاع اكثر من قيمة - mobile - 16-08-2019

وعليكم السلام ورحمة الله وبركاته

نعم يمكن ان ترجع اكثر من قيمة  في الدلفي

كود :
function MyFunct(i:Integer ;out x,y :Integer): string; begin   Result :='Hello abou mouad ' ;   x:=i+1;   y:=i+2; end; procedure TForm1.Button1Click(Sender: TObject); var x,y :Integer; begin label1.caption :=MyFunct(1,x,y)+x.ToString+ ' '+ y.ToString; end;