delphi4arab منتديات دلفي للعرب
Constant expression expected - نسخة قابلة للطباعة

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



Constant expression expected - mohamed49 - 15-03-2017

السلام عليكم لدي سؤال ربما يبدوا غبيا نوعا ما لكن اريد معرفته
لماذا لا يمكن كتابة بهذا الشكل
كود :
var size:integer; procedure TForm1.Button1Click(Sender: TObject); var myarray: array[0..size] of byte;   begin   end;  
او هكذا
كود :
var size:integer=100; procedure TForm1.Button1Click(Sender: TObject); var myarray: array[0..size] of byte;  begin  end; يظهر خطا  Constant expression expected حيث اردت ان يكون size  متغير وليس ثابت  myarray: array[0..100] of byte
والسلام عليكم

اقصد بالمتغير ان احمل فيه اي قيمة اريد


RE: Constant expression expected - sabre - 16-03-2017

جرب هذ ربما تجد ماتبحث عنه

تحديد عناصر المصفوفة اثناء تنفيذ
كود :
procedure TForm1.Button1Click(Sender: TObject); var tab01: array of Integer; i: integer; begin SetLength(tab01, StrToInt(Edit1.Text)); for i := 0 to StrToInt(Edit1.Text)-1 do tab01[i] := (i+1)*10; Memo1.Lines.Clear; for i := 0 to StrToInt(Edit1.Text)-1 do Memo1.Lines.Add(IntToStr(tab01[i])); end;


تحديد عناصر المصفوفة اثناء تصميم
كود :
var tab03: array of Integer; tab02: array[0..4] of Integer; i: integer; j : integer; begin SetLength(tab01, 5); tab03[0] := 10; tab03[1] := 20; tab03[2] := 30; tab03[3] := 40; tab03[4] := 50; for j := 0 to 5-1 do tab02[j] := tab03[j];



RE: Constant expression expected - mohamed49 - 16-03-2017

جزاك الله خيرا على الرد هل افهم من كلامك ان الدالة SetLength(tab01, 5);

تعيد اعطاء رقم جديد للمصفوفة مثلا لو كانت المصفوفة تتكون من 11 عنصر واردت تغييرها ب35 عنصر اكثر او اقل ربما 5 مثلا هل استخدم هذه الدالة

SetLength(tab01, 35) or SetLength(tab01, 5);
بارك الله فيك


RE: Constant expression expected - mohamed49 - 20-03-2017

اخي صححلي المعلومة ان كنت مخطا


RE: Constant expression expected - Agmcz - 20-03-2017

نعم الدالة تقوم بإعادة التهيئة
يعني تنفذ SetLength(tab01, 5) مصفوفة بطول 5
وتعيد تنفيذ SetLength(tab01, 35) وتصبح المصفوفة بطول 35.


RE: Constant expression expected - mohamed49 - 21-03-2017

بارك الله فيك وزادك الله علما شكرا على المساعدة احس احيانا انك الوحيد الموجود في المنتدى ههههه


RE: Constant expression expected - sabre - 23-03-2017

في الحقيقة أرى أنك تسعت في المصفوفات
ومعلوماتي عن المصفوفات صطحية
وبارك الله في الأخ Agmcz
على شرحه الذي أفادنا به

كود :
var size:integer; procedure TForm1.Button2Click(Sender: TObject); var //myarray: array[0..size] of byte; myarray: array of byte; begin size := 3; // حيث اردت ان يكون size متغير وليس ثابت SetLength(myarray, size); myarray[0] := 200; myarray[1] := 201; myarray[2] := 207; Label1.Caption := inttostr(myarray[0]); end;


أنا أظن أن هذا صحيح
كود :
procedure TForm1.Button4Click(Sender: TObject); type tmyarray = array of byte; var size1, size2, size3:integer; myarray1: tmyarray; myarray2: tmyarray; myarray3: tmyarray; begin size1 := 5; size2 := 11; size3 := 35; SetLength(myarray1, size1); SetLength(myarray2, size2); SetLength(myarray3, size3); myarray1[0] := 100; myarray2[0] := 200; myarray3[0] := 255; // error 256 Label1.Caption := inttostr(myarray1[0]); end;