delphi4arab منتديات دلفي للعرب
خزن البينات في القرص الصلب بدل الميموري - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : خزن البينات في القرص الصلب بدل الميموري (/showthread.php?tid=7532)



خزن البينات في القرص الصلب بدل الميموري - DevBlack - 18-02-2016

السلام عليكم اخواني الاعزاء

قمت بانشاء مصفوفه داخل التطبيق و هي تعمل
ولكن فوجات بن المصفوفه يتم تخزينها في الميمري رام فمثلا هذا الكود

كود :
type  ArrayIndex = 0..99999999;  TByteArray = array[ArrayIndex] of Byte;  PByteArray = ^TByteArray; procedure TForm1.GetDataAll; var  BufData : PByteArray; begin  GetMem(BufData, 1000000000); end; بعد املا البيانات يتم تخزينها في الرام  فهل يوجد حل لوضعها في الهارد  او ضغطها  و بارك الله فيكم



RE: خزن البينات في القرص الصلب بدل الميموري - محمد عبد العزيز - 21-02-2016

وعليكم السلام ورحمة الله
يمكن انشاء ملف بالقرص واستخدامه لكن ما المشكل ؟ هل تخشى من عدم توفر ذاكر حية كافية!
اوضح حتى يمكن توجيهك



RE: خزن البينات في القرص الصلب بدل الميموري - DevBlack - 22-02-2016

(21-02-2016, 02:00 PM)B.M.AbdelAziZ كتب : وعليكم السلام ورحمة الله
يمكن انشاء ملف بالقرص واستخدامه لكن ما المشكل ؟ هل تخشى من عدم توفر ذاكر حية كافية!
اوضح حتى يمكن توجيهك

جزاك الله الف خير لك و لوالديك 

انظر الى هذا الكود عندما اقوم بكتابته يقوم بحجز مساحه في الذاكره Memory

 و ان كان الحجم اكبر تظهر رساله Out of memory

كود :
procedure TForm1.btn1Click(Sender: TObject); var  i: Integer;  databyte : PByteArray; begin GetMem(databyte, High(Integer) div 5); for i := 0 to (High(Integer) div 5)-1 do  begin    databyte[i] := i;    Application.ProcessMessages;  end;  btn1.Caption := 'ok'; end;
الصوره في المرفقات جزاك الله خير هل من حل


RE: خزن البينات في القرص الصلب بدل الميموري - محمد عبد العزيز - 22-02-2016

الحل تغيير طريقة تفكيرك/برمجتك
ما الذي تود القيام به ؟ او حسابه ؟



RE: خزن البينات في القرص الصلب بدل الميموري - DevBlack - 22-02-2016

(22-02-2016, 02:24 PM)B.M.AbdelAziZ كتب : الحل تغيير طريقة تفكيرك/برمجتك
ما الذي تود القيام به ؟ او حسابه ؟

خزن بيانات wavedata

لملفات عملاقه من نوع WAV

حجمها اكثر من بحدود 1 GB

هناك تطبيقات دون الحاجه الى memory وتخزن بيانات اكثر من 1 GB مثل تطبيق
Wave Editor

لحظت ان التطبيق لا يخزن البيانات في memory

فما الحل جزاك الله الف خير


RE: خزن البينات في القرص الصلب بدل الميموري - محمد عبد العزيز - 23-02-2016

عليك ان تقسم العمل على اجزاء/قطع بحجم صغير لا يستهلك ذاكرة كثيرة
تاخذ جزء وتعمل عليه ثم تنتقل الى الجزء الموالي.. الى ان تنتهي

بدلا من Wave يمكن ان تستخدم صيغة مضغوطة كMP3 او OGG

يمكن ان تستعين بمكتبات او مكونات جاهزة مثل FFMPEG وغيرها