delphi4arab منتديات دلفي للعرب

نسخة كاملة : Constant expression expected
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم لدي سؤال ربما يبدوا غبيا نوعا ما لكن اريد معرفته
لماذا لا يمكن كتابة بهذا الشكل
كود :
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
والسلام عليكم

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

تحديد عناصر المصفوفة اثناء تنفيذ
كود :
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];
جزاك الله خيرا على الرد هل افهم من كلامك ان الدالة SetLength(tab01, 5);

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

SetLength(tab01, 35) or SetLength(tab01, 5);
بارك الله فيك
اخي صححلي المعلومة ان كنت مخطا
نعم الدالة تقوم بإعادة التهيئة
يعني تنفذ SetLength(tab01, 5) مصفوفة بطول 5
وتعيد تنفيذ SetLength(tab01, 35) وتصبح المصفوفة بطول 35.
بارك الله فيك وزادك الله علما شكرا على المساعدة احس احيانا انك الوحيد الموجود في المنتدى ههههه
في الحقيقة أرى أنك تسعت في المصفوفات
ومعلوماتي عن المصفوفات صطحية
وبارك الله في الأخ 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;