السلام عليكم لدي سؤال ربما يبدوا غبيا نوعا ما لكن اريد معرفته
لماذا لا يمكن كتابة بهذا الشكل
كود :
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;