Forum > Arabic
إستفسار في المصفوفات ديناميكية
Al-Eid:
السلام عليكم
في لازاروس وحتى دلفي عند التصريح بالمصفوفات الديناميكية من نوع Integer وبعد تحديد طولها بـ SetLength(i_arr,N) يكون عدد خانتها N+1 من 0 إلى N ولكن إذا كانت المصفوفة من نوع String في عدد خانتها يكون N أي من 0 إلى N-1 ممكن إستفسار لذلك
للتأكد يمكن تجريب المثالين التالينن
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TForm1.Button2Click(Sender: TObject);var i_arr: array of String ; i : integer;begin SetLength(i_arr,4); for i :=0 to 4 do Begin i_arr[i]:=inttostr(i); showmessage(i_arr[i]); end;end;
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TForm1.Button1Click(Sender: TObject);var i_arr: array of Integer ; i : integer;begin SetLength(i_arr,4); for i :=0 to 4 do Begin i_arr[i]:=i; showmessage(inttostr(i_arr[i])); end;end;
Zaher:
إذا كانت المصفوفة ب N عنصر
فمجالها من 0 إلى N-1
وليس N+1
وليس ايضا N
Zaher:
جرب استعمل Low و High
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---var a: array of string; i: Integer;begin SetLength(a, 2); a[0] := 'text1'; a[1] := 'text2'; for i := Low(a) to High(a) do begin Memo1.Lines.Add(IntToStr(i) + ': ' + a[i]); end;end;
Al-Eid:
--- Quote from: Zaher on August 07, 2021, 11:56:18 am ---إذا كانت المصفوفة ب N عنصر
فمجالها من 0 إلى N-1
وليس N+1
وليس ايضا N
--- End quote ---
نعم يا أستاذ أعلم ذلك لكني جربت الكود السابق فالبنسبة للمصفوفة Integer يكون عدد حلافتها من0 إلى N وهذا بالنسبة لي غريب مع العلم أني جربت ذلك حتى في دلفي وأعطتني نفس النتيجة
Zaher:
مافعلته انت انك استعملت العنصر ما بعد الاخير و لأجل الصدفة هذا العنصر ينتمي لنفس الكتلة الخاصة بالذاكرة فلم يعطيك اي خطأ لكن ممكن ان يصدف ان يكون خارج كتلة الذاكرة المحجوزة للمصفوفة فيعطي خطأ و يفرقع معك البرنامج، جرب اضافة خيار في بداية الملف بعد اول سطر
{$RANGECHECKS ON}
سيختلف الوضع عندها
أما بالنسبة لما حدث مع ال string فلأن النص لكل عنصر يحجز مرة اخر بكتلة ذاكرة مستقلة عن كتلة ذاكرة المصفوفة، و ستحصل على نتائج تابعة للحظ فقط
التخبيص لا يعول عليه :)
Navigation
[0] Message Index
[#] Next page