المشاركات : 169
المواضيع 28
:
: 391
الإنتساب : Apr 2016
15-03-2017, 08:30 PM
(آخر تعديل لهذه المشاركة: 15-03-2017, 08:52 PM بواسطة mohamed49.)
السلام عليكم لدي سؤال ربما يبدوا غبيا نوعا ما لكن اريد معرفته
لماذا لا يمكن كتابة بهذا الشكل
كود :
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
والسلام عليكم
اقصد بالمتغير ان احمل فيه اي قيمة اريد
كل من 1 user says قال شكرا ل mohamed49 على المشاركة المفيدة1 user says Thank You to mohamed49 for this post
• sabre
المشاركات : 78
المواضيع 37
:
: 14
الإنتساب : Aug 2015
جرب هذ ربما تجد ماتبحث عنه
تحديد عناصر المصفوفة اثناء تنفيذ
كود :
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];
كل من 1 user says قال شكرا ل sabre على المشاركة المفيدة1 user says Thank You to sabre for this post
• mohamed49
المشاركات : 169
المواضيع 28
:
: 391
الإنتساب : Apr 2016
جزاك الله خيرا على الرد هل افهم من كلامك ان الدالة SetLength(tab01, 5);
تعيد اعطاء رقم جديد للمصفوفة مثلا لو كانت المصفوفة تتكون من 11 عنصر واردت تغييرها ب35 عنصر اكثر او اقل ربما 5 مثلا هل استخدم هذه الدالة
SetLength(tab01, 35) or SetLength(tab01, 5);
بارك الله فيك
المشاركات : 169
المواضيع 28
:
: 391
الإنتساب : Apr 2016
اخي صححلي المعلومة ان كنت مخطا
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
نعم الدالة تقوم بإعادة التهيئة
يعني تنفذ SetLength(tab01, 5) مصفوفة بطول 5
وتعيد تنفيذ SetLength(tab01, 35) وتصبح المصفوفة بطول 35.
سبحان الله وبحمده سبحان الله العظيم
المشاركات : 169
المواضيع 28
:
: 391
الإنتساب : Apr 2016
بارك الله فيك وزادك الله علما شكرا على المساعدة احس احيانا انك الوحيد الموجود في المنتدى ههههه
المشاركات : 78
المواضيع 37
:
: 14
الإنتساب : Aug 2015
في الحقيقة أرى أنك تسعت في المصفوفات
ومعلوماتي عن المصفوفات صطحية
وبارك الله في الأخ 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;
كل من 1 user says قال شكرا ل sabre على المشاركة المفيدة1 user says Thank You to sabre for this post
• mohamed49