![]() |
|
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; |